Vince's CSV Parser
Loading...
Searching...
No Matches
col_names.hpp
1#pragma once
2#include <memory>
3#include <stdexcept>
4#include <unordered_map>
5#include <string>
6#include <vector>
7
8#include "common.hpp"
9#include "csv_format.hpp"
10
11namespace csv {
12 namespace internals {
13 struct ColNames;
14 using ColNamesPtr = std::shared_ptr<ColNames>;
15
23 struct ColNames {
24 public:
25 ColNames() = default;
26 ColNames(const std::vector<std::string>& names) {
27 set_col_names(names);
28 }
29
30 std::vector<std::string> get_col_names() const;
31 void set_col_names(const std::vector<std::string>&);
32 int index_of(csv::string_view) const;
33
38
39 bool empty() const noexcept { return this->col_names.empty(); }
40 size_t size() const noexcept;
41
43 const std::string& operator[](size_t i) const;
44
45 private:
46 std::vector<std::string> col_names;
47 std::unordered_map<std::string, size_t> col_pos;
49 };
50 }
51}
A standalone header file containing shared code.
Defines an object used to store CSV format settings.
The all encompassing namespace.
ColumnNamePolicy
Determines how column name lookups are performed.
@ EXACT
Case-sensitive match (default)
nonstd::string_view string_view
The string_view class used by this library.
Definition common.hpp:135
A data structure for handling column name information.
Definition col_names.hpp:23
const std::string & operator[](size_t i) const
Retrieve column name by index.
Definition col_names.cpp:55
void set_policy(csv::ColumnNamePolicy policy)
Sets the column name lookup policy.
Definition col_names.cpp:47