inline void encode()

in src/codecs/field_codecs.h [634:671]


    inline void encode(PyObject *field_value, DxApi::DataWriter &writer) {
        if (field_value == Py_None || field_value == NULL) {
            if (!is_nullable_) {
                THROW_EXCEPTION("Field '%s' is not nullable.", field_name_.c_str());
            }

            writer.writeBinaryArrayNull();
            return;
        }
        if (PyBytes_Check(field_value)) {
            uint8_t *bytes = (uint8_t *) PyBytes_AsString(field_value);
            size_t size = PyBytes_Size(field_value);
            if (bytes == NULL) {
                if (!is_nullable_) {
                    THROW_EXCEPTION("Field '%s' is not nullable.", field_name_.c_str());
                }

                writer.writeBinaryArrayNull();
            } else {
                writer.writeBinaryArray(bytes, size);
            }
        }
        else if (PyByteArray_Check(field_value)) {
            uint8_t *bytes = (uint8_t *) PyByteArray_AsString(field_value);
            if (bytes == NULL) {
                if (!is_nullable_) {
                    THROW_EXCEPTION("Field '%s' is not nullable.", field_name_.c_str());
                }

                writer.writeBinaryArrayNull();
            } else {
                writer.writeBinaryArray(bytes, PyByteArray_Size(field_value));
            }
        }
        else {
            THROW_EXCEPTION("Wrong type of '%s' field. Required: BYTES.", field_name_.c_str());
        }
    }