aboutsummaryrefslogtreecommitdiff
path: root/python/google/protobuf/pyext/repeated_scalar_container.cc
diff options
context:
space:
mode:
Diffstat (limited to 'python/google/protobuf/pyext/repeated_scalar_container.cc')
-rw-r--r--python/google/protobuf/pyext/repeated_scalar_container.cc11
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 }
};