Update of /cvsroot/pure-data/externals/grill/py/source In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13487/source
Modified Files: pybase.cpp pybase.h pybuffer.h pyext.cpp pysymbol.h Log Message: __str__ method for pyext, to enable print self calls enable symbol binding for all callables (not only functions and methods) enable optimization of Python code in reease build _isthreaded is now a data member instead of a method compiler flag to exclude DSP objects some cleanups pyext: fix for missing __init__ attribute some optimizations and py reload fix some ASSERTs for explicitly created pyext classes (should be runtime checks i guess) more safety for calls where association python-pd has already been removed fixed typos let _inlets and _outlets default to 0
Index: pybase.h =================================================================== RCS file: /cvsroot/pure-data/externals/grill/py/source/pybase.h,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** pybase.h 11 Aug 2005 15:00:58 -0000 1.8 --- pybase.h 26 Sep 2005 13:59:59 -0000 1.9 *************** *** 82,86 ****
void OpenEditor(); ! void Respond(bool b);
void Report() { while(PyErr_Occurred()) PyErr_Print(); } --- 82,94 ----
void OpenEditor(); ! ! void Respond(bool b) ! { ! if(respond) { ! t_atom a; ! SetBool(a,b); ! DumpOut(sym_response,1,&a); ! } ! }
void Report() { while(PyErr_Occurred()) PyErr_Print(); } *************** *** 159,163 **** static void thrworker(thr_params *data);
! bool qucall(PyObject *fun,PyObject *args);
static void quworker(thr_params *); --- 167,178 ---- static void thrworker(thr_params *data);
! bool qucall(PyObject *fun,PyObject *args) ! { ! FifoEl *el = qufifo.New(); ! el->Set(this,fun,args); ! qufifo.Put(el); ! qucond.Signal(); ! return true; ! }
static void quworker(thr_params *); *************** *** 170,173 **** --- 185,189 ----
static const t_symbol *sym_fint; // float or int symbol, depending on native number message type + static const t_symbol *sym_response;
static const t_symbol *getone(t_atom &at,PyObject *arg);
Index: pybase.cpp =================================================================== RCS file: /cvsroot/pure-data/externals/grill/py/source/pybase.cpp,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** pybase.cpp 21 Sep 2005 10:52:33 -0000 1.10 --- pybase.cpp 26 Sep 2005 13:59:59 -0000 1.11 *************** *** 76,79 **** --- 76,80 ----
const t_symbol *pybase::sym_fint = NULL; + const t_symbol *pybase::sym_response = NULL;
// ----------------------------------------------------------------------------------------------------------- *************** *** 84,89 ****
void pybase::lib_setup() ! { ! post(""); post("------------------------------------------------"); post("py/pyext %s - python script objects",PY__VERSION); --- 85,90 ----
void pybase::lib_setup() ! { ! post(""); post("------------------------------------------------"); post("py/pyext %s - python script objects",PY__VERSION); *************** *** 99,102 **** --- 100,113 ---- // -------------------------------------------------------------
+ sym_response = flext::MakeSymbol("response"); + + #if FLEXT_SYS == FLEXT_SYS_PD + sym_fint = sym_float; + #else + sym_fint = sym_int; + #endif + + // ------------------------------------------------------------- + Py_Initialize();
*************** *** 164,173 **** PyModule_AddObject(module_obj,"Buffer",(PyObject *)&pySamplebuffer_Type);
- #if FLEXT_SYS == FLEXT_SYS_PD - sym_fint = sym_float; - #else - sym_fint = sym_int; - #endif - // -------------------------------------------------------------
--- 175,178 ---- *************** *** 549,563 **** }
- static const t_symbol *sym_response = flext::MakeSymbol("response"); - - void pybase::Respond(bool b) - { - if(respond) { - t_atom a; - SetBool(a,b); - DumpOut(sym_response,1,&a); - } - } - void pybase::Reload() { --- 554,557 ---- *************** *** 726,738 **** }
- bool pybase::qucall(PyObject *fun,PyObject *args) - { - FifoEl *el = qufifo.New(); - el->Set(this,fun,args); - qufifo.Put(el); - qucond.Signal(); - return true; - } - void pybase::quworker(thr_params *) { --- 720,723 ----
Index: pyext.cpp =================================================================== RCS file: /cvsroot/pure-data/externals/grill/py/source/pyext.cpp,v retrieving revision 1.42 retrieving revision 1.43 diff -C2 -d -r1.42 -r1.43 *** pyext.cpp 20 Sep 2005 20:50:40 -0000 1.42 --- pyext.cpp 26 Sep 2005 13:59:59 -0000 1.43 *************** *** 260,263 **** --- 260,265 ---- Py_DECREF(init); } + // __init__ has not been found - don't care + PyErr_Clear();
Py_DECREF(pargs);
Index: pysymbol.h =================================================================== RCS file: /cvsroot/pure-data/externals/grill/py/source/pysymbol.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** pysymbol.h 9 Mar 2005 04:58:11 -0000 1.3 --- pysymbol.h 26 Sep 2005 13:59:59 -0000 1.4 *************** *** 52,56 ****
#define pySymbol_Check(op) PyObject_TypeCheck(op, &pySymbol_Type) ! #define pySymbol_CheckExact(op) ((op)->ob_type == &PySymbol_Type)
--- 52,56 ----
#define pySymbol_Check(op) PyObject_TypeCheck(op, &pySymbol_Type) ! #define pySymbol_CheckExact(op) ((op)->ob_type == &pySymbol_Type)
Index: pybuffer.h =================================================================== RCS file: /cvsroot/pure-data/externals/grill/py/source/pybuffer.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** pybuffer.h 9 Mar 2005 04:58:11 -0000 1.1 --- pybuffer.h 26 Sep 2005 13:59:59 -0000 1.2 *************** *** 1,51 **** ! /* ! ! 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. ! ! */ ! ! #ifndef __PYBUFFER_H ! #define __PYBUFFER_H ! ! #include <flext.h> ! ! #if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 500) ! #error You need at least flext version 0.5.0 ! #endif ! ! #if FLEXT_OS == FLEXT_OS_MAC ! #include <Python/Python.h> ! #else ! #include <Python.h> ! #endif ! ! ! #ifdef _MSC_VER ! #ifdef PY_EXPORTS ! #define PY_EXPORT __declspec(dllexport) ! #else ! #define PY_EXPORT __declspec(dllimport) ! #endif ! #else ! #define PY_EXPORT ! #endif ! ! typedef struct { ! PyObject_HEAD ! /* Type-specific fields go here. */ ! const t_symbol *sym; ! flext::buffer *buf; ! flext::buffer::lock_t lock; ! bool dirty; ! } pySamplebuffer; ! ! PY_EXPORT extern PyTypeObject pySamplebuffer_Type; ! #define pySamplebuffer_Check(op) PyObject_TypeCheck(op, &pySamplebuffer_Type) ! #define pySamplebuffer_CheckExact(op) ((op)->ob_type == &PySamplebuffer_Type)
--- 1,51 ---- ! /* ! ! 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. ! ! */ ! ! #ifndef __PYBUFFER_H ! #define __PYBUFFER_H ! ! #include <flext.h> ! ! #if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 500) ! #error You need at least flext version 0.5.0 ! #endif ! ! #if FLEXT_OS == FLEXT_OS_MAC ! #include <Python/Python.h> ! #else ! #include <Python.h> ! #endif ! ! ! #ifdef _MSC_VER ! #ifdef PY_EXPORTS ! #define PY_EXPORT __declspec(dllexport) ! #else ! #define PY_EXPORT __declspec(dllimport) ! #endif ! #else ! #define PY_EXPORT ! #endif ! ! typedef struct { ! PyObject_HEAD ! /* Type-specific fields go here. */ ! const t_symbol *sym; ! flext::buffer *buf; ! flext::buffer::lock_t lock; ! bool dirty; ! } pySamplebuffer; ! ! PY_EXPORT extern PyTypeObject pySamplebuffer_Type; ! #define pySamplebuffer_Check(op) PyObject_TypeCheck(op, &pySamplebuffer_Type) ! #define pySamplebuffer_CheckExact(op) ((op)->ob_type == &pySamplebuffer_Type)
*************** *** 62,79 **** }
! inline const t_symbol *pySamplebuffer_AS_SYMBOL(PyObject *op) ! { ! return ((pySamplebuffer *)op)->sym; ! } ! ! inline const t_symbol *pySamplebuffer_AsSymbol(PyObject *op) ! { ! return pySamplebuffer_Check(op)?pySamplebuffer_AS_SYMBOL(op):NULL; ! } ! ! inline const char *pySamplebuffer_AS_STRING(PyObject *op) ! { ! return flext::GetString(pySamplebuffer_AS_SYMBOL(op)); ! } ! ! #endif --- 62,79 ---- }
! inline const t_symbol *pySamplebuffer_AS_SYMBOL(PyObject *op) ! { ! return ((pySamplebuffer *)op)->sym; ! } ! ! inline const t_symbol *pySamplebuffer_AsSymbol(PyObject *op) ! { ! return pySamplebuffer_Check(op)?pySamplebuffer_AS_SYMBOL(op):NULL; ! } ! ! inline const char *pySamplebuffer_AS_STRING(PyObject *op) ! { ! return flext::GetString(pySamplebuffer_AS_SYMBOL(op)); ! } ! ! #endif