
Tony D wrote:
Hi all,
Markus: apologies for not including the full URL. The file is benum_v1.zip at http://www.boostpro.com/vault/
Full URL is hhttp://www.boostpro.com/vault/index.php?action=downloadfile&filename=benum_v1.zip&directory=&PHPSESSID=b088ed5a443221683e910543098c9107 - note Google Chrome mistakes it for a query, but the vault CGI doesn't seem to cope with %3D/%26 encoding of = and &.
Thorsten / Marcus: roughly comparing to smart enum proposal: - BENUM _automates_ conversions based on stringified source code, which (postulating an extra macro "BENUM" hard-coding your favourite selection of meta-data container and optional features) allows BENUM(X, A = 1, B, C = 22, D = B|N); to approximate enum X { A = 1, B, C = 22, D = B|N }; and needs no further code to be streamable etc (preprocessor macros allow run-time cross-referencing of stringified source code with array of actual values)
Neat! However, is it possible to define a separate mapping if one would like? For instance, I like my strings to be lower case, and without prefixes, whereas my enums need a bit more scaffolding: enum Context { CXT_APP, CXT_PHYS, CXT_VIS } enum Aspect { ASP_APP, ASP_PHYS} CXT_APP = "app", CXT_PHYS = "phys", etc. ASP_APP = "app", ASP_PHYS = "phys", etc.
- smart enums requires user-maintained "meta-data" - from the smart enum docs: bool init = (::EnumIO<Foo>::the() (Bar, "bar") (Baz, "baz")), true;
EnumIO only does that, and it hides the usage of EnumIO<> from the header file, thus it is very lean and efficient. How much extra template code is instantiated in each source file including BENUM-use? Cheers, /Marcus