11 #ifndef odc_core_codec_Real_H
12 #define odc_core_codec_Real_H
28 template<
typename ByteOrder>
33 constexpr
static const char*
codec_name() {
return "long_real"; }
49 unsigned char*
encode(
unsigned char* p,
const double&
d)
override {
52 memcpy(p, &e,
sizeof(e));
57 this->
ds().read(*out);
61 this->
ds().advance(
sizeof(
double));
68 float realInternalMissing =
reinterpret_cast<const float&
>(
minFloatAsInt);
69 float realInternalMissing2 =
reinterpret_cast<const float&
>(
maxFloatAsInt);
83 template <
typename ByteOrder, u
int32_t InternalMissing>
93 unsigned char*
encode(
unsigned char* p,
const double&
d)
override {
95 const uint32_t internalMissingInt = InternalMissing;
96 const float internalMissing =
reinterpret_cast<const float&
>(internalMissingInt);
103 ASSERT(s != internalMissing);
107 ::memcpy(p, &s,
sizeof(s));
108 return p +
sizeof(s);
114 const uint32_t internalMissingInt = InternalMissing;
115 const float internalMissing =
reinterpret_cast<const float&
>(internalMissingInt);
120 this->
ds().advance(
sizeof(
float));
125 template <
typename ByteOrder>
127 constexpr
static const char*
codec_name() {
return "short_real"; }
133 template <
typename ByteOrder>
135 constexpr
static const char*
codec_name() {
return "short_real2"; }
constexpr static const char * codec_name()
void gatherStats(const double &v) override
Keep track on internal missing value collisions, to help the CodecOptimizer.
bool hasShortReal2InternalMissing_
bool hasShortRealInternalMissing_
bool hasShortReal2InternalMissing() const
CodecLongReal(api::ColumnType type)
void decode(double *out) override
bool hasShortRealInternalMissing() const
~CodecLongReal() override
unsigned char * encode(unsigned char *p, const double &d) override
void decode(double *out) override
unsigned char * encode(unsigned char *p, const double &d) override
~ShortRealBase() override
ShortRealBase(api::ColumnType type, const std::string &name)
const std::string & name() const
virtual void gatherStats(const double &v)
DataStreamCodec(const std::string &name, api::ColumnType type)
DataStream< ByteOrder > & ds()
static constexpr uint32_t maxFloatAsInt
static constexpr uint32_t real2MissingAsInt
static constexpr uint32_t minFloatAsInt
CodecShortReal2(api::ColumnType type)
constexpr static const char * codec_name()
CodecShortReal(api::ColumnType type)
constexpr static const char * codec_name()