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 {
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,
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);
};