Commit 7003b2dc authored by thomas's avatar thomas
Browse files

no message


git-svn-id: https://svn.grrrr.org/ext/trunk@318 4d9ac71a-51e6-0310-8455-cad1006bcd31
parent e8f9850f
......@@ -212,6 +212,10 @@ SOURCE=.\source\flstdc.h
# End Source File
# Begin Source File
SOURCE=.\source\flsupport.cpp
# End Source File
# Begin Source File
SOURCE=.\source\flsupport.h
# End Source File
# Begin Source File
......
......@@ -20,6 +20,7 @@ Package files:
- flclass.h,flext.cpp: actual base classes for message (flext_base) and dsp (flext_dsp) processing
- fldsp.h,fldsp.cpp: code for signal externals
- flthr.h,flthr.cpp: code for threaded methods
- flsupport.h: various flext support functions and classes
- flatom.cpp: code for functions dealing with lists of atoms
- flutil.cpp: additional utility functions
- flxlet.cpp: code for variable inlet/outlet stuff
......@@ -66,6 +67,7 @@ pros:
- any input to any inlet (with the exception of signal streams)
- transparent use of threads for methods
- libraries of externals in MaxMSP
- more than 3 typed creation arguments possible for MaxMSP
cons:
- introduces a small overhead to speed of message handling
......@@ -80,6 +82,7 @@ Version history:
0.4.0:
- introduced a flext namespace instead of using numerous static class functions (better isolation of functions, easier usage of flext functions outside inherited flext classes)
- completely redesigned class and object setup -> all argument checking is now handled by flext
- added OSX/darwin support (originally done by Adam T. Lindsay)
- SndObj interface now also available for cygwin and BCC
- added prepend and append functions to AtomList class
......
......@@ -14,23 +14,23 @@ WARRANTIES, see the file, "license.txt," in this distribution.
#include "flext.h"
namespace flext {
//namespace flext {
AtomList::AtomList(int argc,const t_atom *argv):
flext::AtomList::AtomList(int argc,const t_atom *argv):
lst(NULL),cnt(0)
{
operator()(argc,argv);
}
AtomList::AtomList(const AtomList &a):
flext::AtomList::AtomList(const AtomList &a):
lst(NULL),cnt(0)
{
operator =(a);
}
AtomList::~AtomList() { Clear(); }
flext::AtomList::~AtomList() { Clear(); }
AtomList &AtomList::operator()(int argc,const t_atom *argv)
flext::AtomList &flext::AtomList::operator()(int argc,const t_atom *argv)
{
if(lst && cnt != argc) { delete[] lst; lst = NULL; cnt = 0; }
......@@ -72,7 +72,7 @@ AtomList &AtomList::operator()(int argc,const t_atom *argv)
}
AtomList &AtomList::Append(const t_atom &a)
flext::AtomList &flext::AtomList::Append(const t_atom &a)
{
t_atom *nlst = new t_atom[cnt+1];
for(int i = 0; i < cnt; ++i) SetAtom(nlst[i],lst[i]);
......@@ -85,7 +85,7 @@ AtomList &AtomList::Append(const t_atom &a)
return *this;
}
AtomList &AtomList::Append(int argc,const t_atom *argv)
flext::AtomList &flext::AtomList::Append(int argc,const t_atom *argv)
{
t_atom *nlst = new t_atom[cnt+argc];
int i;
......@@ -99,7 +99,7 @@ AtomList &AtomList::Append(int argc,const t_atom *argv)
return *this;
}
AtomList &AtomList::Prepend(const t_atom &a)
flext::AtomList &flext::AtomList::Prepend(const t_atom &a)
{
t_atom *nlst = new t_atom[cnt+1];
for(int i = 0; i < cnt; ++i) SetAtom(nlst[i+1],lst[i]);
......@@ -112,7 +112,7 @@ AtomList &AtomList::Prepend(const t_atom &a)
return *this;
}
AtomList &AtomList::Prepend(int argc,const t_atom *argv)
flext::AtomList &flext::AtomList::Prepend(int argc,const t_atom *argv)
{
t_atom *nlst = new t_atom[cnt+argc];
int i;
......@@ -126,7 +126,7 @@ AtomList &AtomList::Prepend(int argc,const t_atom *argv)
return *this;
}
AtomList AtomList::GetPart(int offs,int len) const
flext::AtomList flext::AtomList::GetPart(int offs,int len) const
{
if(offs+len > Count()) {
len = Count()-offs;
......@@ -136,4 +136,4 @@ AtomList AtomList::GetPart(int offs,int len) const
return AtomList(len,Atoms()+offs);
}
} // namespace flext
//} // namespace flext
......@@ -16,6 +16,7 @@ WARRANTIES, see the file, "license.txt," in this distribution.
#include "flbase.h"
#include "flinternal.h"
#include <string.h>
/////////////////////////////////////////////////////////
//
......@@ -33,7 +34,7 @@ const char *flext_obj::m_holdname;
/////////////////////////////////////////////////////////
flext_obj :: flext_obj()
: x_obj(m_holder)
, m_name(flext::strdup(m_holdname))
, m_name(flext_util::strdup(m_holdname))
, init_ok(true)
{
#ifdef PD
......@@ -54,6 +55,22 @@ flext_obj :: ~flext_obj()
}
void flext_obj::DefineHelp(t_class *c,const char *ref,const char *dir,bool addtilde)
{
#ifdef PD
char tmp[256];
if(dir) {
strcpy(tmp,dir);
strcat(tmp,"/");
strcat(tmp,ref);
if(addtilde) strcat(tmp,"~");
}
else
strcpy(tmp,ref);
::class_sethelpsymbol(c,gensym(const_cast<char *>(tmp)));
#else
#endif
}
/////////////////////////////////////////////////////////
......
......@@ -18,6 +18,7 @@ WARRANTIES, see the file, "license.txt," in this distribution.
#define __FLEXT_BASE_H
#include "flstdc.h"
#include "flsupport.h"
#ifdef FLEXT_THREADS
#include <pthread.h>
......@@ -84,7 +85,8 @@ struct FLEXT_EXT flext_hdr
*/
// ----------------------------------------------------------------------------
class FLEXT_EXT flext_obj
class FLEXT_EXT flext_obj:
public flext
{
public:
......@@ -126,6 +128,19 @@ class FLEXT_EXT flext_obj
void InitProblem() { init_ok = false; }
// --- help -------------------------------------------------------
/*! \defgroup FLEXT_C_HELP Flext help/assistance functionality
@{
*/
static void DefineHelp(t_class *c,const char *ref,const char *dir = NULL,bool addtilde = false);
void DefineHelp(const char *ref,const char *dir = NULL,bool addtilde = false) { DefineHelp(thisClass(),ref,dir,addtilde); }
//! @}
protected:
//! The object header
......@@ -169,7 +184,8 @@ class FLEXT_EXT flext_obj
static t_class *lib_class;
static t_symbol *lib_name;
static void libfun_add(const char *name,t_newmethod newfun,void (*freefun)(flext_hdr *),int argtp1,...);
static void libfun_add(bool lib,bool dsp,t_class *&clss,const char *name,void setupfun(t_class *),t_newmethod newfun,void (*freefun)(flext_hdr *),int argtp1,...);
// static void libfun_add(const char *name,t_newmethod newfun,void (*freefun)(flext_hdr *),int argtp1,...);
static flext_hdr *libfun_new(t_symbol *s,int argc,t_atom *argv);
static void libfun_free(flext_hdr *o);
//@}
......@@ -180,7 +196,7 @@ class FLEXT_EXT flext_obj
//@{
//! Some utility functions for class setup
namespace flext {
namespace flext_util {
const char *extract(const char *name,int ix = 0);
char *strdup(const char *name);
bool chktilde(const char *name);
......@@ -227,11 +243,15 @@ static inline NEW_CLASS *thisObject(void *c) { return FLEXT_CAST<NEW_CLASS *>(((
#define FLEXT_STPF(NAME,OTP) FLEXT_STPF_(OTP)(NAME)
#define REAL_NEW(NAME,NEW_CLASS,DSP) REAL_INST(0,NAME,NEW_CLASS,DSP)
#define REAL_NEW_V(NAME,NEW_CLASS,DSP) REAL_INST_V(0,NAME,NEW_CLASS,DSP)
#define REAL_NEW_1(NAME,NEW_CLASS,DSP,TYPE1) REAL_INST_1(0,NAME,NEW_CLASS,DSP,TYPE1)
#define REAL_NEW_2(NAME,NEW_CLASS,DSP,TYPE1,TYPE2) REAL_INST_2(0,NAME,NEW_CLASS,DSP,TYPE1,TYPE2)
#define REAL_NEW_3(NAME,NEW_CLASS,DSP,TYPE1,TYPE2,TYPE3) REAL_INST_3(0,NAME,NEW_CLASS,DSP,TYPE1,TYPE2,TYPE3)
#define REAL_NEW(NAME,NEW_CLASS,DSP,LIB) REAL_INST(LIB,NAME,NEW_CLASS,DSP)
#define REAL_NEW_V(NAME,NEW_CLASS,DSP,LIB) REAL_INST_V(LIB,NAME,NEW_CLASS,DSP)
#define REAL_NEW_1(NAME,NEW_CLASS,DSP,LIB,TYPE1) REAL_INST_1(LIB,NAME,NEW_CLASS,DSP,TYPE1)
#define REAL_NEW_2(NAME,NEW_CLASS,DSP,LIB,TYPE1,TYPE2) REAL_INST_2(LIB,NAME,NEW_CLASS,DSP,TYPE1,TYPE2)
#define REAL_NEW_3(NAME,NEW_CLASS,DSP,LIB,TYPE1,TYPE2,TYPE3) REAL_INST_3(LIB,NAME,NEW_CLASS,DSP,TYPE1,TYPE2,TYPE3)
#define REAL_NEW_4(NAME,NEW_CLASS,DSP,LIB,TYPE1,TYPE2,TYPE3,TYPE4) REAL_INST_4(LIB,NAME,NEW_CLASS,DSP,TYPE1,TYPE2,TYPE3,TYPE4)
/* // 0.4.0
#ifdef PD
#define REAL_EXT(NEW_CLASS,DSP)
......@@ -249,6 +269,14 @@ static inline NEW_CLASS *thisObject(void *c) { return FLEXT_CAST<NEW_CLASS *>(((
#define REAL_LIB_3(NAME,NEW_CLASS,DSP,TYPE1,TYPE2,TYPE3) REAL_NEWLIB_3(NAME,NEW_CLASS,DSP,TYPE1,TYPE2,TYPE3)
#endif
*/
#ifdef PD
#define REAL_EXT(NEW_CLASS,DSP)
#else // MAXMSP
#define REAL_EXT(NEW_CLASS,DSP) extern "C" FLEXT_EXT int main() { FLEXT_STPF(NEW_CLASS,DSP)(); return 0; }
#endif
// --------------------------------------------------------------------------------------
......@@ -258,7 +286,7 @@ static inline NEW_CLASS *thisObject(void *c) { return FLEXT_CAST<NEW_CLASS *>(((
// ---------------------------------------------------
#define FLEXT_EXP_0 extern "C" FLEXT_EXT
#define FLEXT_EXP_1
#define FLEXT_EXP_1
#define FLEXT_EXP(LIB) FLEXT_EXP_##LIB
#define FLEXT_SETUP(cl) \
......@@ -318,6 +346,8 @@ return 0; \
#define CALLBTP(TP) CALLBTYPE_ ## TP
#if 0 // 0.4.0
#ifdef PD
#define FLEXT_NEWFN ::class_new
#define FLEXT_CLREF(NAME,CLASS) gensym(const_cast<char *>(NAME))
......@@ -349,6 +379,8 @@ return 0; \
#endif
#endif // 0.4.0
#define ARGMEMBER_int i //*
#define ARGMEMBER_float f
#define ARGMEMBER_t_symptr s
......@@ -359,6 +391,8 @@ return 0; \
//#define EXTPROTO_1
//#define EXTPROTO(LIB) EXTPROTO_ ## LIB
#if 0 // 0.4.0
#ifdef _DEBUG
#define CHECK_TILDE(OBJNAME,DSP) if(DSP) flext::chktilde(OBJNAME)
#else
......@@ -393,6 +427,8 @@ return 0; \
#define FLEXT_CLOPTS(NEW_CLASS,OTP) NULL
#endif
#endif // 0.4.0
// ----------------------------------------------------
// These should never be called or used directly!!!
//
......@@ -400,6 +436,8 @@ return 0; \
// ----------------------------------------------------
#if 0
// ----------------------------------------------------
// no args
// ----------------------------------------------------
......@@ -559,8 +597,8 @@ void FLEXT_STPF(NEW_CLASS,DSP)() \
{ \
CHECK_TILDE(NAME,DSP); \
NEW_CLASS::__class__ = flext_obj::lib_class; \
flext_obj::libfun_add(NAME,(t_method)(class_ ## NEW_CLASS),&NEW_CLASS::callb_free,FLEXTTP(TYPE1),A_NULL); \
NEW_CLASS::callb_setup(flext_obj::lib_class); \
flext_obj::libfun_add(NAME,(t_newmethod)(class_ ## NEW_CLASS),&NEW_CLASS::callb_free,FLEXTTP(TYPE1),A_NULL); \
NEW_CLASS::callb_setup(NEW_CLASS::__class__); \
}
......@@ -727,6 +765,83 @@ void FLEXT_STPF(NEW_CLASS,DSP)() \
NEW_CLASS::callb_setup(flext_obj::lib_class); \
}
#else
#define REAL_INST(LIB,NAME,NEW_CLASS, DSP) \
t_class * NEW_CLASS::__class__ = NULL; \
static flext_obj *class_ ## NEW_CLASS () \
{ \
return new NEW_CLASS; \
} \
FLEXT_EXP(LIB) void FLEXT_STPF(NEW_CLASS,DSP)() \
{ \
flext_obj::libfun_add(LIB,DSP,NEW_CLASS::__class__,NAME,NEW_CLASS::callb_setup,(t_newmethod)(class_ ## NEW_CLASS),&NEW_CLASS::callb_free,A_NULL); \
}
#define REAL_INST_V(LIB,NAME,NEW_CLASS, DSP) \
t_class * NEW_CLASS::__class__ = NULL; \
static flext_obj *class_ ## NEW_CLASS (int argc,t_atom *argv) \
{ \
return new NEW_CLASS(argc,argv); \
} \
FLEXT_EXP(LIB) void FLEXT_STPF(NEW_CLASS,DSP)() \
{ \
flext_obj::libfun_add(LIB,DSP,NEW_CLASS::__class__,NAME,NEW_CLASS::callb_setup,(t_newmethod)(class_ ## NEW_CLASS),&NEW_CLASS::callb_free,A_GIMME,A_NULL); \
}
#define REAL_INST_1(LIB,NAME,NEW_CLASS, DSP, TYPE1) \
t_class * NEW_CLASS::__class__ = NULL; \
static flext_obj *class_ ## NEW_CLASS (const flext_obj::lib_arg &arg1) \
{ \
return new NEW_CLASS(ARGCAST(arg1,TYPE1)); \
} \
FLEXT_EXP(LIB) void FLEXT_STPF(NEW_CLASS,DSP)() \
{ \
flext_obj::libfun_add(LIB,DSP,NEW_CLASS::__class__,NAME,NEW_CLASS::callb_setup,(t_newmethod)(class_ ## NEW_CLASS),&NEW_CLASS::callb_free,FLEXTTP(TYPE1),A_NULL); \
}
#define REAL_INST_2(LIB,NAME,NEW_CLASS, DSP, TYPE1,TYPE2) \
t_class * NEW_CLASS::__class__ = NULL; \
static flext_obj *class_ ## NEW_CLASS (const flext_obj::lib_arg &arg1,const flext_obj::lib_arg &arg2) \
{ \
return new NEW_CLASS(ARGCAST(arg1,TYPE1),ARGCAST(arg2,TYPE2)); \
} \
FLEXT_EXP(LIB) void FLEXT_STPF(NEW_CLASS,DSP)() \
{ \
flext_obj::libfun_add(LIB,DSP,NEW_CLASS::__class__,NAME,NEW_CLASS::callb_setup,(t_newmethod)(class_ ## NEW_CLASS),&NEW_CLASS::callb_free,FLEXTTP(TYPE1),FLEXTTP(TYPE2),A_NULL); \
}
#define REAL_INST_3(LIB,NAME,NEW_CLASS, DSP, TYPE1, TYPE2, TYPE3) \
t_class * NEW_CLASS::__class__ = NULL; \
static flext_obj *class_ ## NEW_CLASS (const flext_obj::lib_arg &arg1,const flext_obj::lib_arg &arg2,const flext_obj::lib_arg &arg3) \
{ \
return new NEW_CLASS(ARGCAST(arg1,TYPE1),ARGCAST(arg2,TYPE2),ARGCAST(arg3,TYPE3)); \
} \
FLEXT_EXP(LIB) void FLEXT_STPF(NEW_CLASS,DSP)() \
{ \
flext_obj::libfun_add(LIB,DSP,NEW_CLASS::__class__,NAME,NEW_CLASS::callb_setup,(t_newmethod)(class_ ## NEW_CLASS),&NEW_CLASS::callb_free,FLEXTTP(TYPE1),FLEXTTP(TYPE2),FLEXTTP(TYPE3),A_NULL); \
}
#define REAL_INST_4(LIB,NAME,NEW_CLASS, DSP, TYPE1,TYPE2, TYPE3, TYPE4) \
t_class * NEW_CLASS::__class__ = NULL; \
static flext_obj *class_ ## NEW_CLASS (const flext_obj::lib_arg &arg1) \
{ \
return new NEW_CLASS(ARGCAST(arg1,TYPE1),ARGCAST(arg2,TYPE2),ARGCAST(arg3,TYPE3),ARGCAST(arg4,TYPE4)); \
} \
FLEXT_EXP(LIB) void FLEXT_STPF(NEW_CLASS,DSP)() \
{ \
flext_obj::libfun_add(LIB,DSP,NEW_CLASS::__class__,NAME,NEW_CLASS::callb_setup,(t_newmethod)(class_ ## NEW_CLASS),&NEW_CLASS::callb_free,FLEXTTP(TYPE1),FLEXTTP(TYPE2),FLEXTTP(TYPE3),FLEXTTP(TYPE4),A_NULL); \
}
/*
#define REAL_NEWLIB(NAME,NEW_CLASS, DSP) REAL_INST(1,NAME,NEW_CLASS, DSP)
#define REAL_NEWLIB_V(NAME,NEW_CLASS, DSP) REAL_INST_V(1,NAME,NEW_CLASS, DSP)
#define REAL_NEWLIB_1(NAME,NEW_CLASS, DSP,TYPE1) REAL_INST_1(1,NAME,NEW_CLASS, DSP,TYPE1)
#define REAL_NEWLIB_2(NAME,NEW_CLASS, DSP,TYPE1,TYPE2) REAL_INST_2(1,NAME,NEW_CLASS, DSP,TYPE1,TYPE2)
#define REAL_NEWLIB_3(NAME,NEW_CLASS, DSP,TYPE1,TYPE2,TYPE3) REAL_INST_3(1,NAME,NEW_CLASS, DSP,TYPE1,TYPE2,TYPE3)
#define REAL_NEWLIB_4(NAME,NEW_CLASS, DSP,TYPE1,TYPE2,TYPE3,TYPE4) REAL_INST_4(1,NAME,NEW_CLASS, DSP,TYPE1,TYPE2,TYPE3,TYPE4)
*/
#endif
// Shortcuts for method arguments:
......
......@@ -22,9 +22,9 @@ WARRANTIES, see the file, "license.txt," in this distribution.
#define DIRTY_INTERVAL 0 // buffer dirty check in msec
#endif
namespace flext {
buffer::buffer(const t_symbol *bn,bool delayed):
flext::buffer::buffer(const t_symbol *bn,bool delayed):
sym(NULL),data(NULL),
chns(0),frames(0)
{
......@@ -39,14 +39,14 @@ buffer::buffer(const t_symbol *bn,bool delayed):
if(bn) Set(bn,delayed);
}
buffer::~buffer()
flext::buffer::~buffer()
{
#ifdef PD
clock_free(tick);
#endif
}
int buffer::Set(const t_symbol *s,bool nameonly)
int flext::buffer::Set(const t_symbol *s,bool nameonly)
{
int ret = 0;
bool valid = data != NULL; // valid now? (before change)
......@@ -115,7 +115,7 @@ int buffer::Set(const t_symbol *s,bool nameonly)
return ret;
}
bool buffer::Update()
bool flext::buffer::Update()
{
if(!Ok()) return false;
......@@ -152,7 +152,7 @@ bool buffer::Update()
#endif
}
void buffer::Frames(int fr,bool keep)
void flext::buffer::Frames(int fr,bool keep)
{
#ifdef PD
::garray_resize(arr,(float)fr);
......@@ -192,7 +192,7 @@ void buffer::Frames(int fr,bool keep)
#ifdef PD
void buffer::SetRefrIntv(float intv)
void flext::buffer::SetRefrIntv(float intv)
{
interval = intv;
if(interval == 0 && ticking) {
......@@ -201,11 +201,11 @@ void buffer::SetRefrIntv(float intv)
}
}
#else
void buffer::SetRefrIntv(float) {}
void flext::buffer::SetRefrIntv(float) {}
#endif
void buffer::Dirty(bool force)
void flext::buffer::Dirty(bool force)
{
if(sym) {
#ifdef PD
......@@ -236,7 +236,7 @@ void buffer::Dirty(bool force)
}
#ifdef PD
void buffer::cb_tick(buffer *b)
void flext::buffer::cb_tick(buffer *b)
{
if(b->arr) garray_redraw(b->arr);
#ifdef _DEBUG
......@@ -253,5 +253,3 @@ void buffer::cb_tick(buffer *b)
}
#endif
} // namespace flext
......@@ -31,8 +31,6 @@ WARRANTIES, see the file, "license.txt," in this distribution.
#endif
namespace flext {
// === flext_base ==================================================
//class qmsg;
......@@ -42,7 +40,7 @@ namespace flext {
*/
class CBase: //flext_base:
class flext_base:
public flext_obj
{
FLEXT_HEADER_S(flext_base,flext_obj,Setup)
......@@ -93,18 +91,6 @@ public:
//! @}
// --- help -------------------------------------------------------
/*! \defgroup FLEXT_C_HELP Flext help/assistance functionality
@{
*/
void DefineHelp(const char *ref,const char *dir = NULL);
//! @}
// --- inlet/outlet stuff -----------------------------------------
/*! \defgroup FLEXT_C_INOUT Flext in-/outlet functions
......@@ -353,11 +339,8 @@ public:
protected:
// flext_base();
// virtual ~flext_base();
CBase();
virtual ~CBase();
flext_base();
virtual ~flext_base();
// inlets and outlets
......@@ -503,6 +486,4 @@ private:
#endif
};
} // namespace flext
#endif
......@@ -16,9 +16,6 @@ WARRANTIES, see the file, "license.txt," in this distribution.
#ifndef __FLEXT_DEFS_H
#define __FLEXT_DEFS_H
#define flext_base flext::CBase
#define flext_dsp flext::CDsp
#ifdef FLEXT_GUI
#define FLEXT_CAST dynamic_cast
#else
......@@ -64,23 +61,19 @@ FLEXT_REALHDR_S(NEW_CLASS, PARENT_CLASS, SETUPFUN)
/*! \defgroup FLEXT_NEW Flext class instantiation
Makes an actual instance of a class.
\note Max/MSP is not able to handle more than 3 creation arguments -> use variable argument lists
*/
/*! \defgroup FLEXT_NEW_DSP Flext dsp class instantiation
Makes an actual instance of a dsp (aka "tilde") class (with signal processing).
\note Max/MSP is not able to handle more than 3 creation arguments -> use variable argument lists
*/
/*! \defgroup FLEXT_LIB Flext library class instantiation
Makes an actual instance of a class which is part of an object library (and not stand-alone).
\note Max/MSP is not able to handle more than 3 creation arguments -> use variable argument lists
*/
/*! \defgroup FLEXT_LIB_DSP Flext dsp library class instantiation
Makes an actual instance of a dsp (aka "tilde") class with signal processing
which is part of an object library (and not stand-alone).
\note Max/MSP is not able to handle more than 3 creation arguments -> use variable argument lists
*/
......@@ -93,21 +86,21 @@ FLEXT_REALHDR_S(NEW_CLASS, PARENT_CLASS, SETUPFUN)
\param NEW_CLASS the object's C++ class name
*/
#define FLEXT_NEW(NAME,NEW_CLASS) \
REAL_NEW(NAME,NEW_CLASS,0) \
REAL_NEW(NAME,NEW_CLASS,0,0) \
REAL_EXT(NEW_CLASS,0)
/*! Implementation of a flext dsp class with no arguments
\ingroup FLEXT_NEW_DSP
*/
#define FLEXT_NEW_DSP(NAME,NEW_CLASS) \
REAL_NEW(NAME,NEW_CLASS,1) \
REAL_NEW(NAME,NEW_CLASS,1,0) \
REAL_EXT(NEW_CLASS,1)
/*! Implementation of a flext GUI class with no arguments
\ingroup FLEXT_NEW_GUI
*/
#define FLEXT_NEW_GUI(NAME,NEW_CLASS) \
REAL_NEW(NAME,NEW_CLASS,2) \
REAL_NEW(NAME,NEW_CLASS,2,0) \
REAL_EXT(NEW_CLASS, 2)
/*! Implementation of a flext class (part of a library) with no arguments
......@@ -115,14 +108,14 @@ REAL_EXT(NEW_CLASS, 2)
*/
#define FLEXT_LIB(NAME,NEW_CLASS) \
\
REAL_LIB(NAME,NEW_CLASS,0)
REAL_NEW(NAME,NEW_CLASS,0,1)
/*! Implementation of a flext dsp class (part of a library) with no arguments
\ingroup FLEXT_LIB_DSP
*/
#define FLEXT_LIB_DSP(NAME,NEW_CLASS) \
\
REAL_LIB(NAME,NEW_CLASS,1)
REAL_NEW(NAME,NEW_CLASS,1,1)
// VARIABLE ARGUMENT LIST
......@@ -132,21 +125,21 @@ REAL_LIB(NAME,NEW_CLASS,1)
\ingroup FLEXT_NEW
*/
#define FLEXT_NEW_V(NAME,NEW_CLASS) \
REAL_NEW_V(NAME,NEW_CLASS,0) \
REAL_NEW_V(NAME,NEW_CLASS,0,0) \
REAL_EXT(NEW_CLASS,0)
/*! Implementation of a flext tilde class with a variable argument list
\ingroup FLEXT_NEW_DSP
*/
#define FLEXT_NEW_DSP_V(NAME,NEW_CLASS) \
REAL_NEW_V(NAME,NEW_CLASS,1) \
REAL_NEW_V(NAME,NEW_CLASS,1,0) \
REAL_EXT(NEW_CLASS, 1)
/*! Implementation of a flext GUI class with a variable argument list
\ingroup FLEXT_NEW_GUI
*/
#define FLEXT_NEW_GUI_V(NAME,NEW_CLASS) \
REAL_NEW_V(NAME,NEW_CLASS,2) \
REAL_NEW_V(NAME,NEW_CLASS,2,0) \
REAL_EXT(NEW_CLASS, 2)
/*! Implementation of a flext class (part of a library) with a variable argument list
......@@ -154,14 +147,14 @@ REAL_EXT(NEW_CLASS, 2)
*/
#define FLEXT_LIB_V(NAME,NEW_CLASS) \
\
REAL_LIB_V(NAME,NEW_CLASS, 0)
REAL_NEW_V(NAME,NEW_CLASS, 0,1)
/*! Implementation of a flext tilde class (part of a library) with a variable argument list
\ingroup FLEXT_LIB_DSP
*/
#define FLEXT_LIB_DSP_V(NAME,NEW_CLASS) \
\
REAL_LIB_V(NAME,NEW_CLASS, 1)
REAL_NEW_V(NAME,NEW_CLASS, 1,1)
// ONE ARGUMENT
......@@ -171,14 +164,14 @@ REAL_LIB_V(NAME,NEW_CLASS, 1)
\ingroup FLEXT_NEW
*/
#define FLEXT_NEW_1(NAME,NEW_CLASS, TYPE) \