// 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.
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);
// 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);