acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
base_enum.h
1#pragma once
2
3
4template <class TYPE>
5class base_enum_names :
6 public map_base < TYPE, TYPE, string, string >
7{
8public:
9
10 typedef typename map_base < TYPE, TYPE, string, string >::pair AXIS_ENUM_PAIR;
11
12 base_enum_names(AXIS_ENUM_PAIR pairs[]);
13};
14
15
16template <class TYPE>
17base_enum_names < TYPE > ::base_enum_names(AXIS_ENUM_PAIR pairs[]) :
18map_base < TYPE, TYPE, string, string >(pairs)
19{
20}
21
22template < class TYPE, TYPE edefault = 0 >
23class base_enum
24{
25public:
26
27 base_enum();
28 base_enum(const base_enum < TYPE, edefault> & evalue);
29 base_enum(TYPE evalue);
30 base_enum(::i32 i);
31 virtual ~base_enum();
32
33 TYPE m_evalue;
34
35 void DefaultConstruct();
36
37 const base_enum <TYPE, edefault> & operator = (::i32 i);
38
39 const base_enum <TYPE, edefault> & operator = (TYPE evalue);
40 const base_enum <TYPE, edefault> & operator &= (TYPE evalue);
41 const base_enum <TYPE, edefault> & operator |= (TYPE evalue);
42
43 const base_enum <TYPE, edefault> & operator = (const base_enum < TYPE, edefault> & evalue);
44 const base_enum <TYPE, edefault> & operator &= (const base_enum < TYPE, edefault> & evalue);
45 const base_enum <TYPE, edefault> & operator |= (const base_enum < TYPE, edefault> & evalue);
46
47 bool operator == (const base_enum < TYPE, edefault> & evalue) const;
48 bool operator == (TYPE evalue) const;
49
50 operator TYPE() const;
51
52 //string get_name();
53 //void set_by_name(const ::scoped_string & scopedstr);
54
55};
56
57template <class TYPE, TYPE edefault>
58base_enum<TYPE, edefault>::base_enum()
59{
60 DefaultConstruct();
61}
62
63template <class TYPE, TYPE edefault>
64base_enum<TYPE, edefault>::base_enum(const base_enum < TYPE, edefault> & evalue)
65{
66 operator = (evalue);
67}
68
69template <class TYPE, TYPE edefault>
70base_enum<TYPE, edefault>::base_enum(TYPE evalue)
71{
72 m_evalue = evalue;
73}
74
75template <class TYPE, TYPE edefault>
76base_enum<TYPE, edefault>::base_enum(::i32 i)
77{
78 m_evalue = (TYPE) i;
79}
80
81template <class TYPE, TYPE edefault>
82base_enum<TYPE, edefault>::~base_enum()
83{
84}
85
86template <class TYPE, TYPE edefault>
87void base_enum<TYPE, edefault>::DefaultConstruct()
88{
89 m_evalue = edefault;
90}
91
92template <class TYPE, TYPE edefault>
94{
95 m_evalue = (TYPE) i;
96 return *this;
97}
98
99
100template <class TYPE, TYPE edefault>
102{
103 m_evalue = evalue;
104 return *this;
105}
106
107template <class TYPE, TYPE edefault>
109{
110 m_evalue = (TYPE) (m_evalue & evalue);
111 return *this;
112}
113
114template <class TYPE, TYPE edefault>
116{
117 m_evalue = (TYPE) (m_evalue | evalue);
118 return *this;
119}
120
121template <class TYPE, TYPE edefault>
122const base_enum<TYPE, edefault> & base_enum<TYPE, edefault>::operator = (const base_enum < TYPE, edefault> & evalue)
123{
124 m_evalue = evalue.m_evalue;
125 return *this;
126}
127
128template <class TYPE, TYPE edefault>
129const base_enum<TYPE, edefault> & base_enum<TYPE, edefault>::operator &= (const base_enum < TYPE, edefault> & evalue)
130{
131 m_evalue &= evalue.m_evalue;
132 return *this;
133}
134
135template <class TYPE, TYPE edefault>
136const base_enum<TYPE, edefault> & base_enum<TYPE, edefault>::operator |= (const base_enum < TYPE, edefault> & evalue)
137{
138 m_evalue |= evalue.m_evalue;
139 return *this;
140}
141
142template <class TYPE, TYPE edefault>
143bool base_enum<TYPE, edefault>::operator == (const base_enum < TYPE, edefault> & evalue) const
144{
145 return m_evalue == evalue.m_evalue;
146}
147
148template <class TYPE, TYPE edefault>
149bool base_enum<TYPE, edefault>::operator == (TYPE evalue) const
150{
151 return m_evalue == evalue;
152}
153
154template <class TYPE, TYPE edefault>
156{
157 return m_evalue;
158}
159
160/*template <class TYPE, TYPE edefault>
161string
162base_enum<TYPE, edefault>::get_name()
163{
164 return get_name(m_evalue);
165}
166
167template <class TYPE, TYPE edefault>
168void
169base_enum<TYPE, edefault>::
170set_by_name(const ::scoped_string & scopedstr)
171{
172 m_evalue = from_name(scopedstr, edefault);
173}*/
174
Definition enum_names.h:8
Definition base_enum.h:24