NSVD Reader  0.0.1
Enumeration.hpp
Go to the documentation of this file.
1 
5 /*
6  * These codes are licensed under CC0.
7  * http://creativecommons.org/publicdomain/zero/1.0/
8  */
9 #ifndef __NODAMUSHI_SVD_NORMALIZED_ENUMERATION_HPP__
10 #define __NODAMUSHI_SVD_NORMALIZED_ENUMERATION_HPP__
11 
12 # include <string>
13 
17 
18 namespace nodamushi{
19 namespace svd{
20 namespace normalized{
21 
27 template<typename STRREF>struct Enumeration
28 {
31 
33  std::string name;
39  std::vector<EnumeratedValue> enumeratedValue;
40 
41  Enumeration()=default;
42  Enumeration(Enumeration&&)=default;
43  Enumeration(const Enumeration&)=default;
44 
45  template<typename T>
46  Enumeration(const T& n): // don't change name
47  name(n.name),
51  {
53  if(enumeratedValue){
54  const auto& v = *enumeratedValue;
55  auto& d=this->enumeratedValue;
56  d.reserve(v.size());
57  for(const auto& c:v)
58  d.emplace_back(c);
59  }
60  }
61  //--------------------------------------------------------------
66  bool empty()const noexcept{return enumeratedValue.empty();}
71  size_t size()const noexcept{return enumeratedValue.size();}
76  size_t length()const noexcept{return enumeratedValue.size();}
77  using iterator = typename std::vector<EnumeratedValue>::iterator;
78  using const_iterator = typename std::vector<EnumeratedValue>::const_iterator;
80  iterator begin() noexcept{return enumeratedValue.begin();}
82  iterator end() noexcept{return enumeratedValue.end();}
84  const_iterator begin()const noexcept{return enumeratedValue.begin();}
86  const_iterator end()const noexcept{return enumeratedValue.end();}
87 
88 };
89 //---------- Visitor --------------------
91 {
92  namespace nv = ::nodamushi::visitor;
93  using r = nv::result;
94  r ret;
95  ret = CONTROLLER::apply(t.enumeratedValue,v);
96  if(ret == r::BREAK)return ret;
97  return r::CONTINUE;
98 }};
99 //--------------------------------------------
100 
101 
102 
103 }}} // end namespace svd
104 
105 #endif // __NODAMUSHI_SVD_NORMALIZED_ENUMERATION_HPP__
size_t size() const noexcept
count of <enumeratedValue>
Definition: Enumeration.hpp:71
typename std::vector< EnumeratedValue >::iterator iterator
Definition: Enumeration.hpp:77
helper for copy derivedFrom element
iterator begin() noexcept
enumeratedValue iterator.
Definition: Enumeration.hpp:80
EnumUsage
enumeratedValues.usage element
Definition: EnumUsage.hpp:26
#define __NORMALIZED_DERIVED_FROM(name)
__NORMALIZED_DERIVED_FROM(name)
__NX_NORM_HANDLE_VISIT(Enumeration)
Definition: Enumeration.hpp:90
const_iterator end() const noexcept
enumeratedValue iterator.
Definition: Enumeration.hpp:86
bool empty() const noexcept
<enumeratedValue> is empty
Definition: Enumeration.hpp:66
const_iterator begin() const noexcept
enumeratedValue iterator.
Definition: Enumeration.hpp:84
iterator end() noexcept
enumeratedValue iterator.
Definition: Enumeration.hpp:82
Define <enumeratedValues>.<usage> enum.
result apply(T &t)
Definition: imple.hpp:197
std::vector< EnumeratedValue > enumeratedValue
<enumeratedValue> list
Definition: Enumeration.hpp:39
typename std::vector< EnumeratedValue >::const_iterator const_iterator
Definition: Enumeration.hpp:78
STRREF headerEnumName
<headerEnumName>
Definition: Enumeration.hpp:35
normalized field element
Definition: Field.hpp:32
#define __NORMALIZED_DERIVED_FROM_HELPER(name)
size_t length() const noexcept
count of <enumeratedValue>
Definition: Enumeration.hpp:76
normalized <enumeratedValue> element
normalized <enumeratedValues> element. iterable
Definition: Enumeration.hpp:27