}
struct IFaceInfo;
+ typedef uint32_t ID;
struct IFaceTable {
const IFaceInfo *info;
const ptrdiff_t offset;
};
- struct VStructInfo {
- // List of GUIDs of the struct and its superstructs,
- // starting with System.VStruct and ending with
- // the concrete struct.
-
- const unsigned long *const *const guids;
-
- // Length of inheritance chain; 1 for System.VStruct
-
- const int chainlen;
- };
-
union GUID {
unsigned char c[16];
unsigned long l[];
guid1[3] == guid2[3])));
}
- typedef uint32_t ID;
struct ParamInfoBlock {
uint32_t buffer_size;
uint32_t copy_size;
struct IFaceInfo {
const GUID *guid;
+ void (*invoke)(Array<ID> objlist,
+ ParamInfoBlock::Segment *segs,
+ int nsegs);
+ ::System::_i_Object *(*wrapper)(ID id);
+ };
+
+ struct VStructInfo {
+ // List of GUIDs of the struct and its superstructs,
+ // starting with System.VStruct and ending with
+ // the concrete struct.
+
+ const unsigned long *const *const guids;
+
+ // Length of inheritance chain; 1 for System.VStruct
+
+ const int chainlen;
+
int (*marshall)(GrowableArray<uint8_t> &buf,
GrowableArray<ID> &objlist,
ParamInfoBlock::Segment *segs,