* @brief Set column name * @param pColumnIdx zero-based column index. * @param pColumnName column name. */
| 1433 | * @param pColumnName column name. |
| 1434 | */ |
| 1435 | void SetColumnName(size_t pColumnIdx, const std::string& pColumnName) |
| 1436 | { |
| 1437 | if (mLabelParams.mColumnNameIdx < 0) |
| 1438 | { |
| 1439 | throw std::out_of_range("column name row index < 0: " + std::to_string(mLabelParams.mColumnNameIdx)); |
| 1440 | } |
| 1441 | |
| 1442 | const size_t dataColumnIdx = GetDataColumnIndex(pColumnIdx); |
| 1443 | |
| 1444 | // remove old name from map before adding new one |
| 1445 | const size_t nameRowIdx = static_cast<size_t>(mLabelParams.mColumnNameIdx); |
| 1446 | if ((nameRowIdx < mData.size()) && (dataColumnIdx < mData.at(nameRowIdx).size())) |
| 1447 | { |
| 1448 | const std::string oldName = mData.at(nameRowIdx).at(dataColumnIdx); |
| 1449 | mColumnNames.erase(oldName); |
| 1450 | } |
| 1451 | mColumnNames[pColumnName] = dataColumnIdx; |
| 1452 | |
| 1453 | // increase table size if necessary: |
| 1454 | const size_t rowIdx = static_cast<size_t>(mLabelParams.mColumnNameIdx); |
| 1455 | if (rowIdx >= mData.size()) |
| 1456 | { |
| 1457 | mData.resize(rowIdx + 1); |
| 1458 | } |
| 1459 | |
| 1460 | std::vector<std::string>& row = mData[rowIdx]; |
| 1461 | if (dataColumnIdx >= row.size()) |
| 1462 | { |
| 1463 | row.resize(dataColumnIdx + 1); |
| 1464 | } |
| 1465 | |
| 1466 | mData.at(static_cast<size_t>(mLabelParams.mColumnNameIdx)).at(dataColumnIdx) = pColumnName; |
| 1467 | } |
| 1468 | |
| 1469 | /** |
| 1470 | * @brief Get column names |