From 9815096db22c73cacdbb65512d1b61d633db7fa8 Mon Sep 17 00:00:00 2001 From: Thomas Grill Date: Mon, 2 Dec 2002 19:21:08 +0000 Subject: "version 0.1.1" svn path=/trunk/; revision=267 --- externals/grill/vasp/source/opbase.cpp | 94 ++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 externals/grill/vasp/source/opbase.cpp (limited to 'externals/grill/vasp/source/opbase.cpp') diff --git a/externals/grill/vasp/source/opbase.cpp b/externals/grill/vasp/source/opbase.cpp new file mode 100644 index 00000000..2ea9a13c --- /dev/null +++ b/externals/grill/vasp/source/opbase.cpp @@ -0,0 +1,94 @@ +/* + +VASP modular - vector assembling signal processor / objects for Max/MSP and PD + +Copyright (c) 2002 Thomas Grill (xovo@gmx.net) +For information on usage and redistribution, and for a DISCLAIMER OF ALL +WARRANTIES, see the file, "license.txt," in this distribution. + +*/ + +#include "opbase.h" +#include "opdefs.h" + +Vasp *VaspOp::m_run(OpParam &p,Vasp &src,Vasp *dst,VecOp::opfun *fun) +{ + Vasp *ret = NULL; + RVecBlock *vecs = GetRVecs(p.opname,src,dst); + if(vecs) { + ret = DoOp(vecs,fun,p); + delete vecs; + } + + return ret; +} + +Vasp *VaspOp::m_cun(OpParam &p,Vasp &src,Vasp *dst,VecOp::opfun *fun) +{ + Vasp *ret = NULL; + CVecBlock *vecs = GetCVecs(p.opname,src,dst); + if(vecs) { + ret = DoOp(vecs,fun,p); + delete vecs; + } + + return ret; +} + +Vasp *VaspOp::m_rbin(OpParam &p,Vasp &src,const Argument &arg,Vasp *dst,VecOp::opfun *fun) +{ + Vasp *ret = NULL; + BL argvasp = arg.IsVasp(); + + RVecBlock *vecs = argvasp?GetRVecs(p.opname,src,arg.GetVasp(),dst):GetRVecs(p.opname,src,dst); + if(vecs) { + if(arg.CanbeDouble()) p.rbin.arg = arg.GetADouble(); + else if(arg.IsEnv()) { + if(p.args != 1) + ERRINTERNAL(); + else + p.arg[0].SetE(&arg.GetEnv()); + } + + ret = DoOp(vecs,fun,p); + delete vecs; + } + + return ret; +} + +Vasp *VaspOp::m_cbin(OpParam &p,Vasp &src,const Argument &arg,Vasp *dst,VecOp::opfun *fun) +{ + Vasp *ret = NULL; + BL argvasp = arg.IsVasp(); + + CVecBlock *vecs = argvasp?GetCVecs(p.opname,src,arg.GetVasp(),dst):GetCVecs(p.opname,src,dst); + if(vecs) { + if(arg.CanbeComplex()) { + CX z = arg.GetAComplex(); + p.cbin.rarg = z.real; + p.cbin.iarg = z.imag; + } + else if(arg.IsEnv()) { + if(p.args != 1) + ERRINTERNAL(); + else + p.arg[0].SetE(&arg.GetEnv()); + } + + ret = DoOp(vecs,fun,p); + delete vecs; + } + + return ret; +} + + +BL VecOp::_d__run(V fun(S &v,S a),OpParam &p) { _D__run(fun,p); } +BL VecOp::_d__cun(V fun(S &rv,S &iv,S ra,S ia),OpParam &p) { _D__cun(fun,p); } +BL VecOp::_d__rbin(V fun(S &v,S a,S b),OpParam &p) { _D__rbin(fun,p); } +BL VecOp::_d__cbin(V fun(S &rv,S &iv,S ra,S ia,S rb,S ib),OpParam &p) { _D__cbin(fun,p); } +BL VecOp::_d__rop(V fun(S &v,S a,OpParam &p),OpParam &p) { _D__rop(fun,p); } +BL VecOp::_d__cop(V fun(S &rv,S &iv,S ra,S ia,OpParam &p),OpParam &p) { _D__cop(fun,p); } + + -- cgit v1.2.1