diff options
Diffstat (limited to 'python/google/protobuf/pyext/repeated_scalar_container.cc')
-rw-r--r-- | python/google/protobuf/pyext/repeated_scalar_container.cc | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/python/google/protobuf/pyext/repeated_scalar_container.cc b/python/google/protobuf/pyext/repeated_scalar_container.cc index de3b6e14..ac06cff3 100644 --- a/python/google/protobuf/pyext/repeated_scalar_container.cc +++ b/python/google/protobuf/pyext/repeated_scalar_container.cc @@ -104,7 +104,8 @@ static int AssignItem(PyObject* pself, Py_ssize_t index, PyObject* arg) { if (arg == NULL) { ScopedPyObjectPtr py_index(PyLong_FromLong(index)); - return cmessage::InternalDeleteRepeatedField(self->parent, field_descriptor, + return cmessage::InternalDeleteRepeatedField(self->message, + field_descriptor, py_index.get(), NULL); } @@ -467,7 +468,7 @@ static int AssSubscript(PyObject* pself, PyObject* slice, PyObject* value) { if (value == NULL) { return cmessage::InternalDeleteRepeatedField( - self->parent, field_descriptor, slice, NULL); + self->message, field_descriptor, slice, nullptr); } if (!create_list) { @@ -663,6 +664,10 @@ static PyObject* ToStr(PyObject* pself) { return PyObject_Repr(list.get()); } +static PyObject* MergeFrom(PyObject* pself, PyObject* arg) { + return Extend(reinterpret_cast<RepeatedScalarContainer*>(pself), arg); +} + // The private constructor of RepeatedScalarContainer objects. PyObject *NewContainer( CMessage* parent, const FieldDescriptor* parent_field_descriptor) { @@ -776,6 +781,8 @@ static PyMethodDef Methods[] = { "Removes an object from the repeated container." }, { "sort", (PyCFunction)Sort, METH_VARARGS | METH_KEYWORDS, "Sorts the repeated container."}, + { "MergeFrom", (PyCFunction)MergeFrom, METH_O, + "Merges a repeated container into the current container." }, { NULL, NULL } }; |