From: <vo...@us...> - 2008-03-13 07:51:24
|
Revision: 673 http://opde.svn.sourceforge.net/opde/?rev=673&view=rev Author: volca Date: 2008-03-13 00:51:29 -0700 (Thu, 13 Mar 2008) Log Message: ----------- * adding run from file method * adding RootBinder to the built files * comment change for Struct binder Modified Paths: -------------- trunk/src/bindings/CMakeLists.txt trunk/src/bindings/PythonStruct.h trunk/src/bindings/bindings.cpp trunk/src/bindings/bindings.h Modified: trunk/src/bindings/CMakeLists.txt =================================================================== --- trunk/src/bindings/CMakeLists.txt 2008-03-13 07:50:10 UTC (rev 672) +++ trunk/src/bindings/CMakeLists.txt 2008-03-13 07:51:29 UTC (rev 673) @@ -13,6 +13,7 @@ ${OPDE_SERVICE_INCLUDES} ${PYTHON_INCLUDE_PATH} ${OPDE_SOURCE_DIR}/src/scenemanager + ${OPDE_SOURCE_DIR}/src/main ${OPDE_SOURCE_DIR}/thirdparty/QuickGUI/include ) @@ -45,6 +46,8 @@ QuickGUIBindings.cpp QuickGUIBindings.h PythonStruct.h + RootBinder.cpp + RootBinder.h ) target_link_libraries(OpdePythonBindings @@ -52,4 +55,5 @@ ${OPDE_BASE_LIBRARIES} ${PYTHON_LIBRARIES} ${OPDE_SERVICE_LIBRARIES} + OpdeRoot ) Modified: trunk/src/bindings/PythonStruct.h =================================================================== --- trunk/src/bindings/PythonStruct.h 2008-03-13 07:50:10 UTC (rev 672) +++ trunk/src/bindings/PythonStruct.h 2008-03-13 07:51:29 UTC (rev 673) @@ -37,8 +37,10 @@ namespace Python { - // Templatized struct binder (no field writing supported). Exposes Type T as a python object with attributes. - // @note Every descendant needs to do at least two things: Initialize the msName and fill the msNameToAttr using method field + /** Templatized struct binder (no field writing supported). Exposes Type T as a python object with attributes. + * @note Every descendant needs to do at least three things: Initialize the msName and fill the msNameToAttr using method field, + * and call the static init method created for the filling operation from somewhere. + */ template<typename T> class PythonStruct { public: static PyObject* create(const T& t) { Modified: trunk/src/bindings/bindings.cpp =================================================================== --- trunk/src/bindings/bindings.cpp 2008-03-13 07:50:10 UTC (rev 672) +++ trunk/src/bindings/bindings.cpp 2008-03-13 07:51:29 UTC (rev 673) @@ -25,6 +25,7 @@ #include "bindings.h" #include "ServiceBinder.h" #include "logger.h" +#include "RootBinder.h" namespace Opde { namespace Python { @@ -113,23 +114,23 @@ } PyObject* Py_Log_Fatal(PyObject *self, PyObject* args) { - return Py_Log(self, Logger::LOG_FATAL, args); + return Py_Log(self, Logger::LOG_LEVEL_FATAL, args); } PyObject* Py_Log_Error(PyObject *self, PyObject* args) { - return Py_Log(self, Logger::LOG_ERROR, args); + return Py_Log(self, Logger::LOG_LEVEL_ERROR, args); } PyObject* Py_Log_Info(PyObject *self, PyObject* args) { - return Py_Log(self, Logger::LOG_INFO, args); + return Py_Log(self, Logger::LOG_LEVEL_INFO, args); } PyObject* Py_Log_Debug(PyObject *self, PyObject* args) { - return Py_Log(self, Logger::LOG_DEBUG, args); + return Py_Log(self, Logger::LOG_LEVEL_DEBUG, args); } PyObject* Py_Log_Verbose(PyObject *self, PyObject* args) { - return Py_Log(self, Logger::LOG_VERBOSE, args); + return Py_Log(self, Logger::LOG_LEVEL_VERBOSE, args); } } // namespace Python @@ -150,6 +151,7 @@ // Call all the binders here. The result is initialized Python VM PyObject *servicemod = Python::ServiceBinder::init(module); + Python::RootBinder::init(module); if (PyErr_Occurred()) { // TODO: Do something useful here, or forget it @@ -174,5 +176,18 @@ PyErr_Clear(); } } + + void PythonLanguage::runScript(const char* fname) { + FILE *fp = fopen (fname, "r+"); + PyRun_SimpleFile(fp, fname); + fclose(fp); + + if (PyErr_Occurred()) { + // TODO: Do something useful here, or forget it + // TODO: PythonException(BasicException) with the PyErr string probably. Same in the init + PyErr_Print(); + PyErr_Clear(); + } + } } // namespace Opde Modified: trunk/src/bindings/bindings.h =================================================================== --- trunk/src/bindings/bindings.h 2008-03-13 07:50:10 UTC (rev 672) +++ trunk/src/bindings/bindings.h 2008-03-13 07:51:29 UTC (rev 673) @@ -224,6 +224,9 @@ /** Runs a script loaded in memory on a given address */ static void runScriptPtr(const char* ptr); + + /** Runs a script from a file */ + static void runScript(const char* fname); }; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |