PyUnicode_From_STR_String utility function which passes STR_String to PyUnicode_FromStringAndSize (saves a call to strlen).

Also made CValue::ConvertKeysToPython use faster list creation and improved some of the macro formatting.
This commit is contained in:
2011-11-06 01:39:36 +00:00
parent 2a7ade9de2
commit 4c17f8e5de
81 changed files with 311 additions and 226 deletions

View File

@@ -40,7 +40,7 @@
class BL_ActionActuator : public SCA_IActuator
{
public:
Py_Header;
Py_Header
BL_ActionActuator(SCA_IObject* gameobj,
const STR_String& propname,
const STR_String& framepropname,
@@ -70,8 +70,8 @@ public:
#ifdef WITH_PYTHON
KX_PYMETHOD_O(BL_ActionActuator,GetChannel);
KX_PYMETHOD_DOC(BL_ActionActuator,setChannel);
KX_PYMETHOD_O(BL_ActionActuator,GetChannel)
KX_PYMETHOD_DOC(BL_ActionActuator,setChannel)
static PyObject* pyattr_get_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
static int pyattr_set_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);

View File

@@ -46,7 +46,7 @@
class BL_ArmatureActuator : public SCA_IActuator
{
Py_Header;
Py_Header
public:
BL_ArmatureActuator(SCA_IObject* gameobj,
int type,

View File

@@ -52,7 +52,7 @@ struct bPose;
*/
class BL_ArmatureConstraint : public PyObjectPlus
{
Py_Header;
Py_Header
private:
struct bConstraint* m_constraint;

View File

@@ -51,7 +51,7 @@ class KX_BlenderSceneConverter;
class BL_ArmatureObject : public KX_GameObject
{
Py_Header;
Py_Header
public:
double GetLastFrame ();

View File

@@ -42,7 +42,7 @@ struct Key;
class BL_ShapeActionActuator : public SCA_IActuator
{
public:
Py_Header;
Py_Header
BL_ShapeActionActuator(SCA_IObject* gameobj,
const STR_String& propname,
const STR_String& framepropname,

View File

@@ -24,19 +24,25 @@
//extern int gRefCountExpr; // only for debugging purposes (detect mem.leaks)
#define PLUGIN_DECLARE_SERIAL_EXPRESSION(class_name,base_class_name) \
#define PLUGIN_DECLARE_SERIAL_EXPRESSION(class_name, base_class_name) \
public: \
virtual base_class_name * Copy() { return new class_name; } \
virtual bool EdSerialize(CompressorArchive& arch,class CFactoryManager* facmgr,bool bIsStoring); \
virtual bool EdIdSerialize(CompressorArchive& arch,class CFactoryManager* facmgr,bool bIsStoring) \
{ \
virtual base_class_name * Copy() { \
return new class_name; \
} \
virtual bool EdSerialize(CompressorArchive& arch, \
class CFactoryManager* facmgr, \
bool bIsStoring); \
virtual bool EdIdSerialize(CompressorArchive& arch, \
class CFactoryManager* facmgr, \
bool bIsStoring) \
{ \
if (bIsStoring) \
{ \
unsigned char exprID = GetExpressionID(); \
arch << exprID; \
} \
return true; \
} \
} \

View File

@@ -23,7 +23,7 @@
class CListValue : public CPropValue
{
Py_Header;
Py_Header
//PLUGIN_DECLARE_SERIAL (CListValue,CValue)
public:
@@ -58,7 +58,7 @@ public:
void Resize(int num);
void SetValue(int i,CValue* val);
CValue* GetValue(int i){ assertd(i < m_pValueArray.size()); return m_pValueArray[i];}
int GetCount() { return m_pValueArray.size();};
int GetCount() { return m_pValueArray.size(); }
virtual const STR_String & GetText();
bool CheckEqual(CValue* first,CValue* second);

View File

@@ -470,7 +470,7 @@ PyObject *PyObjectPlus::py_get_attrdef(PyObject *self_py, const PyAttributeDef *
case KX_PYATTRIBUTE_TYPE_STRING:
{
STR_String *val = reinterpret_cast<STR_String*>(ptr);
return PyUnicode_FromString(*val);
return PyUnicode_From_STR_String(*val);
}
case KX_PYATTRIBUTE_TYPE_CHAR:
{
@@ -1171,6 +1171,11 @@ PyObject *PyObjectPlus::NewProxyPlus_Ext(PyObjectPlus *self, PyTypeObject *tp, v
return self->m_proxy;
}
PyObject *PyUnicode_From_STR_String(const STR_String& str)
{
return PyUnicode_FromStringAndSize(str.ReadPtr(), str.Length());
}
///////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////
/* deprecation warning management */

View File

@@ -29,11 +29,12 @@
* \ingroup expressions
*/
#ifndef _PY_OBJECT_PLUS_H
#define _PY_OBJECT_PLUS_H
/* for now keep weakrefs optional */
#define USE_WEAKREFS
#ifndef _adr_py_lib_h_ // only process once,
#define _adr_py_lib_h_ // even if multiply included
#ifndef __cplusplus // c++ only
#error Must be compiled with C++
@@ -45,10 +46,6 @@
#include "SG_QList.h"
#include <stddef.h>
/*------------------------------
* Python defines
------------------------------*/
#ifdef WITH_PYTHON
#ifdef USE_MATHUTILS
extern "C" {
@@ -110,7 +107,7 @@ typedef struct PyObjectPlus_Proxy {
#define BGE_PROXY_PYOWNS(_self) (((PyObjectPlus_Proxy *)_self)->py_owns)
#define BGE_PROXY_PYREF(_self) (((PyObjectPlus_Proxy *)_self)->py_ref)
#ifdef USE_WEAKREFS
#define BGE_PROXY_WKREF(_self) (((PyObjectPlus_Proxy *)_self)->in_weakreflist)
# define BGE_PROXY_WKREF(_self) (((PyObjectPlus_Proxy *)_self)->in_weakreflist)
#endif
/* Note, sometimes we dont care what BGE type this is as long as its a proxy */
@@ -125,44 +122,60 @@ typedef struct PyObjectPlus_Proxy {
// AttributesPtr correspond to attributes of proxy generic pointer
// each PyC++ class must be registered in KX_PythonInitTypes.cpp
#define __Py_Header \
public: \
public: \
static PyTypeObject Type; \
static PyMethodDef Methods[]; \
static PyAttributeDef Attributes[]; \
virtual PyTypeObject *GetType(void) {return &Type;}; \
virtual PyObject *GetProxy() {return GetProxyPlus_Ext(this, &Type, NULL);}; \
virtual PyObject *NewProxy(bool py_owns) {return NewProxyPlus_Ext(this, &Type, NULL, py_owns);}; \
virtual PyTypeObject *GetType(void) { \
return &Type; \
} \
virtual PyObject *GetProxy() { \
return GetProxyPlus_Ext(this, &Type, NULL); \
} \
virtual PyObject *NewProxy(bool py_owns) { \
return NewProxyPlus_Ext(this, &Type, NULL, py_owns); \
} \
// leave above line empty (macro)!
// use this macro for class that use generic pointer in proxy
// GetProxy() and NewProxy() must be defined to set the correct pointer in the proxy
#define __Py_HeaderPtr \
public: \
public: \
static PyTypeObject Type; \
static PyMethodDef Methods[]; \
static PyAttributeDef Attributes[]; \
static PyAttributeDef AttributesPtr[]; \
virtual PyTypeObject *GetType(void) {return &Type;}; \
virtual PyTypeObject *GetType(void) { \
return &Type; \
} \
virtual PyObject *GetProxy(); \
virtual PyObject *NewProxy(bool py_owns); \
// leave above line empty (macro)!
#ifdef WITH_CXX_GUARDEDALLOC
#define Py_Header __Py_Header \
void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, Type.tp_name); } \
void operator delete(void *mem) { MEM_freeN(mem); } \
void *operator new(size_t num_bytes) { \
return MEM_mallocN(num_bytes, Type.tp_name); \
} \
void operator delete(void *mem) { \
MEM_freeN(mem); \
} \
#else
#define Py_Header __Py_Header
# define Py_Header __Py_Header
#endif
#ifdef WITH_CXX_GUARDEDALLOC
#define Py_HeaderPtr __Py_HeaderPtr \
void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, Type.tp_name); } \
void operator delete( void *mem ) { MEM_freeN(mem); } \
void *operator new(size_t num_bytes) { \
return MEM_mallocN(num_bytes, Type.tp_name); \
} \
void operator delete( void *mem ) { \
MEM_freeN(mem); \
} \
#else
#define Py_HeaderPtr __Py_HeaderPtr
# define Py_HeaderPtr __Py_HeaderPtr
#endif
/*
@@ -182,62 +195,106 @@ typedef struct PyObjectPlus_Proxy {
*/
#define KX_PYMETHOD(class_name, method_name) \
PyObject* Py##method_name(PyObject* args, PyObject* kwds); \
static PyObject* sPy##method_name( PyObject* self, PyObject* args, PyObject* kwds) { \
if(BGE_PROXY_REF(self)==NULL) { PyErr_SetString(PyExc_RuntimeError, #class_name "." #method_name "() - " BGE_PROXY_ERROR_MSG); return NULL; } \
return ((class_name*)BGE_PROXY_REF(self))->Py##method_name(args, kwds); \
}; \
static PyObject* \
sPy##method_name(PyObject* self, PyObject* args, PyObject* kwds) { \
if(BGE_PROXY_REF(self)==NULL) { \
PyErr_SetString(PyExc_RuntimeError, \
#class_name "." #method_name "() - " \
BGE_PROXY_ERROR_MSG); \
return NULL; \
} \
return((class_name*)BGE_PROXY_REF(self))->Py##method_name(args, kwds); \
} \
#define KX_PYMETHOD_VARARGS(class_name, method_name) \
PyObject* Py##method_name(PyObject* args); \
static PyObject* sPy##method_name( PyObject* self, PyObject* args) { \
if(BGE_PROXY_REF(self)==NULL) { PyErr_SetString(PyExc_RuntimeError, #class_name "." #method_name "() - " BGE_PROXY_ERROR_MSG); return NULL; } \
return ((class_name*)BGE_PROXY_REF(self))->Py##method_name(args); \
}; \
static PyObject* \
sPy##method_name(PyObject* self, PyObject* args) { \
if(BGE_PROXY_REF(self)==NULL) { \
PyErr_SetString(PyExc_RuntimeError, \
#class_name "." #method_name "() - " \
BGE_PROXY_ERROR_MSG); return NULL; \
} \
return((class_name*)BGE_PROXY_REF(self))->Py##method_name(args); \
} \
#define KX_PYMETHOD_NOARGS(class_name, method_name) \
PyObject* Py##method_name(); \
static PyObject* sPy##method_name( PyObject* self) { \
if(BGE_PROXY_REF(self)==NULL) { PyErr_SetString(PyExc_RuntimeError, #class_name "." #method_name "() - " BGE_PROXY_ERROR_MSG); return NULL; } \
return ((class_name*)BGE_PROXY_REF(self))->Py##method_name(); \
}; \
static PyObject* \
sPy##method_name(PyObject* self) { \
if(BGE_PROXY_REF(self)==NULL) { \
PyErr_SetString(PyExc_RuntimeError, \
#class_name "." #method_name "() - " \
BGE_PROXY_ERROR_MSG); return NULL; \
} \
return((class_name*)BGE_PROXY_REF(self))->Py##method_name(); \
} \
#define KX_PYMETHOD_O(class_name, method_name) \
PyObject* Py##method_name(PyObject* value); \
static PyObject* sPy##method_name( PyObject* self, PyObject* value) { \
if(BGE_PROXY_REF(self)==NULL) { PyErr_SetString(PyExc_RuntimeError, #class_name "." #method_name "(value) - " BGE_PROXY_ERROR_MSG); return NULL; } \
return ((class_name*)BGE_PROXY_REF(self))->Py##method_name(value); \
}; \
static PyObject* \
sPy##method_name(PyObject* self, PyObject* value) { \
if(BGE_PROXY_REF(self)==NULL) { \
PyErr_SetString(PyExc_RuntimeError, \
#class_name "." #method_name "(value) - " \
BGE_PROXY_ERROR_MSG); return NULL; \
} \
return((class_name*)BGE_PROXY_REF(self))->Py##method_name(value); \
} \
#define KX_PYMETHOD_DOC(class_name, method_name) \
PyObject* Py##method_name(PyObject* args, PyObject* kwds); \
static PyObject* sPy##method_name( PyObject* self, PyObject* args, PyObject* kwds) { \
if(BGE_PROXY_REF(self)==NULL) { PyErr_SetString(PyExc_RuntimeError, #class_name "." #method_name "(...) - " BGE_PROXY_ERROR_MSG); return NULL; } \
return ((class_name*)BGE_PROXY_REF(self))->Py##method_name(args, kwds); \
}; \
static PyObject* \
sPy##method_name(PyObject* self, PyObject* args, PyObject* kwds) { \
if(BGE_PROXY_REF(self)==NULL) { \
PyErr_SetString(PyExc_RuntimeError, \
#class_name "." #method_name "(...) - " \
BGE_PROXY_ERROR_MSG); return NULL; \
} \
return((class_name*)BGE_PROXY_REF(self))->Py##method_name(args, kwds); \
} \
static const char method_name##_doc[]; \
#define KX_PYMETHOD_DOC_VARARGS(class_name, method_name) \
PyObject* Py##method_name(PyObject* args); \
static PyObject* sPy##method_name( PyObject* self, PyObject* args) { \
if(BGE_PROXY_REF(self)==NULL) { PyErr_SetString(PyExc_RuntimeError, #class_name "." #method_name "(...) - " BGE_PROXY_ERROR_MSG); return NULL; } \
return ((class_name*)BGE_PROXY_REF(self))->Py##method_name(args); \
}; \
static PyObject* \
sPy##method_name(PyObject* self, PyObject* args) { \
if(BGE_PROXY_REF(self)==NULL) { \
PyErr_SetString(PyExc_RuntimeError, \
#class_name "." #method_name "(...) - " \
BGE_PROXY_ERROR_MSG); \
return NULL; \
} \
return((class_name*)BGE_PROXY_REF(self))->Py##method_name(args); \
} \
static const char method_name##_doc[]; \
#define KX_PYMETHOD_DOC_O(class_name, method_name) \
PyObject* Py##method_name(PyObject* value); \
static PyObject* sPy##method_name( PyObject* self, PyObject* value) { \
if(BGE_PROXY_REF(self)==NULL) { PyErr_SetString(PyExc_RuntimeError, #class_name "." #method_name "(value) - " BGE_PROXY_ERROR_MSG); return NULL; } \
static PyObject* \
sPy##method_name(PyObject* self, PyObject* value) { \
if(BGE_PROXY_REF(self)==NULL) { \
PyErr_SetString(PyExc_RuntimeError, \
#class_name "." #method_name "(value) - " \
BGE_PROXY_ERROR_MSG); \
return NULL; \
} \
return ((class_name*)BGE_PROXY_REF(self))->Py##method_name(value); \
}; \
} \
static const char method_name##_doc[]; \
#define KX_PYMETHOD_DOC_NOARGS(class_name, method_name) \
PyObject* Py##method_name(); \
static PyObject* sPy##method_name( PyObject* self) { \
if(BGE_PROXY_REF(self)==NULL) { PyErr_SetString(PyExc_RuntimeError, #class_name "." #method_name "() - " BGE_PROXY_ERROR_MSG); return NULL; } \
static PyObject* \
sPy##method_name(PyObject* self) { \
if(BGE_PROXY_REF(self)==NULL) { \
PyErr_SetString(PyExc_RuntimeError, \
#class_name "." #method_name "() - " \
BGE_PROXY_ERROR_MSG); \
return NULL; \
} \
return ((class_name*)BGE_PROXY_REF(self))->Py##method_name(); \
}; \
} \
static const char method_name##_doc[]; \
@@ -290,7 +347,7 @@ enum KX_PYATTRIBUTE_TYPE {
KX_PYATTRIBUTE_TYPE_FUNCTION,
KX_PYATTRIBUTE_TYPE_VECTOR,
KX_PYATTRIBUTE_TYPE_FLAG,
KX_PYATTRIBUTE_TYPE_CHAR,
KX_PYATTRIBUTE_TYPE_CHAR
};
enum KX_PYATTRIBUTE_ACCESS {
@@ -480,22 +537,30 @@ typedef PyTypeObject * PyParentObject; // Define the PyParent Object
#ifdef WITH_CXX_GUARDEDALLOC
#define Py_Header \
public: \
void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE:PyObjectPlus"); } \
void operator delete( void *mem ) { MEM_freeN(mem); } \
public: \
void *operator new(size_t num_bytes) { \
return MEM_mallocN(num_bytes, "GE:PyObjectPlus"); \
} \
void operator delete( void *mem ) { \
MEM_freeN(mem); \
} \
#define Py_HeaderPtr \
public: \
void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE:PyObjectPlusPtr"); } \
void operator delete( void *mem ) { MEM_freeN(mem); } \
public: \
void *operator new(size_t num_bytes) { \
return MEM_mallocN(num_bytes, "GE:PyObjectPlusPtr"); \
} \
void operator delete( void *mem ) { \
MEM_freeN(mem); \
} \
#else // WITH_CXX_GUARDEDALLOC
#define Py_Header \
public: \
public: \
#define Py_HeaderPtr \
public: \
public: \
#endif // WITH_CXX_GUARDEDALLOC
@@ -515,7 +580,7 @@ typedef PyTypeObject * PyParentObject; // Define the PyParent Object
// possibility to use them at SCA_ILogicBrick, CValue and PyObjectPlus level.
class PyObjectPlus : public SG_QList
{ // The PyObjectPlus abstract class
Py_Header; // Always start with Py_Header
Py_Header // Always start with Py_Header
public:
PyObjectPlus();
@@ -580,6 +645,8 @@ public:
#ifdef WITH_PYTHON
PyObject *py_getattr_dict(PyObject *pydict, PyObject *tp_dict);
PyObject *PyUnicode_From_STR_String(const STR_String& str);
#endif
#endif // _adr_py_lib_h_
#endif // _PY_OBJECT_PLUS_H

View File

@@ -532,7 +532,7 @@ PyAttributeDef CValue::Attributes[] = {
PyObject * CValue::pyattr_get_name(void * self_v, const KX_PYATTRIBUTE_DEF * attrdef) {
CValue * self = static_cast<CValue *> (self_v);
return PyUnicode_FromString(self->GetName());
return PyUnicode_From_STR_String(self->GetName());
}
CValue* CValue::ConvertPythonToValue(PyObject* pyobj, const char *error_prefix)
@@ -596,22 +596,24 @@ CValue* CValue::ConvertPythonToValue(PyObject* pyobj, const char *error_prefix)
}
PyObject* CValue::ConvertKeysToPython( void )
PyObject* CValue::ConvertKeysToPython(void)
{
PyObject *pylist = PyList_New( 0 );
PyObject *pystr;
if (m_pNamedPropertyArray)
{
PyObject *pylist= PyList_New(m_pNamedPropertyArray->size());
Py_ssize_t i= 0;
std::map<STR_String,CValue*>::iterator it;
for (it= m_pNamedPropertyArray->begin(); (it != m_pNamedPropertyArray->end()); it++)
{
pystr = PyUnicode_FromString( (*it).first );
PyList_Append(pylist, pystr);
Py_DECREF( pystr );
}
PyList_SET_ITEM(pylist, i++, PyUnicode_From_STR_String((*it).first));
}
return pylist;
}
else {
return PyList_New(0);
}
}
#endif // WITH_PYTHON

View File

@@ -200,7 +200,7 @@ public:
class CValue : public PyObjectPlus
{
Py_Header;
Py_Header
public:
enum AllocationTYPE {
STACKVALUE = 0,
@@ -319,7 +319,7 @@ public:
virtual const STR_String & GetText() = 0;
virtual double GetNumber() = 0;
double* ZeroVector() { return m_sZeroVec; };
double* ZeroVector() { return m_sZeroVec; }
virtual double* GetVector3(bool bGetTransformedVec = false);
virtual STR_String& GetName() = 0; // Retrieve the name of the value
@@ -348,11 +348,11 @@ public:
virtual bool IsSelected() { return m_ValFlags.Selected; }
inline bool IsReleaseRequested() { return m_ValFlags.ReleaseRequested; }
virtual bool IsVisible() { return m_ValFlags.Visible;}
virtual void SetCustomFlag1(bool bCustomFlag) { m_ValFlags.CustomFlag1 = bCustomFlag;};
virtual bool IsCustomFlag1() { return m_ValFlags.CustomFlag1;};
virtual void SetCustomFlag1(bool bCustomFlag) { m_ValFlags.CustomFlag1 = bCustomFlag;}
virtual bool IsCustomFlag1() { return m_ValFlags.CustomFlag1;}
virtual void SetCustomFlag2(bool bCustomFlag) { m_ValFlags.CustomFlag2 = bCustomFlag;};
virtual bool IsCustomFlag2() { return m_ValFlags.CustomFlag2;};
virtual void SetCustomFlag2(bool bCustomFlag) { m_ValFlags.CustomFlag2 = bCustomFlag;}
virtual bool IsCustomFlag2() { return m_ValFlags.CustomFlag2;}
protected:
virtual void DisableRefCount(); // Disable reference counting for this value
@@ -381,15 +381,20 @@ private:
//
#define PLUGIN_DECLARE_SERIAL(class_name, root_base_class_name) \
public: \
virtual root_base_class_name * Copy() { return new class_name; } \
virtual bool EdSerialize(CompressorArchive& arch,class CFactoryManager* facmgr,bool bIsStoring); \
virtual bool EdIdSerialize(CompressorArchive& arch,class CFactoryManager* facmgr,bool bIsStoring) \
{ \
virtual root_base_class_name *Copy() { \
return new class_name; \
} \
virtual bool EdSerialize(CompressorArchive& arch, \
class CFactoryManager* facmgr, \
bool bIsStoring); \
virtual bool EdIdSerialize(CompressorArchive& arch, \
class CFactoryManager* facmgr, \
bool bIsStoring) \
{ \
if (bIsStoring) \
arch.StoreString(#class_name); \
\
return false; \
} \
} \
////////////////////////////////////////////////////////////////////////////////
@@ -424,7 +429,7 @@ public:
//if (namefromprop.Length() > 0)
// return namefromprop;
return m_strNewName;
}; // name of Value
} // name of Value
protected:
STR_String m_strNewName; // Identification

View File

@@ -37,7 +37,7 @@
class SCA_2DFilterActuator : public SCA_IActuator
{
Py_Header;
Py_Header
private:
vector<STR_String> m_propNames;

View File

@@ -39,7 +39,7 @@
class SCA_ANDController : public SCA_IController
{
Py_Header;
Py_Header
//virtual void Trigger(class SCA_LogicManager* logicmgr);
public:
SCA_ANDController(SCA_IObject* gameobj);

View File

@@ -40,7 +40,7 @@
class SCA_ActuatorSensor : public SCA_ISensor
{
Py_Header;
Py_Header
STR_String m_checkactname;
bool m_lastresult;
bool m_midresult;

View File

@@ -38,7 +38,7 @@
class SCA_AlwaysSensor : public SCA_ISensor
{
Py_Header;
Py_Header
bool m_alwaysresult;
public:
SCA_AlwaysSensor(class SCA_EventManager* eventmgr,

View File

@@ -38,7 +38,7 @@
class SCA_DelaySensor : public SCA_ISensor
{
Py_Header;
Py_Header
bool m_lastResult;
bool m_repeat;
int m_delay;

View File

@@ -39,7 +39,7 @@
class SCA_ExpressionController : public SCA_IController
{
// Py_Header;
// Py_Header
STR_String m_exprText;
CExpression* m_exprCache;

View File

@@ -42,7 +42,7 @@
*/
class SCA_IController : public SCA_ILogicBrick
{
Py_Header;
Py_Header
protected:
std::vector<class SCA_ISensor*> m_linkedsensors;
std::vector<class SCA_IActuator*> m_linkedactuators;

View File

@@ -43,7 +43,7 @@ class SCA_IScene;
class SCA_ILogicBrick : public CValue
{
Py_Header;
Py_Header
protected:
SCA_IObject* m_gameobj;
int m_Execute_Priority;

View File

@@ -54,7 +54,7 @@ typedef std::vector<SCA_IObject *> SCA_ObjectList;
class SCA_IObject : public CValue
{
Py_Header;
Py_Header
protected:
friend class KX_StateActuator;

View File

@@ -47,7 +47,7 @@
*/
class SCA_ISensor : public SCA_ILogicBrick
{
Py_Header;
Py_Header
protected:
class SCA_EventManager* m_eventmgr;

View File

@@ -38,7 +38,7 @@
class SCA_JoystickSensor :public SCA_ISensor
{
Py_Header;
Py_Header
/**
* Axis 1-JOYAXIS_MAX, MUST be followed by m_axisf
@@ -128,8 +128,8 @@ public:
/* --------------------------------------------------------------------- */
/* Joystick Index */
KX_PYMETHOD_DOC_NOARGS(SCA_JoystickSensor,GetButtonActiveList);
KX_PYMETHOD_DOC_VARARGS(SCA_JoystickSensor,GetButtonStatus);
KX_PYMETHOD_DOC_NOARGS(SCA_JoystickSensor,GetButtonActiveList)
KX_PYMETHOD_DOC_VARARGS(SCA_JoystickSensor,GetButtonStatus)
static PyObject* pyattr_get_axis_values(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
static PyObject* pyattr_get_axis_single(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);

View File

@@ -44,7 +44,7 @@
* exclusive. */
class SCA_KeyboardSensor : public SCA_ISensor
{
Py_Header;
Py_Header
/**
* the key this sensor is sensing for

View File

@@ -39,7 +39,7 @@
class SCA_MouseSensor : public SCA_ISensor
{
Py_Header;
Py_Header
/**
* Use SCA_IInputDevice values to encode the mouse mode for now.

View File

@@ -36,7 +36,7 @@
class SCA_NANDController : public SCA_IController
{
Py_Header;
Py_Header
//virtual void Trigger(class SCA_LogicManager* logicmgr);
public:
SCA_NANDController(SCA_IObject* gameobj);

View File

@@ -36,7 +36,7 @@
class SCA_NORController : public SCA_IController
{
Py_Header;
Py_Header
//virtual void Trigger(class SCA_LogicManager* logicmgr);
public:
SCA_NORController(SCA_IObject* gameobj);

View File

@@ -36,7 +36,7 @@
class SCA_ORController : public SCA_IController
{
Py_Header;
Py_Header
//virtual void Trigger(class SCA_LogicManager* logicmgr);
public:
SCA_ORController(SCA_IObject* gameobj);

View File

@@ -36,7 +36,7 @@
class SCA_PropertyActuator : public SCA_IActuator
{
Py_Header;
Py_Header
enum KX_ACT_PROP_MODE {
KX_ACT_PROP_NODEF = 0,

View File

@@ -37,7 +37,7 @@
class SCA_PropertySensor : public SCA_ISensor
{
Py_Header;
Py_Header
//class CExpression* m_rightexpr;
int m_checktype;
STR_String m_checkpropval;

View File

@@ -164,7 +164,7 @@ void SCA_PythonController::SetNamespace(PyObject* pythondictionary)
/* Without __file__ set the sys.argv[0] is used for the filename
* which ends up with lines from the blender binary being printed in the console */
PyDict_SetItemString(m_pythondictionary, "__file__", PyUnicode_FromString(m_scriptName.Ptr()));
PyDict_SetItemString(m_pythondictionary, "__file__", PyUnicode_From_STR_String(m_scriptName));
}
#endif
@@ -490,7 +490,7 @@ PyObject* SCA_PythonController::pyattr_get_script(void *self_v, const KX_PYATTRI
// static_cast<void *>(dynamic_cast<Derived *>(obj)) - static_cast<void *>(obj)
SCA_PythonController* self= static_cast<SCA_PythonController*>(self_v);
return PyUnicode_FromString(self->m_scriptText);
return PyUnicode_From_STR_String(self->m_scriptText);
}

View File

@@ -42,7 +42,7 @@
class SCA_IObject;
class SCA_PythonController : public SCA_IController
{
Py_Header;
Py_Header
#ifdef WITH_PYTHON
struct _object * m_bytecode; /* SCA_PYEXEC_SCRIPT only */
PyObject* m_function; /* SCA_PYEXEC_MODULE only */

View File

@@ -31,7 +31,7 @@
class SCA_PythonKeyboard : public PyObjectPlus
{
Py_Header;
Py_Header
private:
class SCA_IInputDevice *m_keyboard;
#ifdef WITH_PYTHON

View File

@@ -31,7 +31,7 @@
class SCA_PythonMouse : public PyObjectPlus
{
Py_Header;
Py_Header
private:
class SCA_IInputDevice *m_mouse;
class RAS_ICanvas *m_canvas;

View File

@@ -38,7 +38,7 @@
class SCA_RandomActuator : public SCA_IActuator
{
Py_Header;
Py_Header
/** Property to assign to */
STR_String m_propname;

View File

@@ -39,7 +39,7 @@
class SCA_RandomSensor : public SCA_ISensor
{
Py_Header;
Py_Header
unsigned int m_currentDraw;
int m_iteration;

View File

@@ -36,7 +36,7 @@
class SCA_XNORController : public SCA_IController
{
Py_Header;
Py_Header
//virtual void Trigger(class SCA_LogicManager* logicmgr);
public:
SCA_XNORController(SCA_IObject* gameobj);

View File

@@ -36,7 +36,7 @@
class SCA_XORController : public SCA_IController
{
Py_Header;
Py_Header
//virtual void Trigger(class SCA_LogicManager* logicmgr);
public:
SCA_XORController(SCA_IObject* gameobj);

View File

@@ -116,7 +116,7 @@ public:
*/
class BL_Shader : public PyObjectPlus
{
Py_Header;
Py_Header
private:
typedef std::vector<BL_Uniform*> BL_UniformVec;
typedef std::vector<BL_DefUniform*> BL_UniformVecDef;

View File

@@ -39,7 +39,7 @@
class KX_NetworkMessageActuator : public SCA_IActuator
{
Py_Header;
Py_Header
bool m_lastEvent;
class NG_NetworkScene* m_networkscene; // needed for replication
STR_String m_toPropName;

View File

@@ -40,7 +40,7 @@ class NG_NetworkScene;
class KX_NetworkMessageSensor : public SCA_ISensor
{
// note: Py_Header MUST BE the first listed here
Py_Header;
Py_Header
NG_NetworkScene *m_NetworkScene;
// The subject we filter on.

View File

@@ -40,7 +40,7 @@ struct bConstraint;
class KX_ArmatureSensor : public SCA_ISensor
{
Py_Header;
Py_Header
//class CExpression* m_rightexpr;
protected:

View File

@@ -32,7 +32,7 @@ class KX_Scene;
class KX_BlenderMaterial : public PyObjectPlus, public RAS_IPolyMaterial
{
Py_Header;
Py_Header
public:
// --------------------------------
KX_BlenderMaterial();

View File

@@ -50,7 +50,7 @@ bool ConvertPythonToCamera(PyObject * value, KX_Camera **object, bool py_none_ok
class KX_Camera : public KX_GameObject
{
Py_Header;
Py_Header
protected:
friend class KX_Scene;
/** Camera parameters (clips distances, focal length). These

View File

@@ -49,7 +49,7 @@
class KX_CameraActuator : public SCA_IActuator
{
Py_Header;
Py_Header
private :
/** Object that will be tracked. */
SCA_IObject *m_ob;

View File

@@ -42,7 +42,7 @@ class KX_GameObject;
class KX_ConstraintActuator : public SCA_IActuator
{
Py_Header;
Py_Header
protected:
// Damp time (int),
int m_posDampTime;

View File

@@ -37,7 +37,7 @@
class KX_ConstraintWrapper : public PyObjectPlus
{
Py_Header;
Py_Header
public:
KX_ConstraintWrapper(PHY_ConstraintType ctype,int constraintId,class PHY_IPhysicsEnvironment* physenv);
virtual ~KX_ConstraintWrapper ();

View File

@@ -38,7 +38,7 @@
class KX_FontObject : public KX_GameObject
{
public:
Py_Header;
Py_Header
KX_FontObject( void* sgReplicationInfo,
SG_Callbacks callbacks,
RAS_IRenderTools* rendertools,

View File

@@ -40,7 +40,7 @@
class KX_GameActuator : public SCA_IActuator
{
Py_Header;
Py_Header
protected:
int m_mode;
bool m_restart;

View File

@@ -1880,7 +1880,7 @@ PyTypeObject KX_GameObject::Type = {
PyObject* KX_GameObject::pyattr_get_name(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
{
KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
return PyUnicode_FromString(self->GetName().ReadPtr());
return PyUnicode_From_STR_String(self->GetName());
}
PyObject* KX_GameObject::pyattr_get_parent(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)

View File

@@ -80,7 +80,7 @@ void KX_GameObject_Mathutils_Callback_Init(void);
*/
class KX_GameObject : public SCA_IObject
{
Py_Header;
Py_Header
protected:
bool m_bDyna;

View File

@@ -37,7 +37,7 @@
class KX_IpoActuator : public SCA_IActuator
{
Py_Header;
Py_Header
private:
/** Computes the IPO start time from the current time
and the current frame. */

View File

@@ -44,7 +44,7 @@ class MT_Transform;
class KX_LightObject : public KX_GameObject
{
Py_Header;
Py_Header
protected:
RAS_LightObject m_lightobj;
class RAS_IRenderTools* m_rendertools; //needed for registering and replication of lightobj

View File

@@ -129,7 +129,7 @@ PyObject* KX_MeshProxy::PyGetMaterialName(PyObject* args, PyObject* kwds)
return NULL;
}
return PyUnicode_FromString(matname.Ptr());
return PyUnicode_From_STR_String(matname);
}
@@ -147,7 +147,7 @@ PyObject* KX_MeshProxy::PyGetTextureName(PyObject* args, PyObject* kwds)
return NULL;
}
return PyUnicode_FromString(matname.Ptr());
return PyUnicode_From_STR_String(matname);
}

View File

@@ -41,7 +41,7 @@ bool ConvertPythonToMesh(PyObject * value, class RAS_MeshObject **object, bool p
class KX_MeshProxy : public CValue
{
Py_Header;
Py_Header
class RAS_MeshObject* m_meshobj;
public:

View File

@@ -47,7 +47,7 @@ class KX_RayCast;
class KX_MouseFocusSensor : public SCA_MouseSensor
{
Py_Header;
Py_Header
public:

View File

@@ -36,7 +36,7 @@ class MT_Transform;
class KX_NavMeshObject: public KX_GameObject
{
Py_Header;
Py_Header
protected:
dtStatNavMesh* m_navMesh;

View File

@@ -41,7 +41,7 @@ struct PHY_CollData;
class KX_NearSensor : public KX_TouchSensor
{
Py_Header;
Py_Header
protected:
float m_Margin;
float m_ResetMargin;

View File

@@ -80,7 +80,7 @@ struct KX_LocalFlags {
class KX_ObjectActuator : public SCA_IActuator
{
Py_Header;
Py_Header
MT_Vector3 m_force;
MT_Vector3 m_torque;

View File

@@ -41,7 +41,7 @@
class KX_ParentActuator : public SCA_IActuator
{
Py_Header;
Py_Header
/** Mode */
int m_mode;

View File

@@ -37,7 +37,7 @@
class KX_PhysicsObjectWrapper : public PyObjectPlus
{
Py_Header;
Py_Header
public:
KX_PhysicsObjectWrapper(class PHY_IPhysicsController* ctrl,class PHY_IPhysicsEnvironment* physenv);
virtual ~KX_PhysicsObjectWrapper();

View File

@@ -216,13 +216,13 @@ KX_PYMETHODDEF_DOC_NOARGS(KX_PolyProxy, isCollider,
KX_PYMETHODDEF_DOC_NOARGS(KX_PolyProxy, getMaterialName,
"getMaterialName() : returns the polygon material name, \"NoMaterial\" if no material\n")
{
return PyUnicode_FromString(m_polygon->GetMaterial()->GetPolyMaterial()->GetMaterialName());
return PyUnicode_From_STR_String(m_polygon->GetMaterial()->GetPolyMaterial()->GetMaterialName());
}
KX_PYMETHODDEF_DOC_NOARGS(KX_PolyProxy, getTextureName,
"getTexturelName() : returns the polygon texture name, \"NULL\" if no texture\n")
{
return PyUnicode_FromString(m_polygon->GetMaterial()->GetPolyMaterial()->GetTextureName());
return PyUnicode_From_STR_String(m_polygon->GetMaterial()->GetPolyMaterial()->GetTextureName());
}
KX_PYMETHODDEF_DOC(KX_PolyProxy, getVertexIndex,

View File

@@ -38,7 +38,7 @@
class KX_PolyProxy : public CValue
{
Py_Header;
Py_Header
protected:
class RAS_Polygon* m_polygon;
class RAS_MeshObject* m_mesh;

View File

@@ -346,13 +346,13 @@ KX_PYMETHODDEF_DOC(KX_PolygonMaterial, activate, "activate(rasty, cachingInfo)")
PyObject* KX_PolygonMaterial::pyattr_get_texture(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
{
KX_PolygonMaterial* self= static_cast<KX_PolygonMaterial*>(self_v);
return PyUnicode_FromString(self->m_texturename.ReadPtr());
return PyUnicode_From_STR_String(self->m_texturename);
}
PyObject* KX_PolygonMaterial::pyattr_get_material(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
{
KX_PolygonMaterial* self= static_cast<KX_PolygonMaterial*>(self_v);
return PyUnicode_FromString(self->m_materialname.ReadPtr());
return PyUnicode_From_STR_String(self->m_materialname);
}
/* this does not seem useful */

View File

@@ -55,7 +55,7 @@ struct Image;
*/
class KX_PolygonMaterial : public PyObjectPlus, public RAS_IPolyMaterial
{
Py_Header;
Py_Header
private:
/** Blender texture face structure. */
MTFace* m_tface;

View File

@@ -41,7 +41,7 @@
class KX_RadarSensor : public KX_NearSensor
{
protected:
Py_Header;
Py_Header
float m_coneradius;

View File

@@ -43,7 +43,7 @@ class KX_RayCast;
class KX_RaySensor : public SCA_ISensor
{
Py_Header;
Py_Header
STR_String m_propertyname;
bool m_bFindMaterial;
bool m_bXRay;

View File

@@ -45,7 +45,7 @@ class SCA_IScene;
class KX_SCA_AddObjectActuator : public SCA_IActuator
{
Py_Header;
Py_Header
/// Time field: lifetime of the new object
int m_timeProp;

View File

@@ -42,7 +42,7 @@
class KX_SCA_DynamicActuator : public SCA_IActuator
{
Py_Header;
Py_Header
// dynamics operation to apply to the game object
short m_dyn_operation;

View File

@@ -41,7 +41,7 @@ class SCA_IScene;
class KX_SCA_EndObjectActuator : public SCA_IActuator
{
Py_Header;
Py_Header
SCA_IScene* m_scene;
public:

View File

@@ -44,7 +44,7 @@
class KX_SCA_ReplaceMeshActuator : public SCA_IActuator
{
Py_Header;
Py_Header
// mesh reference (mesh to replace)
RAS_MeshObject* m_mesh;

View File

@@ -2117,7 +2117,7 @@ PySequenceMethods KX_Scene::Sequence = {
PyObject* KX_Scene::pyattr_get_name(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
{
KX_Scene* self= static_cast<KX_Scene*>(self_v);
return PyUnicode_FromString(self->GetName().ReadPtr());
return PyUnicode_From_STR_String(self->GetName());
}
PyObject* KX_Scene::pyattr_get_objects(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)

View File

@@ -101,7 +101,7 @@ class KX_ObstacleSimulation;
* */
class KX_Scene : public PyObjectPlus, public SCA_IScene
{
Py_Header;
Py_Header
#ifdef WITH_PYTHON
PyObject* m_attr_dict;

View File

@@ -38,7 +38,7 @@
class KX_SceneActuator : public SCA_IActuator
{
Py_Header;
Py_Header
int m_mode;
// (restart) has become a toggle internally... not in the interface though

View File

@@ -57,7 +57,7 @@ typedef struct KX_3DSoundSettings
class KX_SoundActuator : public SCA_IActuator
{
Py_Header;
Py_Header
bool m_isplaying;
AUD_Reference<AUD_IFactory> m_sound;
float m_volume;

View File

@@ -44,7 +44,7 @@
*/
class KX_StateActuator : public SCA_IActuator
{
Py_Header;
Py_Header
/** Make visible? */
enum {

View File

@@ -47,7 +47,7 @@ const int MAX_PATH_LENGTH = 128;
class KX_SteeringActuator : public SCA_IActuator
{
Py_Header;
Py_Header
/** Target object */
KX_GameObject *m_target;

View File

@@ -51,7 +51,7 @@ class KX_TouchEventManager;
class KX_TouchSensor : public SCA_ISensor
{
protected:
Py_Header;
Py_Header
/**
* The sensor should only look for objects with this property.

View File

@@ -40,7 +40,7 @@
class KX_TrackToActuator : public SCA_IActuator
{
Py_Header;
Py_Header
// Object reference. Actually, we use the object's 'life'
SCA_IObject* m_object;
// 3d toggle

View File

@@ -16,7 +16,7 @@ class PHY_IMotionState;
///Python interface to physics vehicles (primarily 4-wheel cars and 2wheel bikes)
class KX_VehicleWrapper : public PyObjectPlus
{
Py_Header;
Py_Header
std::vector<PHY_IMotionState*> m_motionStates;

View File

@@ -38,7 +38,7 @@
class KX_VertexProxy : public CValue
{
Py_Header;
Py_Header
protected:
class RAS_TexVert* m_vertex;

View File

@@ -37,7 +37,7 @@
class KX_VisibilityActuator : public SCA_IActuator
{
Py_Header;
Py_Header
/** Make visible? */
bool m_visible;