[GCC-XML] default argument namespace
Brad King
brad.king at kitware.com
Fri Jul 18 13:08:04 EDT 2008
Gerd v. Egidy wrote:
> Hi,
>
> I'm using gccxml within our libt2n-project (a C++ IPC library,
> http://www.intra2net.com/de/produkte/opensource/libt2n/)
> and it has helped us very much to avoid needing an IDL-file: you just
> mark a function within the source and that is parsed by gccxml to
> gather the information usually found within an IDL.
>
> I'm now adding support for default arguments and I'm unsure
> about the details of the gccxml-output:
>
> when I write
>
> void testb(std::string a=std::string())
> {
> return;
> }
>
> I'll get
>
> <Function id="_8" name="testb" returns="_334" context="_1" mangled="_Z5testbSs"
> demangled="testb(std::string)" location="f0:23" file="f0" line="23" endline="25">
> <Argument name="a" type="_951" location="f0:23" file="f0" line="23" default="string()"/>
> </Function>
>
> So the default argument is returned without namespace.
>
> But in this code:
>
> namespace foo
> {
>
> class bar
> {
> public:
> static const std::string other;
> };
>
> const std::string bar::other="secret";
> }
>
> void testc(std::string a=foo::bar::other)
> {
> return;
> }
>
> <Function id="_7" name="testc" returns="_334" context="_1" mangled="_Z5testcSs"
> demangled="testc(std::string)" location="f0:28" file="f0" line="28" endline="30">
> <Argument name="a" type="_951" location="f0:28" file="f0" line="28" default="foo::bar::other"/>
> </Function>
>
> I get the full namespace of the default argument.
>
> I always need the full namespace of the default argument to be able
> to add it to the headers of my stubs.
>
> Would anyone mind to help me understand the logic behind the
> default attribute and where to get the namespace from in my
> first example?
The default argument string is just an expression->string conversion
done by the internal GCC parser (which is there for production of error
messages from the compiler). It is mostly for human reference, and I
doubt it can be parsed/used reliably for something automated.
True support for default arguments will require support for dumping
expressions, which in turn is part of the missing support for function
bodies. A contributor is working on support for bodies, though:
http://gccxml-bodies.sourceforge.net/
-Brad
More information about the gccxml
mailing list