From fd2b1156783d52dbb7c93c53fe008d9e14cbffdd Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 3 Apr 2009 14:51:06 +0000 Subject: Python BGE API - Initialize python types with PyType_Ready, which adds methods to the type dictionary. - use Pythons get/setattro (uses a python string for the attribute rather then char*). Using basic C strings seems nice but internally python converts them to python strings and discards them for most functions that accept char arrays. - Method lookups use the PyTypes dictionary (should be faster then Py_FindMethod) - Renamed __getattr -> py_base_getattro, _getattr -> py_getattro, __repr -> py_base_repr, py_delattro, py_getattro_self etc. From here is possible to put all the parent classes methods into each python types dictionary to avoid nested lookups (api has 4 levels of lookups in some places), tested this but its not ready yet. Simple tests for getting a method within a loop show this to be between 0.5 and 3.2x faster then using Py_FindMethod() --- source/gameengine/GameLogic/SCA_RandomActuator.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'source/gameengine/GameLogic/SCA_RandomActuator.h') diff --git a/source/gameengine/GameLogic/SCA_RandomActuator.h b/source/gameengine/GameLogic/SCA_RandomActuator.h index 0d404fa8a9f..96ca353257f 100644 --- a/source/gameengine/GameLogic/SCA_RandomActuator.h +++ b/source/gameengine/GameLogic/SCA_RandomActuator.h @@ -96,8 +96,8 @@ class SCA_RandomActuator : public SCA_IActuator /* Python interface ---------------------------------------------------- */ /* --------------------------------------------------------------------- */ - virtual PyObject* _getattr(const char *attr); - virtual int _setattr(const char *attr, PyObject *value); + virtual PyObject* py_getattro(PyObject *attr); + virtual int py_setattro(PyObject *attr, PyObject *value); /* 1. setSeed */ KX_PYMETHOD_DOC(SCA_RandomActuator,SetSeed); -- cgit v1.2.3 From 07930c0b0943810a4914f7ce2d035bfbe77f796a Mon Sep 17 00:00:00 2001 From: Benoit Bolsee Date: Fri, 3 Apr 2009 19:09:52 +0000 Subject: BGE API cleanup: RandomActuator. --- source/gameengine/GameLogic/SCA_RandomActuator.h | 46 +++++++++--------------- 1 file changed, 16 insertions(+), 30 deletions(-) (limited to 'source/gameengine/GameLogic/SCA_RandomActuator.h') diff --git a/source/gameengine/GameLogic/SCA_RandomActuator.h b/source/gameengine/GameLogic/SCA_RandomActuator.h index 96ca353257f..fbafbb69c01 100644 --- a/source/gameengine/GameLogic/SCA_RandomActuator.h +++ b/source/gameengine/GameLogic/SCA_RandomActuator.h @@ -99,43 +99,29 @@ class SCA_RandomActuator : public SCA_IActuator virtual PyObject* py_getattro(PyObject *attr); virtual int py_setattro(PyObject *attr, PyObject *value); - /* 1. setSeed */ + static PyObject* pyattr_get_seed(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef); + static int pyattr_set_seed(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); + + // Deprecated methods -----> KX_PYMETHOD_DOC(SCA_RandomActuator,SetSeed); - /* 2. getSeed */ KX_PYMETHOD_DOC(SCA_RandomActuator,GetSeed); - /* 3. setPara1 -removed- */ - /* 4. getPara1 */ KX_PYMETHOD_DOC(SCA_RandomActuator,GetPara1); - /* 5. setPara2 -removed- */ - /* 6. getPara2 */ KX_PYMETHOD_DOC(SCA_RandomActuator,GetPara2); - /* 7. setDistribution -removed- */ - /* 8. getDistribution */ KX_PYMETHOD_DOC(SCA_RandomActuator,GetDistribution); - /* 9. setProperty */ KX_PYMETHOD_DOC(SCA_RandomActuator,SetProperty); - /* 10. getProperty */ KX_PYMETHOD_DOC(SCA_RandomActuator,GetProperty); - /* 11. setBoolConst */ - KX_PYMETHOD_DOC(SCA_RandomActuator,SetBoolConst); - /* 12. setBoolUniform, */ - KX_PYMETHOD_DOC(SCA_RandomActuator,SetBoolUniform); - /* 13. setBoolBernouilli, */ - KX_PYMETHOD_DOC(SCA_RandomActuator,SetBoolBernouilli); - /* 14. setIntConst,*/ - KX_PYMETHOD_DOC(SCA_RandomActuator,SetIntConst); - /* 15. setIntUniform,*/ - KX_PYMETHOD_DOC(SCA_RandomActuator,SetIntUniform); - /* 16. setIntPoisson, */ - KX_PYMETHOD_DOC(SCA_RandomActuator,SetIntPoisson); - /* 17. setFloatConst,*/ - KX_PYMETHOD_DOC(SCA_RandomActuator,SetFloatConst); - /* 18. setFloatUniform, */ - KX_PYMETHOD_DOC(SCA_RandomActuator,SetFloatUniform); - /* 19. setFloatNormal, */ - KX_PYMETHOD_DOC(SCA_RandomActuator,SetFloatNormal); - /* 20. setFloatNegativeExponential, */ - KX_PYMETHOD_DOC(SCA_RandomActuator,SetFloatNegativeExponential); + // <----- + + KX_PYMETHOD_DOC_VARARGS(SCA_RandomActuator, setBoolConst); + KX_PYMETHOD_DOC_NOARGS(SCA_RandomActuator, setBoolUniform); + KX_PYMETHOD_DOC_VARARGS(SCA_RandomActuator, setBoolBernouilli); + KX_PYMETHOD_DOC_VARARGS(SCA_RandomActuator, setIntConst); + KX_PYMETHOD_DOC_VARARGS(SCA_RandomActuator, setIntUniform); + KX_PYMETHOD_DOC_VARARGS(SCA_RandomActuator, setIntPoisson); + KX_PYMETHOD_DOC_VARARGS(SCA_RandomActuator, setFloatConst); + KX_PYMETHOD_DOC_VARARGS(SCA_RandomActuator, setFloatUniform); + KX_PYMETHOD_DOC_VARARGS(SCA_RandomActuator, setFloatNormal); + KX_PYMETHOD_DOC_VARARGS(SCA_RandomActuator, setFloatNegativeExponential); }; /* end of class KX_EditObjectActuator : public SCA_PropertyActuator */ #endif -- cgit v1.2.3 From 6bc162e679d8b52b28e205de76985a1735abbf0a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 19 Apr 2009 17:29:07 +0000 Subject: BGE Python API removed redundant (PyObject *self) argument from python functions that are not exposed to python directly. --- source/gameengine/GameLogic/SCA_RandomActuator.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'source/gameengine/GameLogic/SCA_RandomActuator.h') diff --git a/source/gameengine/GameLogic/SCA_RandomActuator.h b/source/gameengine/GameLogic/SCA_RandomActuator.h index fbafbb69c01..8f58ed0dcec 100644 --- a/source/gameengine/GameLogic/SCA_RandomActuator.h +++ b/source/gameengine/GameLogic/SCA_RandomActuator.h @@ -103,13 +103,13 @@ class SCA_RandomActuator : public SCA_IActuator static int pyattr_set_seed(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); // Deprecated methods -----> - KX_PYMETHOD_DOC(SCA_RandomActuator,SetSeed); - KX_PYMETHOD_DOC(SCA_RandomActuator,GetSeed); - KX_PYMETHOD_DOC(SCA_RandomActuator,GetPara1); - KX_PYMETHOD_DOC(SCA_RandomActuator,GetPara2); - KX_PYMETHOD_DOC(SCA_RandomActuator,GetDistribution); - KX_PYMETHOD_DOC(SCA_RandomActuator,SetProperty); - KX_PYMETHOD_DOC(SCA_RandomActuator,GetProperty); + KX_PYMETHOD_DOC_VARARGS(SCA_RandomActuator,SetSeed); + KX_PYMETHOD_DOC_NOARGS(SCA_RandomActuator,GetSeed); + KX_PYMETHOD_DOC_NOARGS(SCA_RandomActuator,GetPara1); + KX_PYMETHOD_DOC_NOARGS(SCA_RandomActuator,GetPara2); + KX_PYMETHOD_DOC_NOARGS(SCA_RandomActuator,GetDistribution); + KX_PYMETHOD_DOC_VARARGS(SCA_RandomActuator,SetProperty); + KX_PYMETHOD_DOC_NOARGS(SCA_RandomActuator,GetProperty); // <----- KX_PYMETHOD_DOC_VARARGS(SCA_RandomActuator, setBoolConst); -- cgit v1.2.3