소스 검색

gobj: remove use of PY_MAJOR_VERSION in internalName.h

We should not use this symbol in the interrogated headers as it means we cannot reuse the output of interrogate with different versions of Python.
rdb 7 년 전
부모
커밋
f43bd1a409
3개의 변경된 파일14개의 추가작업 그리고 12개의 파일을 삭제
  1. 1 5
      panda/src/gobj/internalName.h
  2. 12 2
      panda/src/gobj/internalName_ext.cxx
  3. 1 5
      panda/src/gobj/internalName_ext.h

+ 1 - 5
panda/src/gobj/internalName.h

@@ -96,11 +96,7 @@ PUBLISHED:
 #ifdef HAVE_PYTHON
   // These versions are exposed to Python, which have additional logic to map
   // from Python interned strings.
-#if PY_MAJOR_VERSION >= 3
-  EXTENSION(static PT(InternalName) make(PyUnicodeObject *str));
-#else
-  EXTENSION(static PT(InternalName) make(PyStringObject *str));
-#endif
+  EXTENSION(static PT(InternalName) make(PyObject *str));
 #endif
 
 public:

+ 12 - 2
panda/src/gobj/internalName_ext.cxx

@@ -24,7 +24,12 @@ using std::string;
  */
 #if PY_MAJOR_VERSION >= 3
 PT(InternalName) Extension<InternalName>::
-make(PyUnicodeObject *str) {
+make(PyObject *str) {
+  if (!PyUnicode_Check(str)) {
+    Dtool_Raise_ArgTypeError(str, 0, "InternalName.make", "str");
+    return nullptr;
+  }
+
   if (!PyUnicode_CHECK_INTERNED(str)) {
     // Not an interned string; don't bother.
     Py_ssize_t len = 0;
@@ -50,7 +55,12 @@ make(PyUnicodeObject *str) {
 
 #else
 PT(InternalName) Extension<InternalName>::
-make(PyStringObject *str) {
+make(PyObject *str) {
+  if (!PyString_Check(str)) {
+    Dtool_Raise_ArgTypeError(str, 0, "InternalName.make", "str");
+    return nullptr;
+  }
+
   if (!PyString_CHECK_INTERNED(str)) {
     // Not an interned string; don't bother.
     string name(PyString_AS_STRING(str), PyString_GET_SIZE(str));

+ 1 - 5
panda/src/gobj/internalName_ext.h

@@ -29,11 +29,7 @@
 template<>
 class Extension<InternalName> : public ExtensionBase<InternalName> {
 public:
-#if PY_MAJOR_VERSION >= 3
-  static PT(InternalName) make(PyUnicodeObject *str);
-#else
-  static PT(InternalName) make(PyStringObject *str);
-#endif
+  static PT(InternalName) make(PyObject *str);
 };
 
 #endif  // HAVE_PYTHON