hi there,
(still playing with Go)
I am seeing something rather strange:
say I have these structs:
/** edm **/
typedef struct {
double E;
double T;
} Det;
typedef struct {
Det A; Det B; } Event;
size_t g_sz_det = sizeof(Det);
size_t g_sz_evt = sizeof(Event);
and the corresponding c-tor stub functions:
/* stub functions for Event */
void ctor_Event(void *retaddr, void *mem, void* args, void* ctx)
{
fprintf(stderr, "::ctor-fct[Event] [%p] [%p] [%p] [%p]\n", retaddr, mem, args, ctx);
void* dummy = 0;
if (retaddr) *(void**)retaddr = (Event*)realloc(mem, sizeof(Event));
else dummy = (Event*)realloc(mem, sizeof(Event));
if (dummy) {}
}
/* etc... */
the ctor_Event stub function is attached to the Event Reflex::Type like
so:
Reflex::ClassBuilder cb = ...;
Reflex::Type ty_ctor = Reflex::FunctionTypeBuilder(ty_void);
void *ctx = &g_sz_evt;
cb.AddFunctionMember(ty_ctor, "Event", &ctor_Event, ctx, NULL,
Reflex::PUBLIC|Reflex::CONSTRUCTOR);
so far so good, and when iterating over the function members of the
"Event" type I do see:
:: Evt-size: 32 32
:: Evt-mbrs: 2
:: Evt-type: 117
:: Evt-name: Event
:: Evt-id: 0x11c28d0
:: Evt-fct-mbrs: 3
:: fct-mbr[0][Event] - ctx [0x6033b8] stub-fct[0x401960]
:: fct-mbr[1][IsA] - ctx [0x11c3910] stub-fct[0x7f9892ed2290]
:: fct-mbr[2][ShowMembers] - ctx [0x11c3910] stub-fct[0x7f9892ed1d00]
ie: the correct address for both the context pointer and the stub function (calling resp. Member::Stubcontext() and Member::Stubfunction())
but when the ctor_Event function is invoked: ::ctor-fct[Event] [(nil)] [0x13b3500] [0x11c85d0] [(nil)]
the ctx pointer is always NULL, eventhough FunctionMember::Invoke does pass the fStubCtx to fStubFP:
// parameters need more checking FIXME fStubFP(retaddr, mem, paramList, fStubCtx);
(I'd like to use that context pointer to pass a few extra informations needed for the proper initialization of the Go runtime when instantiating the struct instance...)
am I doing something wrong ?
-s
-- ######################################### # Dr. Sebastien Binet # Laboratoire de l'Accelerateur Lineaire # Universite Paris-Sud XI # Batiment 200 # 91898 Orsay #########################################Received on Tue May 17 2011 - 10:46:40 CEST
- application/pgp-signature attachment: stored
This archive was generated by hypermail 2.2.0 : Tue May 17 2011 - 11:50:01 CEST