#include <fstream>
#include <list>
#include <stdexcept>
+#include <string>
#include <boost/lexical_cast.hpp>
#ifdef HAVE_CONFIG_H
#include "config.h"
assert(arg->get_attribute("type"));
a.type=get_type(root, arg->get_attribute("type")->get_value());
- if(arg->get_attribute("default"))
- a.defaultArg=arg->get_attribute("default")->get_value();
+ // this would be the nice way of solving the problem of default arguments
+ // but currently the output of gccxml is unreliable (e.g. namespace only
+ // sometimes available)
+ // if(arg->get_attribute("default"))
+ // a.defaultArg=arg->get_attribute("default")->get_value();
+
+ // so we need to get the def. arg. via attribute
+ // which is previously set by the macro LIBT2N_DEFAULT_ARG(type,value)
+ if(arg->get_attribute("attributes"))
+ {
+ std::string attr=arg->get_attribute("attributes")->get_value();
+ const std::string look_for = "gccxml(libt2n-default-arg,";
+
+ if (attr.compare(0,look_for.size(),look_for) == 0)
+ a.defaultArg=attr.substr(look_for.size(),attr.size()-look_for.size()-1);
+ }
// todo: ugly - could be any other error
if (a.type.name.empty())