1 #ifndef CASM_InputEnumerator
2 #define CASM_InputEnumerator
10 template<
typename ValueType,
bool IsConst>
13 template<
typename ValueType,
bool IsConst>
17 template<
typename ValueType,
bool IsConst = true>
45 return _enum().step();
56 virtual bool is_end()
const override {
61 std::unique_ptr<InputEnumIteratorBase>
clone()
const {
62 return std::unique_ptr<InputEnumIteratorBase>(this->
_clone());
80 return _enum().current();
102 template<
typename ValueType,
bool IsConst = true>
105 public boost::iterator_facade <
106 InputEnumIterator<ValueType, IsConst>,
108 std::input_iterator_tag,
109 CASM_TMP::ConstSwitch<IsConst, ValueType> &,
128 return m_ptr->step();
132 return m_ptr->source();
136 return m_ptr->name();
142 friend boost::iterator_core_access;
151 return m_ptr->dereference();
221 template<
typename ValueType,
bool IsConst = true>
276 template<
typename ValueType,
bool IsConst = true>
307 return ptr->source(step);
317 return ptr->current();
328 std::unique_ptr<InputEnumeratorBase<ValueType, IsConst> >
ptr;
std::string name() const
Uses enumerator class 'name' implementation.
EnumeratorBase * _enum_ptr()
CASM_TMP::ConstSwitch< IsConst, ValueType > & reference
jsonParser source() const
ValEnumerator< ValueType, IsConst >::reference reference
std::unique_ptr< T > clone(const T &obj, typename std::enable_if< has_clone< T >::value, T >::type *=nullptr)
EnumeratorBase::step_type step_type
Non-std smart pointer classes and functions.
A 'cloneable_ptr' can be used in place of 'unique_ptr'.
EnumeratorBase::step_type step_type