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%2Fc%2B%2B.h;h=ba7e769277b75ae91fe2ae1a4f56ca79df98d4f7;hp=51ea7070c737e8888e19461ce80be338e6b83420;hb=b024710fe2b60cd4a42a8993b61333d6cdb56ca3;hpb=635cfedb4bbe270f114f7a4e5ab58b7d8e054f7d diff --git a/idlcomp/languages/c++/c++.h b/idlcomp/languages/c++/c++.h index 51ea707..ba7e769 100644 --- a/idlcomp/languages/c++/c++.h +++ b/idlcomp/languages/c++/c++.h @@ -54,6 +54,10 @@ class CPPFile : public LangCallback { // The implementation is delayed to avoid circular dependency problems. void output_casts(Interface *sym); + + //// Marshalling methods + + void output_marshall(Struct *sym, int pass); // Output the downcast and implicit upcast methods for // the given interface/superinterface pair. @@ -82,20 +86,18 @@ class CPPFile : public LangCallback { bool prototype, bool retval); void output_one_method_ptr(Method *m, Interface *iface); - static void output_iface_ns(CPPFile *file, NameSpace *sym); - //// Misc members: - // Output the static const guid[] value. + // Output the static const guid[] value, and the IFaceInfo struct. void output_guid(const uint64_t *guid); + void output_ifaceinfo(Interface *iface); // Output a datum in the given struct, along with any necessary // padding. Return the offset of the next datum. int output_datum(Struct *ns, Datum *d, int offset); - static void output_vstruct_ns(CPPFile *file, NameSpace *sym); void output_vstruct_info(Struct *sym); void output_vstruct_main(Struct *sym); void output_struct_ctor(Struct *sym, bool extra_vstruct); @@ -141,8 +143,10 @@ class CPPFile : public LangCallback { // namespace, before any namespace members have been // emitted. - typedef void (*nsdecl_callback)(CPPFile *file, NameSpace *ns); - void output_nsdecl(NameSpace *ns, nsdecl_callback cb = NULL); + void output_nsdecl_begin(NameSpace *ns); + void output_nsdecl_children(NameSpace *ns); + void output_nsdecl_end(NameSpace *ns); + void output_nsdecl(NameSpace *ns); void output_aliases_and_types(NameSpace *ns);