inline void encode()

in src/codecs/field_codecs.h [497:545]


    inline void encode(PyObject *field_value, DxApi::DataWriter &writer) {
        bool type_mismatch;
        bool exists = getDoubleValue(field_value, value_, type_mismatch);
        if (type_mismatch)
            THROW_EXCEPTION("Wrong type of field '%s'. Required: FLOAT.", field_name_.c_str());
        if (!exists) {
            if (!is_nullable_) {
                THROW_EXCEPTION("Field '%s' is not nullable.", field_name_.c_str());
            }

            is_null_ = true;
            switch (field_size_) {
            case 32: {
                writer.writeFloat32(DxApi::FLOAT32_NULL);
            }
            break;
            case 63: {
                writer.writeDecimal(DxApi::DECIMAL_NULL);
            }
            break;
            case 64: {
                writer.writeFloat64(DxApi::FLOAT64_NULL);
            }
            break;
            default:
                THROW_EXCEPTION("Unknow size of float: %d.", field_size_);
            }
        } else {
            substractRelative(value_);
            is_null_ = false;
            switch (field_size_)
            {
            case 32: {
                writer.writeFloat32((float)value_);
            }
            break;
            case 63: {
                writer.writeDecimal(value_);
            }
            break;
            case 64: {
                writer.writeFloat64(value_);
            }
            break;
            default:
                THROW_EXCEPTION("Unknow size of float: %d.", field_size_);
            }
        }
    }