void max_jit_op_jit_matrix(t_max_jit_op *x, t_symbol *s, short argc, t_atom *argv) { if (max_jit_obex_inletnumber_get(x)) { x->last = OP_LAST_MATRIX; } max_jit_mop_jit_matrix(x,s,argc,argv); }
void max_xray_jit_levelsetseg_jit_matrix(t_max_xray_jit_levelsetseg *x, t_symbol *s, short argc, t_atom *argv) { if (max_jit_obex_inletnumber_get(x)) { x->last = LSS_LAST_MATRIX; } max_jit_mop_jit_matrix(x,s,argc,argv); }
t_jit_err jit_gl_lua_call(t_jit_gl_lua *x, t_symbol *s, long argc, t_atom *argv) { t_symbol *function; char args[257]; long i; // get the inlet number if(x->max_wrapper) { x->last_inlet = max_jit_obex_inletnumber_get(x->max_wrapper); } if(argc) { function = jit_atom_getsym(argv); for(i=0; i < MIN(argc-1, 255); i++) { switch(argv[i+1].a_type) /* first atom is func name */ { case A_LONG: args[i] = 'i'; break; case A_FLOAT: args[i] = 'd'; break; case A_SYM: args[i] = 's'; break; } } args[i] = '\0'; lua_call_function_atom(x, function->s_name, args, argc-1, argv+1); } return JIT_ERR_NONE; }
t_jit_err max_jit_str_op_jit_matrix(void *x, t_symbol *s, long argc, t_atom *argv) { void *matrix,*matrixout,*mop,*o,*p,*m; t_atom a; t_symbol *matrixname; long err=JIT_ERR_NONE,inlet,i; method ioproc,mproc; if (!(mop=max_jit_obex_adornment_get(x,_jit_sym_jit_mop))) return JIT_ERR_GENERIC; if (argc&&argv) { //find matrix matrixname = jit_atom_getsym(argv); matrix = jit_object_findregistered(matrixname); if (matrix&&jit_object_method(matrix, _jit_sym_class_jit_matrix)) { if (inlet=max_jit_obex_inletnumber_get(x)) { //right inputs if ((p=jit_object_method(mop,_jit_sym_getinput,inlet+1)) && (m=jit_object_method(p,_jit_sym_getmatrix))) { if (ioproc=(method)jit_object_method(p,_jit_sym_getioproc)) (*ioproc)(mop,p,matrix); else jit_object_method(m,_jit_sym_frommatrix,matrix,NULL); } else { err=JIT_ERR_GENERIC; } } else { //calculate switch (jit_attr_getlong(mop,_jit_sym_outputmode)) { case 0: //nada break; case 2: //input(no calc) //pass input through leftmost output if ((p=jit_object_method(mop,_jit_sym_getoutput,1)) && (o=max_jit_mop_io_getoutlet(p))) { outlet_anything(o,_jit_sym_jit_matrix,1,argv); } break; case 3: //output(no calc) max_jit_mop_outputmatrix(x); break; default: //calc //if adapt, resize // if (jit_attr_getlong(mop,_jit_sym_adapt)) // max_jit_mop_adapt_matrix_all(x,matrix); if ((p=jit_object_method(mop,_jit_sym_getoutput,1))&& (ioproc=(method)jit_object_method(p,_jit_sym_getioproc))) { (*ioproc)(mop,p,matrix); } p = jit_object_method(mop,_jit_sym_getinput,1); jit_object_method(p,_jit_sym_matrix,matrix); jit_attr_setsym(p,_jit_sym_matrixname,matrixname); // if (mproc=(method)max_jit_mop_getmproc(mop)) { max_jit_str_op_mproc(x,mop); /* } else { if (err=(t_jit_err) jit_object_method( max_jit_obex_jitob_get(x), _jit_sym_matrix_calc, jit_object_method(mop,_jit_sym_getinputlist), jit_object_method(mop,_jit_sym_getoutputlist))) { jit_error_code(x,err); } else { max_jit_mop_outputmatrix(x); } }*/ break; } } } else { jit_error_code(x,JIT_ERR_MATRIX_UNKNOWN); } } return err; }