43#ifndef DOXYGEN_SHOULD_SKIP_THIS
54 _ignored_cols_(from._ignored_cols_) {
55 GUM_CONS_CPY(DatabaseTable);
59 INLINE DatabaseTable::DatabaseTable(DatabaseTable&& from) noexcept :
60 IDatabaseTable< DBTranslatedValue >(std::move(from)),
61 _translators_(std::move(from._translators_)),
62 _ignored_cols_(std::move(from._ignored_cols_)) {
63 GUM_CONS_MOV(DatabaseTable);
67 INLINE DatabaseTable::~DatabaseTable() { GUM_DESTRUCTOR(DatabaseTable); }
73 INLINE
typename DatabaseTable::template DBVector< std::size_t >
74 DatabaseTable::_getKthIndices_(
const std::size_t k,
const bool k_is_input_col)
const {
75 const std::size_t nb_trans = _translators_.size();
76 if (!k_is_input_col) {
77 if (k < nb_trans)
return DBVector< std::size_t >{k};
78 else return DBVector< std::size_t >();
80 DBVector< std::size_t > trans;
81 for (std::size_t i = std::size_t(0), kk = nb_trans - 1; i < nb_trans; ++i, --kk) {
82 if (_translators_.inputColumn(kk) == k) trans.push_back(kk);
89 INLINE
const DBTranslatorSet& DatabaseTable::translatorSet()
const {
return _translators_; }
94 INLINE std::size_t DatabaseTable::_getKthIndex_(
const std::size_t k,
95 const bool k_is_input_col)
const {
97 const std::size_t nb_trans = _translators_.size();
98 for (std::size_t i = std::size_t(0); i < nb_trans; ++i) {
99 if (_translators_.inputColumn(i) == k) {
return i; }
108 INLINE std::vector< std::size_t > DatabaseTable::domainSizes()
const {
109 const std::size_t nb_trans = _translators_.size();
110 std::vector< std::size_t > dom(nb_trans);
111 for (std::size_t i = std::size_t(0); i < nb_trans; ++i) {
112 dom[i] = _translators_.domainSize(i);
118 INLINE
void DatabaseTable::reorder() {
119 const std::size_t nb_trans = _translators_.size();
120 for (std::size_t i = std::size_t(0); i < nb_trans; ++i)
125 INLINE
void DatabaseTable::insertRow(
126 typename DatabaseTable::template Row< DBTranslatedValue >&& new_row,
127 const typename DatabaseTable::IsMissing contains_missing_data) {
130 if (!_isRowCompatible_(new_row)) {
131 if (new_row.size() != _translators_.size()) {
133 "The new row has " << new_row.size()
134 <<
" elements whereas the database table has "
135 << _translators_.size() <<
" columns")
141 IDatabaseTable< DBTranslatedValue >::insertRow(std::move(new_row), contains_missing_data);
145 INLINE
void DatabaseTable::insertRow(
146 const typename DatabaseTable::template Row< DBTranslatedValue >& new_row,
147 const typename DatabaseTable::IsMissing contains_missing_data) {
150 if (!_isRowCompatible_(new_row)) {
151 if (new_row.size() != _translators_.size()) {
153 "The new row has " << new_row.size()
154 <<
" elements whereas the database table has "
155 << _translators_.size() <<
" columns")
161 IDatabaseTable< DBTranslatedValue >::insertRow(new_row, contains_missing_data);
Exception: at least one argument passed to a function is not what was expected.
Exception : problem with size.
The class representing a tabular database as used by learning tasks.
DatabaseTable(const MissingValType &missing_symbols, const DBTranslatorSet &translators=DBTranslatorSet())
default constructor
The common class for the tabular database tables.
The class representing a tabular database stored in RAM.
#define GUM_ERROR(type, msg)
include the inlined functions if necessary
gum is the global namespace for all aGrUM entities
The union class for storing the translated values in learning databases.