[PD-cvs] externals/clr PureData.dll, NONE, 1.1 clr.c, 1.8, 1.9 test-clr.pd, 1.6, 1.7

dmorelli morellid at users.sourceforge.net
Mon Jan 16 17:27:00 CET 2006


Update of /cvsroot/pure-data/externals/clr
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2201

Modified Files:
	clr.c test-clr.pd 
Added Files:
	PureData.dll 
Log Message:
now selectors take delegates instead of function names, lists without selectors ok, added the PureData.dll assembly to let people compile externals without having to compile the pd project

--- NEW FILE: PureData.dll ---
(This appears to be a binary file; contents omitted.)

Index: test-clr.pd
===================================================================
RCS file: /cvsroot/pure-data/externals/clr/test-clr.pd,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** test-clr.pd	16 Jan 2006 13:02:33 -0000	1.6
--- test-clr.pd	16 Jan 2006 16:26:58 -0000	1.7
***************
*** 1,3 ****
! #N canvas 73 31 756 564 12;
  #X obj 49 51 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
  -1;
--- 1,3 ----
! #N canvas 73 31 760 568 12;
  #X obj 49 51 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
  -1;
***************
*** 14,19 ****
  -1 -1 0 1;
  #X text 224 242 mapped to selFloat;
! #X msg 99 216 selGenericList 12 a 0.5 b;
! #X text 98 194 complex list;
  #X obj 82 297 print;
  #X text 43 329 arguments: Class name \, Filename;
--- 14,19 ----
  -1 -1 0 1;
  #X text 224 242 mapped to selFloat;
! #X msg 94 210 selGenericList 12 a 0.5 b;
! #X text 93 188 complex list;
  #X obj 82 297 print;
  #X text 43 329 arguments: Class name \, Filename;
***************
*** 35,38 ****
--- 35,39 ----
  ;
  #X text 37 477 NB: a class corresponding constructor must exist;
+ #X msg 309 210 1 2 3 a b c;
  #X connect 0 0 16 0;
  #X connect 1 0 16 0;
***************
*** 50,51 ****
--- 51,53 ----
  #X connect 24 0 15 1;
  #X connect 26 0 15 0;
+ #X connect 29 0 16 0;

Index: clr.c
===================================================================
RCS file: /cvsroot/pure-data/externals/clr/clr.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** clr.c	16 Jan 2006 12:44:44 -0000	1.8
--- clr.c	16 Jan 2006 16:26:58 -0000	1.9
***************
*** 356,361 ****
  
  	int i;
- 	// first i extract the first atom which should be a symbol
- post("clr_manage_list, got symbol = %s", sl->s_name);
  	if (x->loaded == 0)
  	{
--- 356,359 ----
***************
*** 363,366 ****
--- 361,418 ----
  		return;
  	}
+ 
+ 	// check if a selector is present !
+ 	//printf("clr_manage_list, got symbol = %s\n", sl->s_name);
+ 	if (strcmp("list", sl->s_name) == 0)
+ 	{
+ 		printf("lista senza selector");
+ 		if (x->manageList)
+ 		{
+ 			gpointer args [1];
+ 			MonoString *stringtmp;
+ 			double *floattmp;
+ 			t_atomtype_simple *typetmp;
+ 			t_symbol *strsymbol;
+ 			MonoArray *atoms;
+ 			atom_simple *atom_array;
+ 			int j;		
+ 			char strfloat[256], strnull[256];
+ 			sprintf(strfloat, "float");
+ 			sprintf(strnull, "null");
+ 			atom_array = malloc(sizeof(atom_simple)*argc);
+ 			MonoClass *c = mono_class_from_name (x->imagePureData, "PureData", "Atom");
+ 			atoms = mono_array_new (x->domain, c, argc);
+ 			for (j=0; j<argc; j++)
+ 			{
+ 				switch ((argv+j)->a_type)
+ 				{
+ 				case A_FLOAT:
+ 					atom_array[j].a_type =  A_S_FLOAT;
+ 					atom_array[j].float_value = (double) atom_getfloat(argv+j);
+ 					atom_array[j].string_value = mono_string_new (x->domain, strfloat);
+ 					break;
+ 				case A_SYMBOL:
+ 					atom_array[j].a_type =  A_S_SYMBOL;
+ 					strsymbol = atom_getsymbol(argv+j);
+ 					atom_array[j].string_value = mono_string_new (x->domain, strsymbol->s_name);
+ 					atom_array[j].float_value = 0;
+ 					break;
+ 				default:
+ 					atom_array[j].a_type =  A_S_NULL;
+ 					atom_array[j].float_value = 0;
+ 					atom_array[j].string_value = mono_string_new (x->domain, strnull);
+ 				}
+ 				mono_array_set (atoms, atom_simple , j, atom_array[j]);
+ 			}
+ 
+ 			args[0] = atoms;
+ 			mono_runtime_invoke (x->manageList, x->obj, args, NULL);
+ 			return;
+ 		} else
+ 		{
+ 			error("you did not specified a function to call for lists without selectors");
+ 			return;
+ 		}
+ 	}
  	for (i=0; i<MAX_SELECTORS; i++)
  	{





More information about the Pd-cvs mailing list