Merge pull request #105 from xfxyjwf/fix_92
Fix Python C++ implementation build issues
This commit is contained in:
commit
9e9ca4b60a
@ -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(
|
|||||||
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(
|
|||||||
// 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__':
|
|||||||
"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' ],
|
||||||
))
|
))
|
||||||
|
Loading…
Reference in New Issue
Block a user