File tree Expand file tree Collapse file tree 3 files changed +23
-2
lines changed Expand file tree Collapse file tree 3 files changed +23
-2
lines changed Original file line number Diff line number Diff line change @@ -212,4 +212,12 @@ bool EnumType::HasEnumValue(int16_t value) const {
212
212
return type_->enum_ ->value_to_name .find (value) != type_->enum_ ->value_to_name .end ();
213
213
}
214
214
215
+ EnumType::ValueToNameIterator EnumType::BeginValueToName () const {
216
+ return type_->enum_ ->value_to_name .begin ();
217
+ }
218
+
219
+ EnumType::ValueToNameIterator EnumType::EndValueToName () const {
220
+ return type_->enum_ ->value_to_name .end ();
221
+ }
222
+
215
223
}
Original file line number Diff line number Diff line change @@ -98,8 +98,10 @@ class Type {
98
98
};
99
99
100
100
struct EnumImpl {
101
- std::map<int16_t , std::string> value_to_name;
102
- std::map<std::string, int16_t > name_to_value;
101
+ using ValueToNameType = std::map<int16_t , std::string>;
102
+ using NameToValueType = std::map<std::string, int16_t >;
103
+ ValueToNameType value_to_name;
104
+ NameToValueType name_to_value;
103
105
};
104
106
105
107
friend class EnumType ;
@@ -128,6 +130,11 @@ class EnumType {
128
130
bool HasEnumName (const std::string& name) const ;
129
131
bool HasEnumValue (int16_t value) const ;
130
132
133
+ // / Iterator for enum elements.
134
+ using ValueToNameIterator = Type::EnumImpl::ValueToNameType::const_iterator;
135
+ ValueToNameIterator BeginValueToName () const ;
136
+ ValueToNameIterator EndValueToName () const ;
137
+
131
138
private:
132
139
TypeRef type_;
133
140
};
Original file line number Diff line number Diff line change @@ -58,4 +58,10 @@ TEST(TypesCase, EnumTypes) {
58
58
ASSERT_FALSE (enum16.HasEnumName (" Black" ));
59
59
ASSERT_EQ (enum16.GetEnumName (2 ), " Red" );
60
60
ASSERT_EQ (enum16.GetEnumValue (" Green" ), 1 );
61
+
62
+ ASSERT_EQ (std::distance (enum16.BeginValueToName (), enum16.EndValueToName ()), 3u );
63
+ ASSERT_EQ ((*enum16.BeginValueToName ()).first , 1 );
64
+ ASSERT_EQ ((*enum16.BeginValueToName ()).second , " Green" );
65
+ ASSERT_EQ ((*(++enum16.BeginValueToName ())).first , 2 );
66
+ ASSERT_EQ ((*(++enum16.BeginValueToName ())).second , " Red" );
61
67
}
You can’t perform that action at this time.
0 commit comments