Commit d1ec493a authored by Feng Xiao's avatar Feng Xiao

Fix Python C++ implementation build issues:

  1. Haven't included the include path for "config.h".
  2. Use of C++11 auto keyword.
parent 7d2db50b
...@@ -247,8 +247,10 @@ PyDescriptorPool* NewDescriptorPool() { ...@@ -247,8 +247,10 @@ PyDescriptorPool* NewDescriptorPool() {
} }
static void Dealloc(PyDescriptorPool* self) { static void Dealloc(PyDescriptorPool* self) {
for (auto it : (*self->classes_by_descriptor)) { typedef PyDescriptorPool::ClassesByMessageMap::iterator iterator;
Py_DECREF(it.second); for (iterator it = self->classes_by_descriptor->begin();
it != self->classes_by_descriptor->end(); ++it) {
Py_DECREF(it->second);
} }
delete self->classes_by_descriptor; delete self->classes_by_descriptor;
Py_TYPE(self)->tp_free(reinterpret_cast<PyObject*>(self)); Py_TYPE(self)->tp_free(reinterpret_cast<PyObject*>(self));
...@@ -300,7 +302,8 @@ const google::protobuf::Descriptor* RegisterMessageClass( ...@@ -300,7 +302,8 @@ const google::protobuf::Descriptor* RegisterMessageClass(
return NULL; return NULL;
} }
Py_INCREF(message_class); 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)); make_pair(message_descriptor, message_class));
if (!ret.second) { if (!ret.second) {
// Update case: DECREF the previous value. // Update case: DECREF the previous value.
...@@ -323,7 +326,8 @@ const google::protobuf::Descriptor* RegisterMessageClass( ...@@ -323,7 +326,8 @@ const google::protobuf::Descriptor* RegisterMessageClass(
// Retrieve the message class added to our database. // Retrieve the message class added to our database.
PyObject *GetMessageClass(PyDescriptorPool* self, PyObject *GetMessageClass(PyDescriptorPool* self,
const Descriptor *message_descriptor) { 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()) { if (ret == self->classes_by_descriptor->end()) {
PyErr_Format(PyExc_TypeError, "No message class registered for '%s'", PyErr_Format(PyExc_TypeError, "No message class registered for '%s'",
message_descriptor->full_name().c_str()); message_descriptor->full_name().c_str());
......
...@@ -157,7 +157,7 @@ if __name__ == '__main__': ...@@ -157,7 +157,7 @@ if __name__ == '__main__':
"google/protobuf/pyext/repeated_scalar_container.cc", "google/protobuf/pyext/repeated_scalar_container.cc",
"google/protobuf/pyext/repeated_composite_container.cc" ], "google/protobuf/pyext/repeated_composite_container.cc" ],
define_macros=[('GOOGLE_PROTOBUF_HAS_ONEOF', '1')], define_macros=[('GOOGLE_PROTOBUF_HAS_ONEOF', '1')],
include_dirs = [ ".", "../src"], include_dirs = [ ".", "..", "../src"],
libraries = [ "protobuf" ], libraries = [ "protobuf" ],
library_dirs = [ '../src/.libs' ], library_dirs = [ '../src/.libs' ],
)) ))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment