[EMAIL PROTECTED] wrote: > Hi All, > > Is there any documentation on how parameters are marshalled for internals > calls? Are all strings marshalled as MonoString*? What about other types > such as delegates and structs?
The runtime's source contains hundreds of "samples", because it uses a lot if icalls itself. Don't hesitate to look at them. Icall parameters are not marshaled at all. - Managed objects are represented as MonoObject*. Some distinguished types (strings, delegates) have a MonoFoo* pendant, but these are MonoObjects as well. - Managed structs and primitive types have the same layout as unmanaged structs/primitive types. The only limitation is that structs should never be passed by value, because this is not implemented for all architectures. They must be declared using "ref SomeStruct foo" in managed code and "SomeStruct *foo" in the icall. - Since delegates are objects, they are represented by a MonoObject* as well. It can by casted to a MonoDelegate*, though. > p.s. In the embedding sample the teste.c file should include "#include > <mono/mini/jit.h>" instead of "#include <mono/jit/jit.h>". Nope. You should *not* include these files from inside the Mono sources. Those include files are installed during "make install" into $prefix/include/mono/ and there is no "mini" folder. Robert _______________________________________________ Mono-list maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-list
