From 62530f3fc55d3dc1c12bcd3b88f0922c15cd82e5 Mon Sep 17 00:00:00 2001 From: Thomas Grill Date: Mon, 30 Dec 2002 04:32:19 +0000 Subject: "" svn path=/trunk/; revision=310 --- externals/grill/flext/source/flclass.h | 45 +++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 11 deletions(-) (limited to 'externals/grill/flext/source/flclass.h') 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 }; -- cgit v1.2.1