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.







Reply via email to