X-Git-Url: http://git.buserror.net/cgi-bin/gitweb.cgi?p=polintos%2Fscott%2Fpriv.git;a=blobdiff_plain;f=idlcomp%2Flanguages%2Fc%2B%2B%2Fmarshall.cc;h=6deb115ad7f2842a10c7a6accc6db0356456d7f2;hp=8425ddd3aa312b8b97a02cc9b4d199f8a561fb75;hb=b024710fe2b60cd4a42a8993b61333d6cdb56ca3;hpb=188a395421d2ed7038735d0e3cac37255cf45755 diff --git a/idlcomp/languages/c++/marshall.cc b/idlcomp/languages/c++/marshall.cc index 8425ddd..6deb115 100644 --- a/idlcomp/languages/c++/marshall.cc +++ b/idlcomp/languages/c++/marshall.cc @@ -25,7 +25,7 @@ void CPPFile::output_ifaceinfo(Interface *iface) << indent << " int nsegs);\n\n"; #endif - file << indent << "static const __attribute__((unused))\n" + file << indent << "__attribute__((weak)) __attribute__((unused))\n" << indent << "::System::RunTime::IFaceInfo _info = {\n" << indent << "\t&_guid,\n" << indent << "};\n"; @@ -33,8 +33,24 @@ void CPPFile::output_ifaceinfo(Interface *iface) do_extra_newline = true; } -void CPPFile::output_marshall(Struct *sym) +void CPPFile::output_marshall(Struct *sym, int pass) { - file << indent; - + switch (pass) { + case trav_nsdecl: + extra_newline(); + + file << indent << "int _marshall(::System::RunTime::GrowableArray &buf,\n" + << indent << " ::System::RunTime::GrowableArray< ::System::RunTime::ID> &objlist,\n" + << indent << " ::System::RunTime::GrowableArray< ::System::RunTime::NewObject> &newobjlist,\n" + << indent << " ::System::RunTime::ParamInfoBlock::Segment *segs,\n" + << indent << " int nsegs);\n"; + + file << indent << "void _unmarshall(::System::RunTime::Array buf,\n" + << indent << " ::System::RunTime::Array< ::System::_i_Object *> objlist,\n" + << indent << " ::System::RunTime::ParamInfoBlock::Segment *segs,\n" + << indent << " int nsegs);\n"; + + do_extra_newline = true; + break; + } }