Hi,
i'm currently required to use in some reflection style visitor pattern to
extract the C++ type from the generated Proto Type.
For example a Proto file like this implementing some sort of general
[Name,Value] structure:
message Int32 {
extend Value {
optional int32 value = 103;
}
required Int32 _v = 1;
}
message Float {
extend Value {
optional float value = 105;
}
required Float _v = 1;
}
message Double {
extend Value {
optional double value = 106;
}
required Double _v = 1;
}
message Bool {
extend Value {
optional bool value = 107;
}
required Bool _v = 1;
}
message KeyValue {
required string key = 1;
required Value value = 2;
}
I futher need to access the corsiponding type ... currently this would look
like this:
::google::protobuf::internal::ExtensionIdentifier<
::Value,::google::protobuf::internal::PrimitiveTypeTraits<
::google::protobuf::int32 >, 5, false > getTypeExt(int32 i) {
return Int32::value;
};
This is very error-prone and quirky... I would be so much simple if
Protocol Buffers would generate the type like this:
// nested types ----------------------------------------------------
// accessors -------------------------------------------------------
// required .Int32 _v = 1;
inline bool has__v() const;
inline void clear__v();
static const int kVFieldNumber = 1;
inline const ::Int32& _v() const;
inline ::Int32* mutable__v();
inline ::Int32* release__v();
inline void set_allocated__v(::Int32* _v);
static const int kValueFieldNumber = 103;
typedef ::google::protobuf::internal::ExtensionIdentifier< ::Value,
::google::protobuf::internal::PrimitiveTypeTraits<
::google::protobuf::int32 >, 5, false > value_t;
static value_t value;
Is this somehow possible?
Thank you very much!
--
You received this message because you are subscribed to the Google Groups
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/protobuf?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.