]> git.buserror.net Git - polintos/scott/priv.git/blobdiff - include/c++/orb.h
Some weak symbol usage, and some marshalling stuff.
[polintos/scott/priv.git] / include / c++ / orb.h
index 484c1426473e4a88c67f3e6b57d72cef48886c9f..1f1a3e6f6588586d69caec87fd0976ff6571c783 100644 (file)
@@ -337,8 +337,8 @@ namespace System {
                struct ParamInfoBlock {
                        uint32_t buffer_size;
                        uint32_t copy_size;
-                       ID *objlist;
-                       uint32_t objlist_len;
+                       ID *objlist, *newobj;
+                       uint32_t objlist_len, newobj_len;
                        uint32_t num_segments;
 
                        struct Segment {
@@ -391,6 +391,12 @@ namespace System {
                                       int nsegs);
                        ::System::_i_Object *(*wrapper)(ID id);
                };
+               
+               struct NewObject {
+                       uint32_t guid_hash[5]; // SHA-1 hash of Interface GUIDs
+                       uint32_t id;
+                       uint32_t reserved[3]; // must be zero
+               };
 
                struct VStructInfo {
                        // List of GUIDs of the struct and its superstructs,
@@ -405,10 +411,11 @@ namespace System {
 
                        int (*marshall)(GrowableArray<uint8_t> &buf,
                                        GrowableArray<ID> &objlist,
+                                       GrowableArray<NewObject> &newobjlist,
                                        ParamInfoBlock::Segment *segs,
                                        int nsegs);
                        void (*unmarshall)(Array<uint8_t> buf,
-                                          Array<ID> objlist,
+                                          Array< ::System::_i_Object *> objlist,
                                           ParamInfoBlock::Segment *segs,
                                           int nsegs);
                };