aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/flext/source/flclass.h
diff options
context:
space:
mode:
authorThomas Grill <xovo@users.sourceforge.net>2002-12-30 04:32:19 +0000
committerThomas Grill <xovo@users.sourceforge.net>2002-12-30 04:32:19 +0000
commit62530f3fc55d3dc1c12bcd3b88f0922c15cd82e5 (patch)
treea57fc5a54ed78f189f074724396f81330faf9a3b /externals/grill/flext/source/flclass.h
parent562dcc336797951b2a8707413aa44177484c9f2a (diff)
""
svn path=/trunk/; revision=310
Diffstat (limited to 'externals/grill/flext/source/flclass.h')
-rw-r--r--externals/grill/flext/source/flclass.h45
1 files changed, 34 insertions, 11 deletions
diff --git a/externals/grill/flext/source/flclass.h b/externals/grill/flext/source/flclass.h
index b0376ed3..208a37fd 100644
--- a/externals/grill/flext/source/flclass.h
+++ b/externals/grill/flext/source/flclass.h
@@ -40,7 +40,7 @@ WARRANTIES, see the file, "license.txt," in this distribution.
*/
-class FLEXT_EXT flext_base:
+class FLEXT_SHARE flext_base:
public flext_obj
{
FLEXT_HEADER_S(flext_base,flext_obj,Setup)
@@ -307,7 +307,7 @@ public:
typedef bool (*methfun)(flext_base *c);
- /*! \defgroup FLEXT_C_ADDMETHOD Method handling
+ /*! \defgroup FLEXT_C_ADDMETHOD Method handling (object scope)
\internal
@{
*/
@@ -342,6 +342,16 @@ public:
void AddMethod(int inlet,const char *tag,bool (*m)(flext_base *,float &)) { AddMethod(ThMeths(),inlet,tag,(methfun)m,a_float,a_null); } // method+float
void AddMethod(int inlet,const char *tag,bool (*m)(flext_base *,int &)) { AddMethod(ThMeths(),inlet,tag,(methfun)m,a_int,a_null); } // method+int
+ //! Set Max/MSP style of distributing list elements over (message) inlets
+ void SetDist(bool d = true) { distmsgs = d; }
+
+//! @} FLEXT_C_ADDMETHOD
+
+ /*! \defgroup FLEXT_C_CADDMETHOD Method handling (class scope)
+ \internal
+ @{
+ */
+
static void AddMethod(t_class *c,int inlet,bool (*m)(flext_base *,int,t_atom *)) { AddMethod(ClMeths(c),inlet,"list",(methfun)m,a_list,a_null); }
static void AddMethod(t_class *c,int inlet,bool (*m)(flext_base *,int,const t_atom *)) { AddMethod(ClMeths(c),inlet,"list",(methfun)m,a_list,a_null); }
static void AddMethod(t_class *c,int inlet,const char *tag,bool (*m)(flext_base *)) { AddMethod(ClMeths(c),inlet,tag,(methfun)m,a_null); } // pure method
@@ -370,11 +380,7 @@ public:
static void AddMethod(t_class *c,int inlet,const char *tag,bool (*m)(flext_base *,float &)) { AddMethod(ClMeths(c),inlet,tag,(methfun)m,a_float,a_null); } // method+float
static void AddMethod(t_class *c,int inlet,const char *tag,bool (*m)(flext_base *,int &)) { AddMethod(ClMeths(c),inlet,tag,(methfun)m,a_int,a_null); } // method+int
-
- //! Set Max/MSP style of distributing list elements over (message) inlets
- void SetDist(bool d = true) { distmsgs = d; }
-
-//! @} FLEXT_C_ADDMETHOD
+//! @} FLEXT_C_CADDMETHOD
// --- bind/unbind ---------------------------------------
@@ -461,7 +467,7 @@ protected:
xlet *nxt;
};
- /*! \defgroup FLEXT_C_ATTR Attribute handling methods
+ /*! \defgroup FLEXT_C_ATTR Attribute handling methods (object scope)
@{
*/
@@ -472,6 +478,12 @@ protected:
void AddAttrib(const char *attr,bool (*get)(flext_base *,AtomList *&),bool (*set)(flext_base *,AtomList *&)) { AddAttrib(attr,a_LIST,(methfun)get,(methfun)set); }
void AddAttrib(const char *attr,bool (*get)(flext_base *,AtomAnything *&),bool (*set)(flext_base *,AtomAnything *&)) { AddAttrib(attr,a_ANY,(methfun)get,(methfun)set); }
+//! @} FLEXT_C_ATTR
+
+ /*! \defgroup FLEXT_C_CATTR Attribute handling methods (class scope)
+ @{
+ */
+
static void AddAttrib(t_class *c,const char *attr,bool (*get)(flext_base *,float &),bool (*set)(flext_base *,float &)) { AddAttrib(c,attr,a_float,(methfun)get,(methfun)set); }
static void AddAttrib(t_class *c,const char *attr,bool (*get)(flext_base *,int &),bool (*set)(flext_base *,int &)) { AddAttrib(c,attr,a_int,(methfun)get,(methfun)set); }
static void AddAttrib(t_class *c,const char *attr,bool (*get)(flext_base *,const t_symbol *&),bool (*set)(flext_base *,const t_symbol *&)) { AddAttrib(c,attr,a_symbol,(methfun)get,(methfun)set); }
@@ -479,7 +491,7 @@ protected:
static void AddAttrib(t_class *c,const char *attr,bool (*get)(flext_base *,AtomList *&),bool (*set)(flext_base *,AtomList *&)) { AddAttrib(c,attr,a_LIST,(methfun)get,(methfun)set); }
static void AddAttrib(t_class *c,const char *attr,bool (*get)(flext_base *,AtomAnything *&),bool (*set)(flext_base *,AtomAnything *&)) { AddAttrib(c,attr,a_ANY,(methfun)get,(methfun)set); }
-//! @} FLEXT_C_ATTR
+//! @} FLEXT_C_CATTR
/*! \addtogroup FLEXT_C_INOUT
@{
@@ -570,10 +582,19 @@ protected:
class attritem:
public item {
public:
- attritem(const t_symbol *tag,metharg tp,methfun fun,bool get);
+ attritem(const t_symbol *tag,metharg tp,methfun fun,int flags);
~attritem();
- bool isget;
+ enum {
+ afl_getset = 0x01, afl_get = 0x00, afl_set = 0x01,
+ afl_bothexist = 0x02
+ };
+
+ bool IsGet() const { return (flags&afl_getset) == afl_get; }
+ bool IsSet() const { return (flags&afl_getset) == afl_set; }
+ bool BothExist() const { return (flags&afl_bothexist) != 0; }
+
+ int flags;
metharg argtp;
methfun fun;
};
@@ -719,6 +740,8 @@ private:
static void cb_loadbang(t_class *c);
#if FLEXT_SYS == FLEXT_SYS_MAX
+ char **indesc,**outdesc;
+
static void cb_assist(t_class *c,void *b,long msg,long arg,char *s);
#endif
};