From cc47441c1922f219064c174f46b1fe50aa504fd0 Mon Sep 17 00:00:00 2001 From: Cyrille Henry Date: Wed, 5 Nov 2014 23:27:29 +0000 Subject: new test parametter (active for link and mobile for masses) new testLinkNumber, or testMassNumber to get only number of link/masses that pass the test svn path=/trunk/externals/pmpd/; revision=17370 --- pmpd2d_test.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) (limited to 'pmpd2d_test.c') diff --git a/pmpd2d_test.c b/pmpd2d_test.c index 092dd31..74dd844 100644 --- a/pmpd2d_test.c +++ b/pmpd2d_test.c @@ -17,6 +17,11 @@ int test_2d_mass(int i, t_pmpd2d *x, int argc, t_atom *argv) if ( x->mass[i].Id != atom_getsymbolarg(j+1,argc,argv) ) { return(0); } j+=2; } + else if (atom_getsymbolarg(j,argc,argv) == gensym("mobile") ) + { + if ( x->mass[i].mobile != atom_getfloatarg(j+1,argc,argv) ) { return(0); } + j+=2; + } else if (atom_getsymbolarg(j,argc,argv) == gensym("posXSup") ) { if ( x->mass[i].posX < atom_getfloatarg(j+1,argc,argv) ) { return(0); } @@ -210,6 +215,11 @@ int test_2d_link(int i, t_pmpd2d *x, int argc, t_atom *argv) if ( x->link[i].Id != atom_getsymbolarg(j+1,argc,argv) ) { return(0); } j+=2; } + else if (atom_getsymbolarg(j,argc,argv) == gensym("active") ) + { + if ( x->link[i].active != atom_getfloatarg(j+1,argc,argv) ) { return(0); } + j+=2; + } else if (atom_getsymbolarg(j,argc,argv) == gensym("lengthSup") ) { if ( x->link[i].distance < atom_getfloatarg(j+1,argc,argv) ) { return(0); } @@ -503,3 +513,51 @@ void pmpd2d_testMassN(t_pmpd2d *x, t_symbol *s, int argc, t_atom *argv) outlet_anything(x->main_outlet, gensym("testMassN"),3,std_out); } + +void pmpd2d_testLinkNumber(t_pmpd2d *x, t_symbol *s, int argc, t_atom *argv) +{ + t_int i, tmp, nb; + t_atom std_out[2]; + + SETSYMBOL(&(std_out[0]),atom_getsymbolarg(0,argc,argv)); + + nb=0; + for (i=0; i < x->nb_link; i++) + { + tmp=test_2d_link(i,x,argc,argv); + if (tmp == -1) + { + break; + } + else if (tmp) + { + nb++; + } + } + SETFLOAT(&(std_out[1]),nb); + outlet_anything(x->main_outlet, gensym("testLinkNumber"),2,std_out); +} + +void pmpd2d_testMassNumber(t_pmpd2d *x, t_symbol *s, int argc, t_atom *argv) +{ + t_int i, tmp, nb; + t_atom std_out[2]; + + SETSYMBOL(&(std_out[0]),atom_getsymbolarg(0,argc,argv)); + + nb = 0; + for (i=0; i < x->nb_mass; i++) + { + tmp=test_2d_mass(i,x,argc,argv); + if (tmp == -1) + { + break; + } + else if (tmp) + { + nb++; + } + } + SETFLOAT(&(std_out[1]),nb); + outlet_anything(x->main_outlet, gensym("testMassNumber"),2,std_out); +} -- cgit v1.2.1