aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/flext/source/flbase.h
diff options
context:
space:
mode:
authorThomas Grill <xovo@users.sourceforge.net>2003-01-03 04:35:22 +0000
committerThomas Grill <xovo@users.sourceforge.net>2003-01-03 04:35:22 +0000
commitcdf86b37d6180f5f88393c02d8f5e19e2e645ad6 (patch)
tree69f866117656c701f9febb83bcea9fa67ae9c955 /externals/grill/flext/source/flbase.h
parent10e0265429983876e2fd69950df4d51c8faf5635 (diff)
""
svn path=/trunk/; revision=317
Diffstat (limited to 'externals/grill/flext/source/flbase.h')
-rw-r--r--externals/grill/flext/source/flbase.h33
1 files changed, 24 insertions, 9 deletions
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<NEW_CLASS *>(((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<NEW_CLASS *>(((flext_hdr *)c)->data); }