43 #if PY_MAJOR_VERSION >= 3
44 #define PyInt_FromLong PyLong_FromLong
51 namespace unknown_fields {
53 static Py_ssize_t
Len(PyObject* pself) {
57 PyErr_Format(PyExc_ValueError,
58 "UnknownFields does not exist. "
59 "The parent message might be cleared.");
62 return self->fields->field_count();
66 for (std::set<PyUnknownFields*>::iterator
it =
67 self->sub_unknown_fields.begin();
68 it !=
self->sub_unknown_fields.end();
it++) {
72 self->sub_unknown_fields.clear();
78 static PyObject*
Item(PyObject* pself, Py_ssize_t
index) {
82 PyErr_Format(PyExc_ValueError,
83 "UnknownFields does not exist. "
84 "The parent message might be cleared.");
87 Py_ssize_t total_size =
self->fields->field_count();
92 PyErr_Format(PyExc_IndexError,
93 "index (%zd) out of range",
110 Py_INCREF(c_message);
111 self->parent =
reinterpret_cast<PyObject*
>(c_message);
116 return reinterpret_cast<PyObject*
>(
self);
128 self->parent = parent;
131 return reinterpret_cast<PyObject*
>(
self);
139 self->parent)->sub_unknown_fields.erase(
self);
141 reinterpret_cast<CMessage*
>(
self->parent)->unknown_field_set =
nullptr;
143 Py_CLEAR(
self->parent);
144 self->~PyUnknownFields();
172 PyObject_HashNotImplemented,
197 namespace unknown_field {
209 self->parent =
reinterpret_cast<PyObject*
>(parent);
213 return reinterpret_cast<PyObject*
>(
self);
219 PyErr_Format(PyExc_ValueError,
220 "UnknownField does not exist. "
221 "The parent message might be cleared.");
224 ssize_t total_size =
fields->field_count();
225 if (
self->index >= total_size) {
226 PyErr_Format(PyExc_ValueError,
227 "UnknownField does not exist. "
228 "The parent message might be cleared.");
236 if (unknown_field ==
NULL) {
239 return PyInt_FromLong(unknown_field->
number());
245 if (unknown_field ==
NULL) {
252 switch (unknown_field->
type()) {
269 return PyInt_FromLong(wire_type);
278 switch (
field->type()) {
289 data = PyBytes_FromStringAndSize(
field->length_delimited().data(),
290 field->GetLengthDelimitedSize());
303 Py_CLEAR(
self->parent);
329 PyObject_HashNotImplemented,