Index: src/slice2cpp/Gen.cpp =================================================================== RCS file: /home/cvsroot/ice/src/slice2cpp/Gen.cpp,v retrieving revision 1.220 diff -c -r1.220 Gen.cpp *** src/slice2cpp/Gen.cpp 15 Jun 2004 06:33:57 -0000 1.220 --- src/slice2cpp/Gen.cpp 25 Jun 2004 17:37:20 -0000 *************** *** 2135,2143 **** { H << sp << nl << "static const ::Ice::ObjectFactoryPtr& ice_factory();"; string name = fixKwd(p->name()); ! string factoryName = "__F__"; ! factoryName += name; C << sp; C << nl << "class " << factoryName << " : public ::Ice::ObjectFactory"; C << sb; --- 2135,2149 ---- { H << sp << nl << "static const ::Ice::ObjectFactoryPtr& ice_factory();"; + string flattenedScope; + + for(string::const_iterator r = scope.begin(); r != scope.end(); ++r) + { + flattenedScope += ((*r) == ':') ? '_' : *r; + } + string name = fixKwd(p->name()); ! string factoryName = "__F" + flattenedScope + name; C << sp; C << nl << "class " << factoryName << " : public ::Ice::ObjectFactory"; C << sb; *************** *** 2155,2162 **** C << eb << ';'; C << sp; ! C << nl << "::Ice::ObjectFactoryPtr " << scoped.substr(2) << "::_factory = new " ! << "__F__" << fixKwd(p->name()) << ';'; C << sp << nl << "const ::Ice::ObjectFactoryPtr&" << nl << scoped.substr(2) << "::ice_factory()"; C << sb; --- 2161,2167 ---- C << eb << ';'; C << sp; ! C << nl << "::Ice::ObjectFactoryPtr " << scoped.substr(2) << "::_factory = new " << factoryName << ';'; C << sp << nl << "const ::Ice::ObjectFactoryPtr&" << nl << scoped.substr(2) << "::ice_factory()"; C << sb; *************** *** 2183,2194 **** C << sp; C << nl << "static " << factoryName << "__Init " << factoryName << "__i;"; C << sp << nl << "#ifdef __APPLE__"; ! std::string initfuncname = "__F"; ! for(std::string::const_iterator q = scope.begin(); q != scope.end(); ++q) ! { ! initfuncname += ((*q) == ':') ? '_' : *q; ! } ! initfuncname += name + "__initializer"; C << nl << "extern \"C\" { void " << initfuncname << "() {} }"; C << nl << "#endif"; --- 2188,2194 ---- C << sp; C << nl << "static " << factoryName << "__Init " << factoryName << "__i;"; C << sp << nl << "#ifdef __APPLE__"; ! std::string initfuncname = "__F" + flattenedScope + name + "__initializer"; C << nl << "extern \"C\" { void " << initfuncname << "() {} }"; C << nl << "#endif";