remove \r
[extl.git] / extl / iterator / iterator_category.h
blob45f716d8cd7b69e788225b00af68df280ef2d179
1 /* ///////////////////////////////////////////////////////////////////////
2 * File: iterator_category.h
4 * Created: 08.04.07
5 * Updated: 08.04.15
7 * Brief: Iterator categories
9 * [<Home>]
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
19 #ifndef __cplusplus
20 # error iterator_category.h need be supported by c++.
21 #endif
23 /* ///////////////////////////////////////////////////////////////////////
24 * Includes
26 #include "prefix.h"
28 /* ///////////////////////////////////////////////////////////////////////
29 * ::extl namespace
31 EXTL_BEGIN_NAMESPACE
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 {};
50 #else
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;
61 #endif
63 /* ///////////////////////////////////////////////////////////////////////
64 * ::extl namespace
66 EXTL_END_NAMESPACE
68 /* //////////////////////////////////////////////////////////////////// */
69 #endif /* EXTL_ITERATOR_ITERATOR_CATEGORY_H */
70 /* //////////////////////////////////////////////////////////////////// */