MCPcopy Create free account
hub / github.com/LBANN/lbann / enum_iterator

Class enum_iterator

include/lbann/utils/enum_iterator.hpp:37–58  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

35 enum class */
36template <typename C, C beginVal, C endVal>
37class enum_iterator
38{
39 typedef typename std::underlying_type<C>::type val_t;
40 int val;
41
42public:
43 enum_iterator(const C& f) : val(static_cast<val_t>(f)) {}
44 enum_iterator() : val(static_cast<val_t>(beginVal)) {}
45 enum_iterator operator++()
46 {
47 ++val;
48 return *this;
49 }
50 C operator*() { return static_cast<C>(val); }
51 enum_iterator begin() { return *this; } // default ctor is good
52 enum_iterator end()
53 {
54 static const enum_iterator endIter = ++enum_iterator(endVal); // cache it
55 return endIter;
56 }
57 bool operator!=(const enum_iterator& i) { return val != i.val; }
58};
59
60} // namespace lbann
61#endif // LBANN_ENUM_ITERATOR_H

Callers 1

endMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected