Hi all, I am interested in being able to "mark-up" C++ code with special meta-information. This is kind of like the existing __attribute__ for GCC but the semantics are quite different (I.e. Not just function/type level but statement level meta-data). I wish to ask if anyone knows of anything existing that may be able to achieve what i desire and if nothing exists what others think the difficulty would be of modifying existing __attribute__ semantics or creating something new. Note: This is for a non-mainstream patch and I will not be requesting it be added to mainstream GCC unless people could see a reason to do so.
Basically I would like to mark-up arbitrary segments of C++ code "like": #define EDOC_NOTHROW(Code) __attribute__ ((nothrow)) { Code } #define EDOC_THROW(Code, Types) __attribute__ ((throw(Types))) { Code } for (Type i = begin(); EDOC_NOTHROW( i < end() ); i++) { } or: EDOC_NOTHROW(vec.push_back(blah)); I would probably want meta information for things, like: nothrow, throws (With additional type arguments), and a doc one that can be used for assigning documentation meta-information to a "throw x;" statement. The idea is that a patched GCC (I already have a patched GCC for gathering other exception based data: http://edoc.sourceforge.net/ ) would then be able to query tree nodes for some sort of "attached" meta-data that includes this information. I could then use this with the EDoc++ program in order to allow users to provide indications of code segments that require different types of exception guarantees, which is then enforced at a later time. Any thoughts or ideas are welcome. Thanks, Brendon.