#pragma once #include "FieldBase.h" #include "types.h" namespace ki { namespace dml { template class Field : public FieldBase { friend Record; public: ValueT get_value() const; void set_value(ValueT value); Field *clone(const Record &record) const; void write_to(std::ostream &ostream) const; void read_from(std::istream &istream); size_t get_size() const; protected: Field(std::string name, const Record &record) : FieldBase(name, record) { m_type_hash = typeid(ValueT).hash_code(); m_value = ValueT(); } private: ValueT m_value; }; typedef Field BytField; typedef Field UBytField; typedef Field ShrtField; typedef Field UShrtField; typedef Field IntField; typedef Field UIntField; typedef Field StrField; typedef Field WStrField; typedef Field FltField; typedef Field DblField; typedef Field GidField; } }