diff options
author | Campbell Barton <ideasman42@gmail.com> | 2011-11-03 18:09:18 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2011-11-03 18:09:18 +0400 |
commit | 665f602f152984f5a6f4ea05a2a90382acbf700a (patch) | |
tree | a7fa9484a60ac20878e2687995d2fd955958a7f6 /source/gameengine/Expressions | |
parent | d210703bcaf89014495f761797ae50f362394697 (diff) |
python string conversion
- use _PyUnicode_AsStringAndSize where possible
- use %R for PyErr_Format(...) rather then running repr on the object explicitly
- use const char
Diffstat (limited to 'source/gameengine/Expressions')
-rw-r--r-- | source/gameengine/Expressions/ListValue.cpp | 7 | ||||
-rw-r--r-- | source/gameengine/Expressions/PyObjectPlus.cpp | 10 | ||||
-rw-r--r-- | source/gameengine/Expressions/StringValue.h | 5 |
3 files changed, 9 insertions, 13 deletions
diff --git a/source/gameengine/Expressions/ListValue.cpp b/source/gameengine/Expressions/ListValue.cpp index ade54f6d924..cdd87235fd2 100644 --- a/source/gameengine/Expressions/ListValue.cpp +++ b/source/gameengine/Expressions/ListValue.cpp @@ -339,10 +339,9 @@ PyObject* listvalue_mapping_subscript(PyObject* self, PyObject* pyindex) int index = PyLong_AsSsize_t(pyindex); return listvalue_buffer_item(self, index); /* wont add a ref */ } - - PyObject *pyindex_str = PyObject_Repr(pyindex); /* new ref */ - PyErr_Format(PyExc_KeyError, "CList[key]: '%s' key not in list", _PyUnicode_AsString(pyindex_str)); - Py_DECREF(pyindex_str); + + PyErr_Format(PyExc_KeyError, + "CList[key]: '%R' key not in list", pyindex); return NULL; } diff --git a/source/gameengine/Expressions/PyObjectPlus.cpp b/source/gameengine/Expressions/PyObjectPlus.cpp index 33aa6b8d177..b05b7be0877 100644 --- a/source/gameengine/Expressions/PyObjectPlus.cpp +++ b/source/gameengine/Expressions/PyObjectPlus.cpp @@ -1012,8 +1012,8 @@ int PyObjectPlus::py_set_attrdef(PyObject *self_py, PyObject *value, const PyAtt { if (PyUnicode_Check(value)) { - Py_ssize_t val_len; - char *val = _PyUnicode_AsStringAndSize(value, &val_len); + Py_ssize_t val_size; + const char *val = _PyUnicode_AsStringAndSize(value, &val_size); strncpy(ptr, val, attrdef->m_size); ptr[attrdef->m_size-1] = 0; } @@ -1030,7 +1030,7 @@ int PyObjectPlus::py_set_attrdef(PyObject *self_py, PyObject *value, const PyAtt if (PyUnicode_Check(value)) { Py_ssize_t val_len; - char *val = _PyUnicode_AsStringAndSize(value, &val_len); + const char *val = _PyUnicode_AsStringAndSize(value, &val_len); /* XXX, should be 'const' but we do a silly trick to have a shorter string */ if (attrdef->m_clamp) { if (val_len < attrdef->m_imin) @@ -1042,10 +1042,8 @@ int PyObjectPlus::py_set_attrdef(PyObject *self_py, PyObject *value, const PyAtt else if (val_len > attrdef->m_imax) { // trim the string - char c = val[attrdef->m_imax]; - val[attrdef->m_imax] = 0; *var = val; - val[attrdef->m_imax] = c; + var->SetLength(attrdef->m_imax); break; } } else if (val_len < attrdef->m_imin || val_len > attrdef->m_imax) diff --git a/source/gameengine/Expressions/StringValue.h b/source/gameengine/Expressions/StringValue.h index d0f74a6eed8..e5a892ff82d 100644 --- a/source/gameengine/Expressions/StringValue.h +++ b/source/gameengine/Expressions/StringValue.h @@ -31,8 +31,7 @@ public: CStringValue(); CStringValue (const char *txt, const char *name , AllocationTYPE alloctype = CValue::HEAPVALUE); - virtual ~CStringValue() { - }; + virtual ~CStringValue() {} /// CValue implementation virtual bool IsEqual(const STR_String & other); virtual const STR_String & GetText(); @@ -40,7 +39,7 @@ public: virtual CValue* Calc(VALUE_OPERATOR op, CValue *val); virtual CValue* CalcFinal(VALUE_DATA_TYPE dtype, VALUE_OPERATOR op, CValue *val); - virtual void SetValue(CValue* newval) { m_strString = newval->GetText(); SetModified(true); }; + virtual void SetValue(CValue* newval) { m_strString = newval->GetText(); SetModified(true); } virtual CValue* GetReplica(); #ifdef WITH_PYTHON virtual PyObject* ConvertValueToPython() { |