]> git.buserror.net Git - polintos/scott/priv.git/blobdiff - idlcomp/languages/c++/c++.h
Some weak symbol usage, and some marshalling stuff.
[polintos/scott/priv.git] / idlcomp / languages / c++ / c++.h
index 4717233185de8d6987ff4ce384261831980b5ce9..ba7e769277b75ae91fe2ae1a4f56ca79df98d4f7 100644 (file)
@@ -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.
@@ -78,24 +82,22 @@ class CPPFile : public LangCallback {
        void output_methods(Interface *iface, Interface *super, bool prototype);
        void output_method_defs(Interface *iface);
 
-       void CPPFile::output_one_method(Interface *iface, Method *m, 
-                                       bool prototype, bool retval);
-       void CPPFile::output_one_method_ptr(Method *m, Interface *iface);
+       void output_one_method(Interface *iface, Method *m,
+                              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);