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=2391b37980b9e1476e15b6a94e008d918fff415c;hb=b024710fe2b60cd4a42a8993b61333d6cdb56ca3;hpb=5adc890ffae4f90536e72bc32ef83e1141689520 diff --git a/idlcomp/languages/c++/marshall.cc b/idlcomp/languages/c++/marshall.cc index 2391b37..6deb115 100644 --- a/idlcomp/languages/c++/marshall.cc +++ b/idlcomp/languages/c++/marshall.cc @@ -18,10 +18,39 @@ void CPPFile::output_ifaceinfo(Interface *iface) { extra_newline(); - file << indent << "static const __attribute__((unused))\n" +#if 0 + file << indent << "void _invoke(::System::RunTime::Array" + << "< ::System::RunTime::ID> objlist,\n" + << indent << " ::System::RunTime::ParamInfoBlock::Segment *segs,\n" + << indent << " int nsegs);\n\n"; +#endif + + file << indent << "__attribute__((weak)) __attribute__((unused))\n" << indent << "::System::RunTime::IFaceInfo _info = {\n" << indent << "\t&_guid,\n" << indent << "};\n"; do_extra_newline = true; } + +void CPPFile::output_marshall(Struct *sym, int pass) +{ + 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; + } +}