THRIFT-2639 c_glib: Expose as properties members of generated structs
Patch: Simon South
Signed-off-by: Roger Meier <roger@apache.org>
diff --git a/compiler/cpp/src/parse/t_enum.h b/compiler/cpp/src/parse/t_enum.h
index 45d1606..ec847d1 100644
--- a/compiler/cpp/src/parse/t_enum.h
+++ b/compiler/cpp/src/parse/t_enum.h
@@ -66,6 +66,51 @@
return NULL;
}
+ t_enum_value* get_min_value() {
+ const std::vector<t_enum_value*>& enum_values = get_constants();
+ std::vector<t_enum_value*>::const_iterator c_iter;
+ t_enum_value* min_value;
+ if (enum_values.size() == 0) {
+ min_value = NULL;
+ }
+ else {
+ int min_value_value;
+ min_value = enum_values.front();
+ min_value_value = (min_value->has_value() ? min_value->get_value() : 1);
+ for (c_iter = enum_values.begin(); c_iter != enum_values.end(); ++c_iter) {
+ if ((*c_iter)->has_value() &&
+ ((*c_iter)->get_value() < min_value_value)) {
+ min_value = (*c_iter);
+ min_value_value = min_value->get_value();
+ }
+ }
+ }
+ return min_value;
+ }
+
+ t_enum_value* get_max_value() {
+ const std::vector<t_enum_value*>& enum_values = get_constants();
+ std::vector<t_enum_value*>::const_iterator c_iter;
+ t_enum_value* max_value;
+ if (enum_values.size() == 0) {
+ max_value = NULL;
+ }
+ else {
+ int max_value_value;
+ max_value = enum_values.back();
+ max_value_value =
+ (max_value->has_value() ? max_value->get_value() : enum_values.size());
+ for (c_iter = enum_values.begin(); c_iter != enum_values.end(); ++c_iter) {
+ if ((*c_iter)->has_value() &&
+ ((*c_iter)->get_value() > max_value_value)) {
+ max_value = (*c_iter);
+ max_value_value = max_value->get_value();
+ }
+ }
+ }
+ return max_value;
+ }
+
bool is_enum() const {
return true;
}