aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/flext/source/flbase.h
diff options
context:
space:
mode:
authorThomas Grill <xovo@users.sourceforge.net>2005-05-23 16:52:46 +0000
committerThomas Grill <xovo@users.sourceforge.net>2005-05-23 16:52:46 +0000
commita1c2bb17663ce4dea2f5e7e3c1e1bfae35541a2c (patch)
tree9000122288ab01e7d815323c79342f668d6b2a5b /externals/grill/flext/source/flbase.h
parenta98acaeb0ce114ede2cfd31267c6dcc3fc0fbb01 (diff)
oops, fix
Max/MSP has its own check.... changed initialization functions accordingly better timers for Windows fixed timer bug changed template parameter of TableMap compiler flag for MinGW binary compatibility (thanks to GG) enable WIN2000/XP API features with definition in build system fix for symbol messages into non-left inlets restructured TableMap type (doesn't own pointers any more) no sanity check for iterator fixes for MSVC6 slimmed object data structures better c++ compliance fixed problems with symbol binding svn path=/trunk/; revision=3074
Diffstat (limited to 'externals/grill/flext/source/flbase.h')
-rw-r--r--externals/grill/flext/source/flbase.h63
1 files changed, 23 insertions, 40 deletions
diff --git a/externals/grill/flext/source/flbase.h b/externals/grill/flext/source/flbase.h
index 7cf0d8cc..b487a63e 100644
--- a/externals/grill/flext/source/flbase.h
+++ b/externals/grill/flext/source/flbase.h
@@ -64,6 +64,8 @@ struct FLEXT_SHARE flext_hdr
};
+class flext_class;
+
// ----------------------------------------------------------------------------
/*! \brief The mother of base classes for all flext external objects
@@ -110,7 +112,7 @@ class FLEXT_SHARE FLEXT_CLASSDEF(flext_obj):
/*! \brief Signal a construction problem
\note This should only be used in the constructor. Object creation will be aborted.
*/
- void InitProblem() { init_ok = false; }
+ static void InitProblem() { init_ok = false; }
/*! \brief Enable/disable attribute procession (default = false)
\note Use that in the static class setup function (also library setup function)
@@ -145,34 +147,19 @@ class FLEXT_SHARE FLEXT_CLASSDEF(flext_obj):
const char *thisName() const { return GetString(m_name); }
//! Get the class name (as a symbol)
const t_symbol *thisNameSym() const { return m_name; }
-
-
//! Get the class pointer
-#if FLEXT_SYS == FLEXT_SYS_PD
- t_class *thisClass() const { FLEXT_ASSERT(x_obj); return (t_class *)((t_object *)(x_obj))->te_g.g_pd; }
-#elif FLEXT_SYS == FLEXT_SYS_MAX
- t_class *thisClass() const { FLEXT_ASSERT(x_obj); return (t_class *)(((t_tinyobject *)x_obj)->t_messlist-1); }
-#elif FLEXT_SYS == FLEXT_SYS_JMAX
- t_class *thisClass() const { return fts_object_get_class((fts_object_t *)thisHdr()); }
-#else
-#error
-#endif
-
-#if FLEXT_SYS == FLEXT_SYS_PD || FLEXT_SYS == FLEXT_SYS_JMAX
+ t_class *thisClass() const;
+
//! Typedef for unique class identifier
- typedef t_class *t_classid;
+ typedef flext_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; }
-#else
- //! 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;
+ t_classid thisClassId() const { return clss; }
+
//! Get class pointer from class id
static t_class *getClass(t_classid);
-#endif
+
+ bool HasAttributes() const;
//! @} FLEXT_O_INFO
@@ -202,14 +189,14 @@ class FLEXT_SHARE FLEXT_CLASSDEF(flext_obj):
*/
protected:
-
- //! The object header
- mutable flext_hdr *x_obj;
- //! Flag for attribute procession
- bool procattr;
+ //! pointer to flext class definition
+ flext_class *clss;
+
+ //! backpointer to object header
+ mutable flext_hdr *x_obj;
- static bool process_attributes;
+ static bool process_attributes;
private:
@@ -217,7 +204,7 @@ class FLEXT_SHARE FLEXT_CLASSDEF(flext_obj):
mutable t_canvas *m_canvas;
//! Flag for successful object construction
- bool init_ok;
+ static bool init_ok;
// flags for init and exit procedure;
static bool initing;
@@ -232,20 +219,20 @@ class FLEXT_SHARE FLEXT_CLASSDEF(flext_obj):
\warning don't touch it!
*/
static flext_hdr *m_holder;
+ //! Hold object's class during construction
+ static flext_class *m_holdclass;
//! Hold object's name during construction
static const t_symbol *m_holdname;
//! Holders for attribute procession flag
- static bool m_holdattr;
static int m_holdaargc;
static const t_atom *m_holdaargv;
- //! The object's name in the patcher
+ /*! The object's name in the patcher
+ \note objects of the same class can have various alias names!
+ */
const t_symbol *m_name;
- //! Check whether construction was successful
- bool InitOk() const { return init_ok; }
-
/*! Return true if in object initialization phase
true when in constructor or Init, false when in Finalize
*/
@@ -575,7 +562,3 @@ FLEXT_OBJ_SETUP(NEW_CLASS,DSP,LIB)
#endif
-
-
-
-