[protobuf] Re: Issue 515 in protobuf: More intelligent enums
Comment #9 on issue 515 by peterhan...@yahoo.com: More intelligent enums https://code.google.com/p/protobuf/issues/detail?id=515 Wrapping enum with another message looks ugly to me, and only simple way for this so far would be adding prefix for it, like enum CURRENCY { UNKNOWN = 0; NONE = 1; USD = 2; // etc... } Don't you mean that a workaround would be to add prefix like this: enum CURRENCY { CURRENCY_UNKNOWN = 0; CURRENCY_NONE = 1; CURRENCY_USD = 2; // etc... } ? -- You received this message because this project is configured to send all issue notifications to this address. You may adjust your notification preferences at: https://code.google.com/hosting/settings -- 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 protobuf+unsubscr...@googlegroups.com. To post to this group, send email to protobuf@googlegroups.com. Visit this group at http://groups.google.com/group/protobuf. For more options, visit https://groups.google.com/d/optout.
Re: [protobuf] Re: Issue 515 in protobuf: More intelligent enums
The option suggested above could actually just append a prefix to the enum names that is an uppercase, underscore delimited name of the type. There should at least be the option to generate the enums that are locally scoped. Right now the only language that doesn't support it is an old version of C++ (C++03). The generated code in other languages is inconsistent with the rest of the code and makes code unreadable because the enum needs to be scoped once with the type and again using the prefix. Thanks Joe -- 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 protobuf+unsubscr...@googlegroups.com. To post to this group, send email to protobuf@googlegroups.com. Visit this group at http://groups.google.com/group/protobuf. For more options, visit https://groups.google.com/groups/opt_out.
[protobuf] Re: Issue 515 in protobuf: More intelligent enums
Comment #7 on issue 515 by peterhan...@yahoo.com: More intelligent enums http://code.google.com/p/protobuf/issues/detail?id=515 The proposed solution doesn't work because: 1. The name of the enum type is changed from Foo to Foo::Enum which will be confusing to the users. The proposal text says the new option is .. well, optional. So if you don't specify it protobuf compiler will (regardless of target language) generate exactly same code as today. How can that be confusing ? .. except for those who explicitly put in the new proposed option in the .proto file .. but then those people have made a conscious choice to use the new proposed feature. 2. For enums nested in a message you simply can't nest a namespace in a class. Not sure I understand. In any case, if you really believe so, we could say in the documentation that the proposed new option has no effect for C++ and make sure that's what is happening. This would still bring great benefits to anyone else (most languages has the notion of namespace for enums) just not to C++ users. There are already options in .proto files that only benefit some languages but not others so going down that route is not something new. It all depends if the design idea of protobuf is to be bound by the lowest common denominator, in this case C++ ? I certainly understand and appreciate the desire to keep protobuf design lean and mean so I would sympathize (somewhat reluctantly :-)) with such a conscious choice. the value of allowing duplicated enum value names is also very limited. It doesn't seem to be a worthwhile effort to me. What? Perhaps we're just different but we run into these issues all the time in particular with enum values such as YES, NO, NONE, UNDEFINED, words that are likely to be used in different enums. Yes, there are ways around it .. but they just make protobuf code harder to read and make your setup more convoluted than what it needs to. And I love protobuf for the exact opposite reasons. Cheers. -- You received this message because this project is configured to send all issue notifications to this address. You may adjust your notification preferences at: https://code.google.com/hosting/settings -- 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 protobuf+unsubscr...@googlegroups.com. To post to this group, send email to protobuf@googlegroups.com. Visit this group at http://groups.google.com/group/protobuf. For more options, visit https://groups.google.com/groups/opt_out.
[protobuf] Re: Issue 515 in protobuf: More intelligent enums
Comment #1 on issue 515 by joew...@live.com: More intelligent enums http://code.google.com/p/protobuf/issues/detail?id=515 I would say the option name is a little language specific, but the idea is good. Maybe call it scoped=true or something similar and add a command-line protoc flag to make it the default. I would also like to see the option to generate C++11 enum classes too, so the namespace feature would just be used for backwards compatibility for older C++ compilers. -- You received this message because this project is configured to send all issue notifications to this address. You may adjust your notification preferences at: https://code.google.com/hosting/settings -- 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 protobuf+unsubscr...@googlegroups.com. To post to this group, send email to protobuf@googlegroups.com. Visit this group at http://groups.google.com/group/protobuf. For more options, visit https://groups.google.com/groups/opt_out.
[protobuf] Re: Issue 515 in protobuf: More intelligent enums
Comment #2 on issue 515 by xiaof...@google.com: More intelligent enums http://code.google.com/p/protobuf/issues/detail?id=515 The proposed solution doesn't work because: 1. The name of the enum type is changed from Foo to Foo::Enum which will be confusing to the users. 2. For enums nested in a message you simply can't nest a namespace in a class. The current scoping semantics is a design choice made a long time ago and the value of allowing duplicated enum value names is also very limited. It doesn't seem to be a worthwhile effort to me. -- You received this message because this project is configured to send all issue notifications to this address. You may adjust your notification preferences at: https://code.google.com/hosting/settings -- 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 protobuf+unsubscr...@googlegroups.com. To post to this group, send email to protobuf@googlegroups.com. Visit this group at http://groups.google.com/group/protobuf. For more options, visit https://groups.google.com/groups/opt_out.
[protobuf] Re: Issue 515 in protobuf: More intelligent enums
Comment #3 on issue 515 by kara...@gmail.com: More intelligent enums http://code.google.com/p/protobuf/issues/detail?id=515 Instead of `namespace Bar { enum ...`, we could use `enum class Bar ...', or perhaps `struct Bar { enum ...`. For myself, I don't care much about duplicated enum value names, but I would certainly like to use scoped enums for style and clarity reasons. I suppose the reasons for adding something like this to protobuf would be similar to the reasons for why `enum class` was recently added to C++. -- You received this message because this project is configured to send all issue notifications to this address. You may adjust your notification preferences at: https://code.google.com/hosting/settings -- 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 protobuf+unsubscr...@googlegroups.com. To post to this group, send email to protobuf@googlegroups.com. Visit this group at http://groups.google.com/group/protobuf. For more options, visit https://groups.google.com/groups/opt_out.
[protobuf] Re: Issue 515 in protobuf: More intelligent enums
Comment #4 on issue 515 by xiaof...@google.com: More intelligent enums http://code.google.com/p/protobuf/issues/detail?id=515 I think the support for C++11 enum class is a good feature to have. We'll need to wait for some time though, as we currently still prohibit C++11 features in protobuf. -- You received this message because this project is configured to send all issue notifications to this address. You may adjust your notification preferences at: https://code.google.com/hosting/settings -- 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 protobuf+unsubscr...@googlegroups.com. To post to this group, send email to protobuf@googlegroups.com. Visit this group at http://groups.google.com/group/protobuf. For more options, visit https://groups.google.com/groups/opt_out.
[protobuf] Re: Issue 515 in protobuf: More intelligent enums
Comment #5 on issue 515 by cbsm...@gmail.com: More intelligent enums http://code.google.com/p/protobuf/issues/detail?id=515 Why not put it in now with a flag or an #ifdef on the C++ version? -- You received this message because this project is configured to send all issue notifications to this address. You may adjust your notification preferences at: https://code.google.com/hosting/settings -- 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 protobuf+unsubscr...@googlegroups.com. To post to this group, send email to protobuf@googlegroups.com. Visit this group at http://groups.google.com/group/protobuf. For more options, visit https://groups.google.com/groups/opt_out.
[protobuf] Re: Issue 515 in protobuf: More intelligent enums
Comment #6 on issue 515 by xiaof...@google.com: More intelligent enums http://code.google.com/p/protobuf/issues/detail?id=515 Disallowing C++11 features is more of a policy issue rather than a technical one. The policy will eventually change but so far I haven't seen any move in that direction. -- You received this message because this project is configured to send all issue notifications to this address. You may adjust your notification preferences at: https://code.google.com/hosting/settings -- 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 protobuf+unsubscr...@googlegroups.com. To post to this group, send email to protobuf@googlegroups.com. Visit this group at http://groups.google.com/group/protobuf. For more options, visit https://groups.google.com/groups/opt_out.