Преглед изворни кода

Merge pull request #105 from xfxyjwf/fix_92

Fix Python C++ implementation build issues
Feng Xiao пре 10 година
родитељ
комит
9e9ca4b60a
2 измењених фајлова са 9 додато и 5 уклоњено
  1. 8 4
      python/google/protobuf/pyext/descriptor.cc
  2. 1 1
      python/setup.py

+ 8 - 4
python/google/protobuf/pyext/descriptor.cc

@@ -247,8 +247,10 @@ PyDescriptorPool* NewDescriptorPool() {
 }
 
 static void Dealloc(PyDescriptorPool* self) {
-  for (auto it : (*self->classes_by_descriptor)) {
-    Py_DECREF(it.second);
+  typedef PyDescriptorPool::ClassesByMessageMap::iterator iterator;
+  for (iterator it = self->classes_by_descriptor->begin();
+       it != self->classes_by_descriptor->end(); ++it) {
+    Py_DECREF(it->second);
   }
   delete self->classes_by_descriptor;
   Py_TYPE(self)->tp_free(reinterpret_cast<PyObject*>(self));
@@ -300,7 +302,8 @@ const google::protobuf::Descriptor* RegisterMessageClass(
     return NULL;
   }
   Py_INCREF(message_class);
-  auto ret = self->classes_by_descriptor->insert(
+  typedef PyDescriptorPool::ClassesByMessageMap::iterator iterator;
+  std::pair<iterator, bool> ret = self->classes_by_descriptor->insert(
       make_pair(message_descriptor, message_class));
   if (!ret.second) {
     // Update case: DECREF the previous value.
@@ -323,7 +326,8 @@ const google::protobuf::Descriptor* RegisterMessageClass(
 // Retrieve the message class added to our database.
 PyObject *GetMessageClass(PyDescriptorPool* self,
                           const Descriptor *message_descriptor) {
-  auto ret = self->classes_by_descriptor->find(message_descriptor);
+  typedef PyDescriptorPool::ClassesByMessageMap::iterator iterator;
+  iterator ret = self->classes_by_descriptor->find(message_descriptor);
   if (ret == self->classes_by_descriptor->end()) {
     PyErr_Format(PyExc_TypeError, "No message class registered for '%s'",
                  message_descriptor->full_name().c_str());

+ 1 - 1
python/setup.py

@@ -157,7 +157,7 @@ if __name__ == '__main__':
           "google/protobuf/pyext/repeated_scalar_container.cc",
           "google/protobuf/pyext/repeated_composite_container.cc" ],
         define_macros=[('GOOGLE_PROTOBUF_HAS_ONEOF', '1')],
-        include_dirs = [ ".", "../src"],
+        include_dirs = [ ".", "..", "../src"],
         libraries = [ "protobuf" ],
         library_dirs = [ '../src/.libs' ],
         ))