in src/codecs/field_codecs.h [1009:1038]
inline void encode(PyObject *field_value, DxApi::DataWriter &writer) {
if (field_value == NULL) {
if (!is_nullable_) {
THROW_EXCEPTION("Field '%s' is not nullable.", field_name_.c_str());
}
writer.writeArrayNull();
return;
}
if (PyList_Check(field_value)) {
Py_ssize_t size = PyList_Size(field_value);
writer.writeArrayStart(size);
for (int i = 0; i < size; i++) {
element_codec_->encode(PyList_GetItem(field_value, i), writer);
}
writer.writeArrayEnd();
} else {
if (field_value == Py_None) {
if (!is_nullable_) {
THROW_EXCEPTION("Field '%s' is not nullable.", field_name_.c_str());
}
writer.writeArrayNull();
} else {
THROW_EXCEPTION("Wrong type of field '%s'. Required: ARRAY.", field_name_.c_str());
}
}
}