15 #ifndef odc_core_codec_Constant_H
16 #define odc_core_codec_Constant_H
28 template<
typename ByteOrder,
typename ValueType>
33 constexpr
static const char*
codec_name() {
return "constant"; }
43 unsigned char*
encode(
unsigned char* p,
const double&
d)
override;
47 void print(std::ostream& s)
const override;
51 template<
typename ByteOrder>
56 constexpr
static const char*
codec_name() {
return "constant_string"; }
64 unsigned char*
encode(
unsigned char* p,
const double&
d)
override;
65 void decode(
double* out)
override;
68 void print(std::ostream& s)
const override;
81 template <
typename ByteOrder,
typename ValueType>
83 static_assert(
sizeof(ValueType) ==
sizeof(v),
"unsafe casting check");
84 const ValueType&
val(
reinterpret_cast<const ValueType&
>(v));
88 template <
typename ByteOrder,
typename ValueType>
93 template <
typename ByteOrder,
typename ValueType>
95 static_assert(
sizeof(ValueType) ==
sizeof(
double),
"unsafe casting check");
96 *
reinterpret_cast<ValueType*
>(out) =
static_cast<ValueType
>(this->min_);
99 template <
typename ByteOrder,
typename ValueType>
102 template <
typename ByteOrder,
typename ValueType>
104 s << this->name_ <<
", value=" << std::fixed << static_cast<ValueType>(this->min_);
111 template <
typename ByteOrder>
116 template <
typename ByteOrder>
121 template <
typename ByteOrder>
124 template <
typename ByteOrder>
127 ByteOrder::swap(this->min_);
128 ByteOrder::swap(this->max_);
131 template <
typename ByteOrder>
133 ByteOrder::swap(this->min_);
134 ByteOrder::swap(this->max_);
136 ByteOrder::swap(this->min_);
137 ByteOrder::swap(this->max_);
140 template <
typename ByteOrder>
142 s << this->name_ <<
", value='"
143 << std::string(
reinterpret_cast<const char*
>(&this->min_),
sizeof(
double))
void decode(double *out) override
constexpr static const char * codec_name()
unsigned char * encode(unsigned char *p, const double &d) override
void print(std::ostream &s) const override
void gatherStats(const double &v) override
CodecConstant(api::ColumnType type, const std::string &name=codec_name())
void decode(double *out) override
unsigned char * encode(unsigned char *p, const double &d) override
size_t numStrings() const override
CodecConstantString(api::ColumnType type)
constexpr static const char * codec_name()
void print(std::ostream &s) const override
const std::string & name() const
virtual void gatherStats(const double &v)
DataStreamCodec(const std::string &name, api::ColumnType type)
void save(GeneralDataStream &ds)
void load(GeneralDataStream &ds)
DataStream< ByteOrder > & ds()