1 /* ///////////////////////////////////////////////////////////////////////
2 * File: iterator_category.h
7 * Brief: Iterator categories
10 * Copyright (c) 2008-2020, Waruqi All rights reserved.
11 * //////////////////////////////////////////////////////////////////// */
13 #ifndef EXTL_ITERATOR_ITERATOR_CATEGORY_H
14 #define EXTL_ITERATOR_ITERATOR_CATEGORY_H
16 /*!\file iterator_category.h
17 * \brief iterator_category class
20 # error iterator_category.h need be supported by c++.
23 /* ///////////////////////////////////////////////////////////////////////
28 /* ///////////////////////////////////////////////////////////////////////
33 /* ///////////////////////////////////////////////////////////////////////
34 * Five kind of iterator categories
36 #if defined(EXTL_NO_STL)
37 /// input_iterator_tag
38 struct std_input_iterator_tag
{};
39 /// output_iterator_tag
40 struct std_output_iterator_tag
{};
41 /// forward_iterator_tag
42 struct std_forward_iterator_tag
43 : public std_input_iterator_tag
{};
44 /// bidirectional_iterator_tag
45 struct std_bidirectional_iterator_tag
46 : public std_forward_iterator_tag
{};
47 /// random_access_iterator_tag
48 struct std_random_access_iterator_tag
49 : public std_bidirectional_iterator_tag
{};
51 /// input_iterator_tag
52 typedef EXTL_NS_STD(input_iterator_tag
) std_input_iterator_tag
;
53 /// output_iterator_tag
54 typedef EXTL_NS_STD(output_iterator_tag
) std_output_iterator_tag
;
55 /// forward_iterator_tag
56 typedef EXTL_NS_STD(forward_iterator_tag
) std_forward_iterator_tag
;
57 /// bidirectional_iterator_tag
58 typedef EXTL_NS_STD(bidirectional_iterator_tag
) std_bidirectional_iterator_tag
;
59 /// random_access_iterator_tag
60 typedef EXTL_NS_STD(random_access_iterator_tag
) std_random_access_iterator_tag
;
63 /* ///////////////////////////////////////////////////////////////////////
68 /* //////////////////////////////////////////////////////////////////// */
69 #endif /* EXTL_ITERATOR_ITERATOR_CATEGORY_H */
70 /* //////////////////////////////////////////////////////////////////// */