inline void encode()

in src/codecs/field_codecs.h [830:864]


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

            writer.writeAscii((const std::string *)NULL);
        }
        else {
            if (PyUnicode_Check(field_value)) {
                std::wstring str;
                str.resize(PyUnicode_GetSize(field_value) + 1, 0);
                int len = (int)PyUnicode_AsWideChar(
#if PY_VERSION_HEX < 0x03020000
                    (PyUnicodeObject *)
#endif
                    field_value, &str[0], (Py_ssize_t)str.size());
                if (len > -1) {
                    assert(len < (int)str.size());
                } else {
                    len = str.size() - 1;
                }
                str[len] = 0;

                writer.writeAscii(str.c_str(), len);
            }
            else {
                if (!is_nullable_) {
                    THROW_EXCEPTION("Field '%s' is not nullable.", field_name_.c_str());
                }

                writer.writeAscii((const std::string *)NULL);
            }
        }
    }