diff options
author | Thomas Grill <xovo@users.sourceforge.net> | 2006-03-10 01:01:20 +0000 |
---|---|---|
committer | Thomas Grill <xovo@users.sourceforge.net> | 2006-03-10 01:01:20 +0000 |
commit | 4e7353f45954a8a5d9aaa3dd40eed3f9f62c2062 (patch) | |
tree | 97f1276c5c2dd6cee63abd44cf619912ef558cbd /clr.cpp | |
parent | 2a3de2593da93042ce4ea2725909a92967962b79 (diff) |
small cleanups
svn path=/trunk/externals/clr/; revision=4676
Diffstat (limited to 'clr.cpp')
-rwxr-xr-x | clr.cpp | 18 |
1 files changed, 12 insertions, 6 deletions
@@ -29,20 +29,24 @@ extern "C" { #include <vector> #include <list> + +// main class library #define CORELIB "PureData" #define DLLEXT "dll" +// symbol for inter-object messages +#define SYM_OBJECT "clr-object" -// cached mono data +static t_symbol *sym_object; + +// cached mono data static MonoDomain *monodomain; static MonoClass *clr_symbol,*clr_pointer,*clr_atom,*clr_atomlist,*clr_external; static MonoMethodDesc *clr_desc_tostring,*clr_desc_ctor; static MonoMethod *clr_meth_invoke; static MonoProperty *clr_prop_method; -static t_symbol *sym_object; - struct AtomList { @@ -55,9 +59,9 @@ struct AtomList // transforms a pointer (like MonoObject *) into a 3 element-list struct ObjectAtom { - enum { size = 3,bitshift = 22 }; - // 64-bit safe... + enum { bitshift = 22,size = sizeof(void*)*8/bitshift+1 }; + t_atom msg[size]; ObjectAtom() {} @@ -119,7 +123,9 @@ struct Delegate inline void init(MonoObject *method,Kind k) { methodinfo = mono_property_get_value(clr_prop_method,method,NULL,NULL); + assert(methodinfo); virtmethod = mono_object_get_virtual_method(methodinfo,clr_meth_invoke); + assert(virtmethod); kind = k; } @@ -1021,7 +1027,7 @@ void clr_setup(void) class_addanything(proxy_class,clr_method_proxy); // symbol for Mono object handling - sym_object = gensym("clr-object"); + sym_object = gensym(SYM_OBJECT); // install loader hook sys_register_loader(classloader); |