[PD-cvs] externals/clr clr.cpp,1.9,1.10
Thomas Grill
xovo at users.sourceforge.net
Wed Mar 8 18:37:27 CET 2006
Update of /cvsroot/pure-data/externals/clr
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18908/clr
Modified Files:
clr.cpp
Log Message:
some small additions, like ability to set pd class type
Index: clr.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/clr/clr.cpp,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** clr.cpp 8 Mar 2006 16:48:28 -0000 1.9
--- clr.cpp 8 Mar 2006 17:37:25 -0000 1.10
***************
*** 382,385 ****
--- 382,386 ----
assert(obj);
assert(obj->outlets);
+ assert(n >= 0 && n < obj->outlets->size());
outlet_bang((*obj->outlets)[n]);
}
***************
*** 389,392 ****
--- 390,394 ----
assert(obj);
assert(obj->outlets);
+ assert(n >= 0 && n < obj->outlets->size());
outlet_float((*obj->outlets)[n],f);
}
***************
*** 396,399 ****
--- 398,402 ----
assert(obj);
assert(obj->outlets);
+ assert(n >= 0 && n < obj->outlets->size());
outlet_symbol((*obj->outlets)[n],s);
}
***************
*** 403,406 ****
--- 406,410 ----
assert(obj);
assert(obj->outlets);
+ assert(n >= 0 && n < obj->outlets->size());
outlet_pointer((*obj->outlets)[n],p);
}
***************
*** 410,413 ****
--- 414,418 ----
assert(obj);
assert(obj->outlets);
+ assert(n >= 0 && n < obj->outlets->size());
t_outlet *out = (*obj->outlets)[n];
switch(l.a_type) {
***************
*** 424,427 ****
--- 429,433 ----
assert(obj);
assert(obj->outlets);
+ assert(n >= 0 && n < obj->outlets->size());
outlet_anything((*obj->outlets)[n],s,l.argc,l.argv);
}
***************
*** 431,434 ****
--- 437,441 ----
assert(obj);
assert(obj->outlets);
+ assert(n >= 0 && n < obj->outlets->size());
// assert(mono_object_get_class(&l->obj) == clr_atom);
outlet_anything((*obj->outlets)[n],s,mono_array_length(l),mono_array_addr(l,t_atom,0));
***************
*** 556,560 ****
// make new class (with classname)
classsym = gensym(classname);
! clr_class->pd_class = class_new(classsym,(t_newmethod)clr_new,(t_method)clr_free, sizeof(t_clr), CLASS_DEFAULT, A_GIMME, 0);
clr_class->obj_field = mono_class_get_field_from_name(clr_class->mono_class,"ptr");
--- 563,568 ----
// make new class (with classname)
classsym = gensym(classname);
! clr_class->pd_class = NULL;
! int flags = CLASS_DEFAULT;
clr_class->obj_field = mono_class_get_field_from_name(clr_class->mono_class,"ptr");
***************
*** 583,587 ****
gpointer args = obj;
MonoObject *exc;
! mono_runtime_invoke(method,NULL,&args,&exc);
// unset current class
--- 591,599 ----
gpointer args = obj;
MonoObject *exc;
! MonoObject *ret = mono_runtime_invoke(method,NULL,&args,&exc);
! if(ret) {
! // \TODO check return type
! flags = *(int *)mono_object_unbox(ret);
! }
// unset current class
***************
*** 599,602 ****
--- 611,617 ----
clr_class->mono_ctor = mono_method_desc_search_in_class(clr_desc_ctor,clr_class->mono_class);
+ // make pd class
+ clr_class->pd_class = class_new(classsym,(t_newmethod)clr_new,(t_method)clr_free, sizeof(t_clr), flags, A_GIMME, A_NULL);
+
// find && register methods
if(clr_class->method_bang)
More information about the Pd-cvs
mailing list