X-Git-Url: http://developer.intra2net.com/git/?p=libt2n;a=blobdiff_plain;f=codegen%2Fmain.cpp;h=f276e98561b43c6bd8ade4940304fe0fb4668e79;hp=cd483b637d410180bea78aea801687355538d82a;hb=38de59c2572658f738030390f2280f86a19f000b;hpb=fe41e3c5d9c602adb0cbb8f996deb7a5e3eab57a diff --git a/codegen/main.cpp b/codegen/main.cpp index cd483b6..f276e98 100644 --- a/codegen/main.cpp +++ b/codegen/main.cpp @@ -102,8 +102,9 @@ std::string get_namespace(const xmlpp::Element* root, const std::string &id) { std::string error; const xmlpp::Element* element(get_element_by_id(root, id)); - if ((!element)||(!element->get_attribute("name"))) return error; - return element->get_attribute("name")->get_value(); + // [RP:20071024]: use "demangled" attribute instead of "name" to cover nested namespaces: + if ((!element)||(!element->get_attribute("demangled"))) return error; + return element->get_attribute("demangled")->get_value(); } //! procedure marked for export? @@ -486,19 +487,25 @@ void output_server_cpp(std::ostream &o, const std::string &group, const std::lis for (std::list::const_iterator it=procs.begin();it!=procs.end();++it) { o << *it << ";\n"; o << "libt2n::result* " << it->cmd_classname() << "::operator()() { "; - if (it->hasReturn()) { - o << "return new " << it->ret_classname() << "(" << it->name << "("; - for (t2n_procedure::Args::const_iterator ait=it->args.begin();ait!=it->args.end();++ait) { - if (ait!=it->args.begin()) o << ", "; - // get pointer - if (ait->second.name.find_first_of('*')!=std::string::npos) - o << '&'; - o << ait->first; - } - o << "));"; - }else{ - o << it->name << "(); return new " << it->ret_classname() << "();"; + + if (it->hasReturn()) + o << "return new " << it->ret_classname() << "("; + + // output function name and args + o << it->name << "("; + for (t2n_procedure::Args::const_iterator ait=it->args.begin();ait!=it->args.end();++ait) { + if (ait!=it->args.begin()) o << ", "; + // get pointer + if (ait->second.name.find_first_of('*')!=std::string::npos) + o << '&'; + o << ait->first; } + + if (it->hasReturn()) + o << "));"; + else + o << "); return new " << it->ret_classname() << "();"; + o << " }\n"; } o << "#include \"" << common_cpp << "\"\n";