From cdf86b37d6180f5f88393c02d8f5e19e2e645ad6 Mon Sep 17 00:00:00 2001 From: Thomas Grill Date: Fri, 3 Jan 2003 04:35:22 +0000 Subject: "" svn path=/trunk/; revision=317 --- externals/grill/flext/source/flbase.h | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) (limited to 'externals/grill/flext/source/flbase.h') diff --git a/externals/grill/flext/source/flbase.h b/externals/grill/flext/source/flbase.h index e89dd032..78e4818c 100644 --- a/externals/grill/flext/source/flbase.h +++ b/externals/grill/flext/source/flbase.h @@ -145,12 +145,27 @@ class FLEXT_SHARE flext_obj: //! Get the class name (as a symbol) const t_symbol *thisNameSym() const { return m_name; } + #if FLEXT_SYS == FLEXT_SYS_PD //! Get the class pointer - t_class *thisClass() { return (t_class *)((t_object *)(x_obj))->te_g.g_pd; } + t_class *thisClass() const { return (t_class *)((t_object *)(x_obj))->te_g.g_pd; } + + //! Typedef for unique class identifier + typedef t_class *t_classid; + //! Get unique id for object class + t_classid thisClassId() const { return thisClass(); } + //! Get class pointer from class id + static t_class *getClass(t_classid c) { return c; } #elif FLEXT_SYS == FLEXT_SYS_MAX //! Get the class pointer - t_class *thisClass() { return (t_class *)(((t_tinyobject *)x_obj)->t_messlist-1); } + t_class *thisClass() const { return (t_class *)(((t_tinyobject *)x_obj)->t_messlist-1); } + + //! Typedef for unique class identifier + typedef void *t_classid; + //! Get unique id for object class (for Max/MSP library object share the same (t_class *)!) + t_classid thisClassId() const; + //! Get class pointer from class id + static t_class *getClass(t_classid); #endif //! @} FLEXT_O_INFO @@ -201,7 +216,7 @@ class FLEXT_SHARE flext_obj: public: //! Creation callback - static void __setup__(t_class *) { flext::Setup(); } + static void __setup__(t_classid) { flext::Setup(); } /*! \brief This is a temporary holder \warning don't touch it! @@ -223,7 +238,7 @@ class FLEXT_SHARE flext_obj: // Definitions for library objects static void lib_init(const char *name,void setupfun(),bool attr); - static void obj_add(bool lib,bool dsp,bool attr,const char *idname,const char *names,void setupfun(t_class *),flext_obj *(*newfun)(int,t_atom *),void (*freefun)(flext_hdr *),int argtp1,...); + static void obj_add(bool lib,bool dsp,bool attr,const char *idname,const char *names,void setupfun(t_classid),flext_obj *(*newfun)(int,t_atom *),void (*freefun)(flext_hdr *),int argtp1,...); static flext_hdr *obj_new(const t_symbol *s,int argc,t_atom *argv); static void obj_free(flext_hdr *o); @@ -272,8 +287,8 @@ static flext_obj *__init__(int argc,t_atom *argv); \ static void __free__(flext_hdr *hdr) \ { flext_obj *mydata = hdr->data; delete mydata; \ hdr->flext_hdr::~flext_hdr(); } \ -static void __setup__(t_class *classPtr) { \ - PARENT_CLASS::__setup__(classPtr); } \ +static void __setup__(t_classid classid) { \ + PARENT_CLASS::__setup__(classid); } \ protected: \ static inline NEW_CLASS *thisObject(void *c) { return FLEXT_CAST(((flext_hdr *)c)->data); } @@ -285,9 +300,9 @@ static flext_obj *__init__(int argc,t_atom *argv); \ static void __free__(flext_hdr *hdr) \ { flext_obj *mydata = hdr->data; delete mydata; \ hdr->flext_hdr::~flext_hdr(); } \ -static void __setup__(t_class *classPtr) \ -{ PARENT_CLASS::__setup__(classPtr); \ - NEW_CLASS::SETUPFUN(classPtr); } \ +static void __setup__(t_classid classid) \ +{ PARENT_CLASS::__setup__(classid); \ + NEW_CLASS::SETUPFUN(classid); } \ protected: \ static inline NEW_CLASS *thisObject(void *c) { return FLEXT_CAST(((flext_hdr *)c)->data); } -- cgit v1.2.1