| Index: third_party/protobuf/python/google/protobuf/pyext/extension_dict.cc
|
| diff --git a/third_party/protobuf/python/google/protobuf/pyext/extension_dict.cc b/third_party/protobuf/python/google/protobuf/pyext/extension_dict.cc
|
| index 21bbb8c2b1d3d7e0f2073f5bf3b4e072716fa37f..dbb7bca06d35b85b327ccc9561b4c55b93e8aa22 100644
|
| --- a/third_party/protobuf/python/google/protobuf/pyext/extension_dict.cc
|
| +++ b/third_party/protobuf/python/google/protobuf/pyext/extension_dict.cc
|
| @@ -39,8 +39,8 @@
|
| #include <google/protobuf/dynamic_message.h>
|
| #include <google/protobuf/message.h>
|
| #include <google/protobuf/pyext/descriptor.h>
|
| -#include <google/protobuf/pyext/descriptor_pool.h>
|
| #include <google/protobuf/pyext/message.h>
|
| +#include <google/protobuf/pyext/message_factory.h>
|
| #include <google/protobuf/pyext/repeated_composite_container.h>
|
| #include <google/protobuf/pyext/repeated_scalar_container.h>
|
| #include <google/protobuf/pyext/scoped_pyobject_ptr.h>
|
| @@ -60,35 +60,6 @@ PyObject* len(ExtensionDict* self) {
|
| #endif
|
| }
|
|
|
| -// TODO(tibell): Use VisitCompositeField.
|
| -int ReleaseExtension(ExtensionDict* self,
|
| - PyObject* extension,
|
| - const FieldDescriptor* descriptor) {
|
| - if (descriptor->label() == FieldDescriptor::LABEL_REPEATED) {
|
| - if (descriptor->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE) {
|
| - if (repeated_composite_container::Release(
|
| - reinterpret_cast<RepeatedCompositeContainer*>(
|
| - extension)) < 0) {
|
| - return -1;
|
| - }
|
| - } else {
|
| - if (repeated_scalar_container::Release(
|
| - reinterpret_cast<RepeatedScalarContainer*>(
|
| - extension)) < 0) {
|
| - return -1;
|
| - }
|
| - }
|
| - } else if (descriptor->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE) {
|
| - if (cmessage::ReleaseSubMessage(
|
| - self->parent, descriptor,
|
| - reinterpret_cast<CMessage*>(extension)) < 0) {
|
| - return -1;
|
| - }
|
| - }
|
| -
|
| - return 0;
|
| -}
|
| -
|
| PyObject* subscript(ExtensionDict* self, PyObject* key) {
|
| const FieldDescriptor* descriptor = cmessage::GetExtensionDescriptor(key);
|
| if (descriptor == NULL) {
|
| @@ -130,8 +101,8 @@ PyObject* subscript(ExtensionDict* self, PyObject* key) {
|
|
|
| if (descriptor->label() == FieldDescriptor::LABEL_REPEATED) {
|
| if (descriptor->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE) {
|
| - CMessageClass* message_class = cdescriptor_pool::GetMessageClass(
|
| - cmessage::GetDescriptorPoolForMessage(self->parent),
|
| + CMessageClass* message_class = message_factory::GetMessageClass(
|
| + cmessage::GetFactoryForMessage(self->parent),
|
| descriptor->message_type());
|
| if (message_class == NULL) {
|
| return NULL;
|
| @@ -183,47 +154,6 @@ int ass_subscript(ExtensionDict* self, PyObject* key, PyObject* value) {
|
| return 0;
|
| }
|
|
|
| -PyObject* ClearExtension(ExtensionDict* self, PyObject* extension) {
|
| - const FieldDescriptor* descriptor =
|
| - cmessage::GetExtensionDescriptor(extension);
|
| - if (descriptor == NULL) {
|
| - return NULL;
|
| - }
|
| - PyObject* value = PyDict_GetItem(self->values, extension);
|
| - if (self->parent) {
|
| - if (value != NULL) {
|
| - if (ReleaseExtension(self, value, descriptor) < 0) {
|
| - return NULL;
|
| - }
|
| - }
|
| - if (ScopedPyObjectPtr(cmessage::ClearFieldByDescriptor(
|
| - self->parent, descriptor)) == NULL) {
|
| - return NULL;
|
| - }
|
| - }
|
| - if (PyDict_DelItem(self->values, extension) < 0) {
|
| - PyErr_Clear();
|
| - }
|
| - Py_RETURN_NONE;
|
| -}
|
| -
|
| -PyObject* HasExtension(ExtensionDict* self, PyObject* extension) {
|
| - const FieldDescriptor* descriptor =
|
| - cmessage::GetExtensionDescriptor(extension);
|
| - if (descriptor == NULL) {
|
| - return NULL;
|
| - }
|
| - if (self->parent) {
|
| - return cmessage::HasFieldByDescriptor(self->parent, descriptor);
|
| - } else {
|
| - int exists = PyDict_Contains(self->values, extension);
|
| - if (exists < 0) {
|
| - return NULL;
|
| - }
|
| - return PyBool_FromLong(exists);
|
| - }
|
| -}
|
| -
|
| PyObject* _FindExtensionByName(ExtensionDict* self, PyObject* name) {
|
| ScopedPyObjectPtr extensions_by_name(PyObject_GetAttrString(
|
| reinterpret_cast<PyObject*>(self->parent), "_extensions_by_name"));
|
| @@ -282,8 +212,6 @@ static PyMappingMethods MpMethods = {
|
|
|
| #define EDMETHOD(name, args, doc) { #name, (PyCFunction)name, args, doc }
|
| static PyMethodDef Methods[] = {
|
| - EDMETHOD(ClearExtension, METH_O, "Clears an extension from the object."),
|
| - EDMETHOD(HasExtension, METH_O, "Checks if the object has an extension."),
|
| EDMETHOD(_FindExtensionByName, METH_O,
|
| "Finds an extension by name."),
|
| EDMETHOD(_FindExtensionByNumber, METH_O,
|
|
|