Beispiel #1
0
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);
}
Beispiel #3
0
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;
}
Beispiel #4
0
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;	
}