arrayrange.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #if !defined(INCLUDED_GENERIC_ARRAYRANGE_H)
00023 #define INCLUDED_GENERIC_ARRAYRANGE_H
00024
00027
00028 template<typename Element>
00029 struct ArrayRange {
00030 typedef Element* Iterator;
00031 ArrayRange(Iterator first, Iterator last)
00032 : first(first), last(last) {
00033 }
00034 Iterator first;
00035 Iterator last;
00036 };
00037
00038 template<typename Element>
00039 inline ArrayRange<Element> makeArrayRange(Element* first, Element* last) {
00040 return ArrayRange<Element>(first, last);
00041 }
00042
00043 template<typename Element>
00044 struct ArrayConstRange {
00045 typedef const Element* Iterator;
00046 ArrayConstRange(Iterator first, Iterator last)
00047 : first(first), last(last) {
00048 }
00049 Iterator first;
00050 Iterator last;
00051 };
00052
00053 template<typename Element>
00054 inline ArrayConstRange<Element> makeArrayRange(const Element* first, const Element* last) {
00055 return ArrayConstRange<Element>(first, last);
00056 }
00057
00058 #define ARRAY_SIZE(array) (sizeof(array) / sizeof(*array))
00059 #define ARRAY_END(array) (array + ARRAY_SIZE(array))
00060 #define ARRAY_RANGE(array) (makeArrayRange(array, ARRAY_END(array)))
00061
00062
00063 typedef ArrayConstRange<const char*> StringArrayRange;
00064 #define STRING_ARRAY_RANGE(array) (StringArrayRange(array, ARRAY_END(array)))
00065
00066 typedef ArrayRange<const char> StringRange;
00067
00068 #endif