*** Gen.cpp 2011-10-14 18:18:50.000000000 +0400 --- /home/zmij/cppworkspace/slice2as/src/Gen.cpp 2011-11-29 10:40:07.366763639 +0400 *************** *** 8,14 **** // ********************************************************************** #include ! #include #include #include #include --- 8,14 ---- // ********************************************************************** #include ! #include "Gen.h" #include #include #include *************** *** 2048,2054 **** if(!p->isInterface() || p->isLocal()) { ! OperationList ops = p->operations(); for(OperationList::const_iterator r = ops.begin(); r != ops.end(); ++r) { --- 2048,2054 ---- if(!p->isInterface() || p->isLocal()) { ! OperationList ops = p->allOperations(); for(OperationList::const_iterator r = ops.begin(); r != ops.end(); ++r) { *************** *** 2082,2087 **** --- 2082,2103 ---- { tracker.add("Ice.AsyncResult"); } + + ContainerPtr container = op->container(); + ClassDefPtr cl = ClassDefPtr::dynamicCast(container); + assert(cl); + if(cl->scoped() != p->scoped()) + { + string base; + if(cl->isInterface()) + { + tracker.add(getAbsolute(cl, "_", "Disp")); + } + else + { + tracker.add(getAbsolute(cl)); + } + } } tracker.add(allDataMembers); *************** *** 4320,4326 **** out << sp << "package " << package; out << sb; ! OperationList ops = p->operations(); OperationList::const_iterator r; // --- 4336,4342 ---- out << sp << "package " << package; out << sb; ! OperationList ops = p->allOperations(); OperationList::const_iterator r; // *************** *** 4383,4388 **** --- 4399,4420 ---- { tracker.add(getAbsolute(*eli)); } + + ContainerPtr container = op->container(); + ClassDefPtr cl = ClassDefPtr::dynamicCast(container); + assert(cl); + if(cl->scoped() != p->scoped()) + { + string base; + if(cl->isInterface()) + { + tracker.add(getAbsolute(cl, "_", "Disp")); + } + else + { + tracker.add(getAbsolute(cl)); + } + } } tracker.write(out);