13 throw cms::Exception(
"LogicError",
"Mismatch in adding extension");
14 for (
unsigned int i = 0,
n =
other.nColumns();
i <
n; ++
i) {
15 switch (
other.columnType(
i)) {
16 case ColumnType::UInt8:
17 addColumn<uint8_t>(
other.columnName(
i),
other.columnData<uint8_t>(
i),
other.columnDoc(
i));
20 addColumn<int16_t>(
other.columnName(
i),
other.columnData<int16_t>(
i),
other.columnDoc(
i));
23 addColumn<uint16_t>(
other.columnName(
i),
other.columnData<uint16_t>(
i),
other.columnDoc(
i));
26 addColumn<int32_t>(
other.columnName(
i),
other.columnData<int32_t>(
i),
other.columnDoc(
i));
29 addColumn<uint32_t>(
other.columnName(
i),
other.columnData<uint32_t>(
i),
other.columnDoc(
i));
34 case ColumnType::Float:
37 case ColumnType::Double:
38 addColumn<double>(
other.columnName(
i),
other.columnData<
double>(
i),
other.columnDoc(
i));
47 if (column >= nColumns())
49 switch (columnType(column)) {
50 case ColumnType::UInt8:
51 return *(beginData<uint8_t>(column) + row);
53 return *(beginData<int16_t>(column) + row);
55 return *(beginData<uint16_t>(column) + row);
57 return *(beginData<int32_t>(column) + row);
59 return *(beginData<uint32_t>(column) + row);
61 return *(beginData<bool>(column) + row);
62 case ColumnType::Float:
63 return *(beginData<float>(column) + row);
64 case ColumnType::Double:
65 return *(beginData<double>(column) + row);
71 throw cms::Exception(
"LogicError") <<
"Invalid column name '" << column <<
"'";
void addExtension(const FlatTable &extension)
std::vector< Column > columns_
static void throwUnknownColumn(const std::string &column) noexcept(false)
const std::string & name() const
int columnIndex(const std::string &name) const
double getAnyValue(unsigned int row, unsigned int column) const