diff options
author | Thomas Grill <xovo@users.sourceforge.net> | 2005-01-11 04:59:27 +0000 |
---|---|---|
committer | Thomas Grill <xovo@users.sourceforge.net> | 2005-01-11 04:59:27 +0000 |
commit | f1558e3a9297c6a4fefa9d399a7c9d067d859aa3 (patch) | |
tree | d06d5c6cb9badc428a2ed4d3352f7bad6bfbf1f7 /externals/grill/py/source/pysymbol.h | |
parent | ead9ba14ab569e5644e2deeffc436c31b53ea141 (diff) |
added symbol type
fixed incorrect unbinding of instance methods
fixes for symbol type
little restructuring
svn path=/trunk/; revision=2489
Diffstat (limited to 'externals/grill/py/source/pysymbol.h')
-rw-r--r-- | externals/grill/py/source/pysymbol.h | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/externals/grill/py/source/pysymbol.h b/externals/grill/py/source/pysymbol.h new file mode 100644 index 00000000..bf06437d --- /dev/null +++ b/externals/grill/py/source/pysymbol.h @@ -0,0 +1,57 @@ +/*
+
+py/pyext - python script object for PD and Max/MSP
+
+Copyright (c)2002-2005 Thomas Grill (gr@grrrr.org)
+For information on usage and redistribution, and for a DISCLAIMER OF ALL
+WARRANTIES, see the file, "license.txt," in this distribution.
+
+*/
+
+#include "pyprefix.h"
+
+typedef struct {
+ PyObject_HEAD
+ /* Type-specific fields go here. */
+ const t_symbol *sym;
+} pySymbol;
+
+extern PyTypeObject pySymbol_Type;
+
+extern pySymbol *pySymbol__;
+extern pySymbol *pySymbol_bang;
+extern pySymbol *pySymbol_list;
+extern pySymbol *pySymbol_symbol;
+extern pySymbol *pySymbol_float;
+extern pySymbol *pySymbol_int;
+
+
+#define pySymbol_Check(op) PyObject_TypeCheck(op, &pySymbol_Type) +#define pySymbol_CheckExact(op) ((op)->ob_type == &PySymbol_Type) + + +PyObject *pySymbol_FromSymbol(const t_symbol *sym); + +inline const t_symbol *pySymbol_AS_SYMBOL(PyObject *op)
+{
+ return ((pySymbol *)op)->sym;
+}
+
+inline const t_symbol *pySymbol_AsSymbol(PyObject *op)
+{
+ return pySymbol_Check(op)?pySymbol_AS_SYMBOL(op):NULL;
+}
+
+inline const char *pySymbol_AS_STRING(PyObject *op)
+{
+ return flext::GetString(pySymbol_AS_SYMBOL(op));
+}
+
+inline const t_symbol *pyObject_AsSymbol(PyObject *op)
+{
+ if(PyString_Check(op))
+ return flext::MakeSymbol(PyString_AS_STRING(op));
+ else
+ return pySymbol_AsSymbol(op);
+}
+
|