aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/vasp/source/obj_size.cpp
diff options
context:
space:
mode:
authorThomas Grill <xovo@users.sourceforge.net>2002-12-02 19:21:08 +0000
committerThomas Grill <xovo@users.sourceforge.net>2002-12-02 19:21:08 +0000
commit9815096db22c73cacdbb65512d1b61d633db7fa8 (patch)
tree4a6582ead85b8efd031f68e717fbc8a5b3a3df3f /externals/grill/vasp/source/obj_size.cpp
parent0a109da279e9df66fb5ea7d6bdaeffed16592f02 (diff)
"version 0.1.1"
svn path=/trunk/; revision=267
Diffstat (limited to 'externals/grill/vasp/source/obj_size.cpp')
-rw-r--r--externals/grill/vasp/source/obj_size.cpp248
1 files changed, 248 insertions, 0 deletions
diff --git a/externals/grill/vasp/source/obj_size.cpp b/externals/grill/vasp/source/obj_size.cpp
new file mode 100644
index 00000000..9a535e60
--- /dev/null
+++ b/externals/grill/vasp/source/obj_size.cpp
@@ -0,0 +1,248 @@
+/*
+
+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 "classes.h"
+#include "util.h"
+
+
+/*! \class vasp_size
+ \remark \b vasp.size
+ \brief Resize buffer.
+ \since 0.0.6
+ \param cmdln.1 [_time=0] - size of buffer
+ \param inlet.1 vasp - is stored and output triggered
+ \param inlet.1 bang - triggers output
+ \param inlet.1 set - vasp to be stored
+ \param inlet.2 _time - offset into buffer(s)
+ \retval outlet vasp - modified vasp
+
+ \attention Normally vasp vectors have individual offsets - this operations sets all the buffer sizes to equal values.
+ \todo Implement unit processing.
+*/
+class vasp_size:
+ public vasp_tx
+{
+ FLEXT_HEADER(vasp_size,vasp_tx)
+
+public:
+ vasp_size(I argc,t_atom *argv):
+ size(0),sets(false)
+ {
+ if(argc >= 1 && CanbeFloat(argv[0]))
+ m_arg(GetAFloat(argv[0]));
+ else if(argc)
+ post("%s - Offset argument invalid -> ignored",thisName());
+
+ AddInAnything();
+ AddInFloat();
+ AddOutAnything();
+ SetupInOut();
+
+ FLEXT_ADDMETHOD(1,m_arg);
+ }
+
+ virtual V m_arg(F s)
+ {
+ size = (I)s; // \todo unit processing
+ sets = true;
+ }
+
+ virtual Vasp *x_work()
+ {
+ Vasp *ret = new Vasp(ref);
+ if(sets) ret->Size(size);
+ return ret;
+ }
+
+ virtual V m_help() { post("%s - Set the size of the vector buffers",thisName()); }
+protected:
+ I size;
+ BL sets;
+
+private:
+ FLEXT_CALLBACK_F(m_arg);
+};
+
+FLEXT_LIB_V("vasp, vasp.size vasp.s",vasp_size)
+
+
+
+
+/*! \class vasp_dsize
+ \remark \b vasp.size+
+ \brief Sets vector buffer sizes differentially.
+ \since 0.0.6
+ \param cmdln.1 [_time=0] - increase offset of into buffer(s)
+ \param inlet.1 vasp - is stored and output triggered
+ \param inlet.1 bang - triggers output
+ \param inlet.1 set - vasp to be stored
+ \param inlet.2 _time - increase of offset into buffer(s)
+ \retval outlet vasp - modified vasp
+
+ \todo Implement unit processing
+*/
+class vasp_dsize:
+ public vasp_size
+{
+ FLEXT_HEADER(vasp_dsize,vasp_size)
+
+public:
+ vasp_dsize(I argc,t_atom *argv): vasp_size(argc,argv) {}
+
+ virtual Vasp *x_work()
+ {
+ Vasp *ret = new Vasp(ref);
+ if(sets) ret->SizeD(size);
+ return ret;
+ }
+
+ virtual V m_help() { post("%s - Increase the size of the vector buffers",thisName()); }
+};
+
+FLEXT_LIB_V("vasp, vasp.size+ vasp.s+",vasp_dsize)
+
+
+
+/*! \class vasp_msize
+ \remark \b vasp.size*
+ \brief Sets vector buffer sizes by a factor
+ \since 0.0.6
+ \param cmdln.1 [_number=1] - factor for size
+ \param inlet.1 vasp - is stored and output triggered
+ \param inlet.1 bang - triggers output
+ \param inlet.1 set - vasp to be stored
+ \param inlet.2 _number - factor for size
+ \retval outlet vasp - modified vasp
+*/
+class vasp_msize:
+ public vasp_size
+{
+ FLEXT_HEADER(vasp_msize,vasp_size)
+
+public:
+ vasp_msize(I argc,t_atom *argv):
+ vasp_size(argc,argv)
+ {
+ if(argc && CanbeFloat(argv[0])) m_arg(GetAFloat(argv[0]));
+ }
+
+ virtual Vasp *x_work()
+ {
+ Vasp *ret = new Vasp(ref);
+ if(sets) ret->SizeM(factor);
+ return ret;
+ }
+
+ virtual V m_help() { post("%s - Multiply the size of the vector buffers",thisName()); }
+
+ virtual V m_arg(F f)
+ {
+ factor = f;
+ sets = true;
+ }
+
+protected:
+ R factor;
+};
+
+FLEXT_LIB_V("vasp, vasp.size* vasp.s*",vasp_msize)
+
+
+
+/*! \class vasp_rsize
+ \remark \b vasp.size/
+ \brief Sets vector buffer sizes by a factor
+ \since 0.0.6
+ \param cmdln.1 [_number=1] - divisor for size
+ \param inlet.1 vasp - is stored and output triggered
+ \param inlet.1 bang - triggers output
+ \param inlet.1 set - vasp to be stored
+ \param inlet.2 _number - divisor for size
+ \retval outlet vasp - modified vasp
+*/
+class vasp_rsize:
+ public vasp_msize
+{
+ FLEXT_HEADER(vasp_rsize,vasp_msize)
+
+public:
+ vasp_rsize(I argc,t_atom *argv): vasp_msize(argc,argv) {}
+
+ virtual Vasp *x_work()
+ {
+ Vasp *ret = new Vasp(ref);
+ if(sets) ret->SizeR(factor);
+ return ret;
+ }
+
+ virtual V m_help() { post("%s - Divide the size of the vector buffers",thisName()); }
+};
+
+FLEXT_LIB_V("vasp, vasp.size/ vasp.s/",vasp_rsize)
+
+
+
+/*! \class vasp_qsize
+ \remark \b vasp.size?
+ \brief Get size of a vector buffer.
+ \since 0.0.6
+ \param inlet vasp - is stored and output triggered
+ \param inlet bang - triggers output
+ \param inlet set - vasp to be stored
+ \retval outlet _time - offset into vector buffer
+
+ \note Outputs 0 if vasp is undefined or invalid
+ \note Only works for a vasp with one vector. No output otherwise.
+
+ \todo Implement unit processing
+ \todo Should we provide a cmdln default vasp?
+ \todo Should we inhibit output for invalid vasps?
+*/
+class vasp_qsize:
+ public vasp_op
+{
+ FLEXT_HEADER(vasp_qsize,vasp_op)
+
+public:
+
+ vasp_qsize()
+ {
+ AddInAnything();
+// AddOutAnything();
+ AddOutFloat();
+ SetupInOut();
+ }
+
+ virtual V m_bang()
+ {
+ if(!ref.Ok())
+ post("%s - Invalid vasp!",thisName());
+ else if(ref.Vectors() > 1)
+ post("%s - More than one vector in vasp!",thisName());
+ else {
+ I s = 0;
+ if(ref.Vectors() == 1) {
+ VBuffer *buf = ref.Buffer(0);
+ if(buf) {
+ s = buf->Frames();
+ delete buf;
+ }
+ }
+ //! \todo unit processing
+// ToOutVasp(0,ref);
+ ToOutFloat(0,s);
+ }
+ }
+
+ virtual V m_help() { post("%s - Get the buffer size of a vector",thisName()); }
+};
+
+FLEXT_LIB("vasp, vasp.size? vasp.s?",vasp_qsize)
+