Update of /cvsroot/pure-data/externals/clr In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3296/clr
Modified Files: clr.cpp makefile Log Message: fixes for mono object passing
Index: makefile =================================================================== RCS file: /cvsroot/pure-data/externals/clr/makefile,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** makefile 12 Jan 2006 11:59:58 -0000 1.2 --- makefile 9 Mar 2006 17:27:37 -0000 1.3 *************** *** 12,31 **** # leave it blank if it is a system directory (like /usr/local/include), # since gcc 3.2 complains about it - PDPATH=/home/Davide
! LINUXCFLAGS = -DPD -O2 -mno-cygwin ! #LINUXCFLAGS = -DPD -O2 -funroll-loops -fomit-frame-pointer \ ! # -Wall -W -Wshadow -Wstrict-prototypes -Werror \ ! # -Wno-unused -Wno-parentheses -Wno-switch
! LINUXINCLUDE = -I../../src -I$PDPATH
! MONOSRC = -IC:/cygwin/tmp/build_deps/include -IC:/cygwin/tmp/build_deps/include/glib-2.0 -IC:/cygwin/tmp/build_deps/lib/glib-2.0/include -IC:/cygwin/home/Davide/mono/include ! MONOLIB = -LC:/cygwin/tmp/build_deps/lib -LC:/cygwin/home/Davide/mono/lib -lmono -lm -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl -liconv
! .c.dll: ! # gcc $(LINUXCFLAGS) $(LINUXINCLUDE) `pkg-config --cflags --libs mono` -lm -ID:/Davide/cygwin/home/Davide/mono/include -LD:/Davide/cygwin/home/Davide/mono/lib $*.c ! gcc $(LINUXCFLAGS) $(LINUXINCLUDE) $(MONOSRC) -o $*.o -c $*.c ! gcc -export_dynamic -shared -mno-cygwin $(MONOLIB) -o $*.dll $*.o -lm pd.dll libmono.dll.a # ld -export_dynamic $(MONOLIB) -o $*.dll $*.o -lm pd.dll # strip --strip-unneeded $*.pd_linux --- 12,31 ---- # leave it blank if it is a system directory (like /usr/local/include), # since gcc 3.2 complains about it
! PDPATH=/cygdrive/c/data/pd/pd-cvs ! MONOPATH=/cygdrive/c/programme/prog/mono ! ! ! CFLAGS = -DPD -O2 -mno-cygwin
! PDINC= -I$(PDPATH)/src ! PDLIB= $(PDPATH)/bin/pd.dll
! MONOINC = -I$(MONOPATH)/include -I$(MONOPATH)/include/glib-2.0 -I$(MONOPATH)/lib/glib-2.0/include ! MONOLIB = -L$(MONOPATH)/lib -lmono.dll -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl -liconv
! .cpp.dll: ! g++ $(CFLAGS) $(PDINC) $(MONOINC) -o $*.o -c $*.cpp ! g++ -export_dynamic -shared -mno-cygwin $(PDLIB) $(MONOLIB) -o $*.dll $*.o -lm # ld -export_dynamic $(MONOLIB) -o $*.dll $*.o -lm pd.dll # strip --strip-unneeded $*.pd_linux
Index: clr.cpp =================================================================== RCS file: /cvsroot/pure-data/externals/clr/clr.cpp,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** clr.cpp 9 Mar 2006 14:34:33 -0000 1.13 --- clr.cpp 9 Mar 2006 17:27:37 -0000 1.14 *************** *** 328,350 **** break; case Delegate::k_float: ! if(argc == 0 || argv[0].a_type != A_FLOAT) { error("%s - %s handler: float argument expected",x->clr_clss->name->s_name,s->s_name); return; } - exc = (*d)(x->mono_obj,argv[0].a_w.w_float); break; case Delegate::k_symbol: ! if(argc == 0 || argv[0].a_type != A_SYMBOL) { error("%s - %s handler: symbol argument expected",x->clr_clss->name->s_name,s->s_name); return; } - exc = (*d)(x->mono_obj,argv[0].a_w.w_symbol); break; case Delegate::k_pointer: ! if(argc == 0 || argv[0].a_type != A_POINTER) { error("%s - %s handler: pointer argument expected",x->clr_clss->name->s_name,s->s_name); return; } - exc = (*d)(x->mono_obj,argv[0].a_w.w_gpointer); break; case Delegate::k_list: --- 328,353 ---- break; case Delegate::k_float: ! if((argc == 1 || (argc >= 1 && s == &s_list)) && argv[0].a_type == A_FLOAT) ! exc = (*d)(x->mono_obj,argv[0].a_w.w_float); ! else { error("%s - %s handler: float argument expected",x->clr_clss->name->s_name,s->s_name); return; } break; case Delegate::k_symbol: ! if((argc == 1 || (argc >= 1 && s == &s_list)) && argv[0].a_type == A_SYMBOL) ! exc = (*d)(x->mono_obj,argv[0].a_w.w_symbol); ! else { error("%s - %s handler: symbol argument expected",x->clr_clss->name->s_name,s->s_name); return; } break; case Delegate::k_pointer: ! if((argc == 1 || (argc >= 1 && s == &s_list)) && argv[0].a_type == A_POINTER) ! exc = (*d)(x->mono_obj,argv[0].a_w.w_gpointer); ! else { error("%s - %s handler: pointer argument expected",x->clr_clss->name->s_name,s->s_name); return; } break; case Delegate::k_list: *************** *** 687,691 **** ClrMap::iterator it = clr_map.find(classname); if(it == clr_map.end()) { ! error("CLR class %s not found",classname->s_name); return NULL; } --- 690,694 ---- ClrMap::iterator it = clr_map.find(classname); if(it == clr_map.end()) { ! error("CLR - class %s not found",classname->s_name); return NULL; } *************** *** 698,702 **** if(!x->mono_obj) { pd_free((t_pd *)x); ! error("CLR class %s could not be instantiated",classname->s_name); return NULL; } --- 701,705 ---- if(!x->mono_obj) { pd_free((t_pd *)x); ! error("CLR - class %s could not be instantiated",classname->s_name); return NULL; } *************** *** 801,806 **** assert(clr_class->obj_field);
! // find static Main method ! MonoMethodDesc *clr_desc_main = mono_method_desc_new("::Setup",FALSE); assert(clr_desc_main); --- 804,808 ---- assert(clr_class->obj_field);
! // find static Setup method MonoMethodDesc *clr_desc_main = mono_method_desc_new("::Setup",FALSE); assert(clr_desc_main); *************** *** 820,824 **** clr_setup_class = clr_class;
! // call static Main method gpointer args = obj; MonoObject *exc; --- 822,826 ---- clr_setup_class = clr_class;
! // call static Setup method gpointer args = obj; MonoObject *exc;