49#ifndef DOXYGEN_SHOULD_SKIP_THIS
65 const bool is_lossless,
66 const std::vector< std::string >& missing_symbols,
67 const bool dynamic_dictionary,
68 std::size_t max_dico_entries) :
69 is_lossless_(is_lossless), is_dictionary_dynamic_(dynamic_dictionary),
70 max_dico_entries_(max_dico_entries), val_type_(val_type) {
71 const std::size_t size = missing_symbols.size();
75 missing_symbols_.resize((Size)missing_symbols.size());
76 for (
const auto& symbol: missing_symbols) {
77 missing_symbols_.insert(symbol);
81 GUM_CONSTRUCTOR(DBTranslator);
85 INLINE DBTranslator::DBTranslator(DBTranslatedValueType val_type,
86 const bool is_lossless,
87 const bool dynamic_dictionary,
88 std::size_t max_dico_entries) :
89 is_lossless_(is_lossless), is_dictionary_dynamic_(dynamic_dictionary),
90 max_dico_entries_(max_dico_entries), val_type_(val_type) {
91 GUM_CONSTRUCTOR(DBTranslator);
95 INLINE DBTranslator::DBTranslator(
const DBTranslator& from) :
96 is_lossless_(from.is_lossless_), is_dictionary_dynamic_(from.is_dictionary_dynamic_),
97 max_dico_entries_(from.max_dico_entries_), missing_symbols_(from.missing_symbols_),
98 back_dico_(from.back_dico_), val_type_(from.val_type_) {
99 GUM_CONS_CPY(DBTranslator);
103 INLINE DBTranslator::DBTranslator(DBTranslator&& from) :
104 is_lossless_(from.is_lossless_), is_dictionary_dynamic_(from.is_dictionary_dynamic_),
105 max_dico_entries_(from.max_dico_entries_),
106 missing_symbols_(
std::move(from.missing_symbols_)), back_dico_(
std::move(from.back_dico_)),
107 val_type_(from.val_type_) {
108 GUM_CONS_MOV(DBTranslator);
112 INLINE DBTranslator::~DBTranslator() { GUM_DESTRUCTOR(DBTranslator); }
115 INLINE DBTranslator& DBTranslator::operator=(
const DBTranslator& from) {
117 is_lossless_ = from.is_lossless_;
118 is_dictionary_dynamic_ = from.is_dictionary_dynamic_;
119 max_dico_entries_ = from.max_dico_entries_;
120 missing_symbols_ = from.missing_symbols_;
121 back_dico_ = from.back_dico_;
122 val_type_ = from.val_type_;
128 INLINE DBTranslator& DBTranslator::operator=(DBTranslator&& from) {
129 is_lossless_ = from.is_lossless_;
130 is_dictionary_dynamic_ = from.is_dictionary_dynamic_;
131 max_dico_entries_ = from.max_dico_entries_;
132 missing_symbols_ = std::move(from.missing_symbols_);
133 back_dico_ = std::move(from.back_dico_);
134 val_type_ = from.val_type_;
140 INLINE DBTranslatedValue DBTranslator::operator<<(
const std::string& str) {
141 return translate(str);
145 INLINE std::string DBTranslator::operator>>(
const DBTranslatedValue translated_val) {
146 return translateBack(translated_val);
150 INLINE
bool DBTranslator::hasEditableDictionary()
const {
return is_dictionary_dynamic_; }
153 INLINE
void DBTranslator::setEditableDictionaryMode(
bool new_mode) {
154 is_dictionary_dynamic_ = new_mode;
158 INLINE
const Bijection< std::size_t, std::string >& DBTranslator::getDictionary()
const {
163 INLINE
const Set< std::string >& DBTranslator::missingSymbols()
const {
164 return missing_symbols_;
168 INLINE
bool DBTranslator::isMissingSymbol(
const std::string& str)
const {
169 return missing_symbols_.exists(str);
173 INLINE
void DBTranslator::setVariableName(
const std::string& str)
const {
174 const_cast< Variable*
>(this->variable())->setName(str);
178 INLINE
void DBTranslator::setVariableDescription(
const std::string& str)
const {
179 const_cast< Variable*
>(this->variable())->setDescription(str);
183 INLINE
bool DBTranslator::isMissingValue(
const DBTranslatedValue& value)
const {
185 case DBTranslatedValueType::DISCRETE :
186 return value.discr_val == std::numeric_limits< std::size_t >::max();
188 case DBTranslatedValueType::CONTINUOUS :
189 return value.cont_val == std::numeric_limits< float >::max();
193 "No missing value interpretation for this "
194 "translated value type");
The base class for all the tabular databases' cell translators.
Exception : there is something wrong with an implementation.
DBTranslator(DBTranslatedValueType val_type, const bool is_lossless, const std::vector< std::string > &missing_symbols, const bool editable_dictionary=true, std::size_t max_dico_entries=std::numeric_limits< std::size_t >::max())
default constructor
bool is_lossless_
indicates whether the translation is lossless (e.g., ranges) or not
DBTranslatedValueType val_type_
the type of the values translated by the translator
bool isLossless() const
returns a Boolean indicating whether the translation is lossless or not
DBTranslatedValueType getValType() const
returns the type of values handled by the translator
#define GUM_ERROR(type, msg)
DBTranslatedValueType
The nature of the elements handled by translators (discrete, continuous).
include the inlined functions if necessary
gum is the global namespace for all aGrUM entities