12#include <unordered_map>
29 std::unordered_map<std::string, std::string>
cells;
37 std::function<
void(
const std::string&)> verbose = {});
47 std::uint64_t
limit)
const;
49 void edit_cell(std::uint64_t
row,
const std::string& column,
const std::string&
value);
51 void insert_row(std::uint64_t
row,
const std::vector<std::string>& values);
58 void save(
const std::vector<std::string>&
columns = {});
61 [[
nodiscard]] std::vector<std::vector<std::string>> read_source_rows(
63 std::uint64_t
limit)
const;
64 [[
nodiscard]] std::vector<std::string> read_source_row(std::uint64_t source_row)
const;
65 [[
nodiscard]] std::vector<std::string> row_values_for_columns(
67 const std::vector<CsvColumnDescriptor>&
columns)
const;
68 [[
nodiscard]] std::size_t column_index(
const std::string& column)
const;
69 [[
nodiscard]]
bool has_column(
const std::string& column)
const;
70 void refresh_headers();
71 void validate_column_order(
const std::vector<std::string>&
columns)
const;
72 [[
nodiscard]] std::vector<CsvColumnDescriptor> ordered_columns(
73 const std::vector<std::string>&
columns)
const;
76 std::string input_path_;
77 std::string file_name_;
78 std::vector<std::string> headers_;
79 std::vector<CsvColumnDescriptor> columns_;
80 std::vector<CsvRowIndexEntry> index_;
81 std::vector<CsvLogicalRow> rows_;
82 std::uint64_t file_size_ = 0;
83 std::filesystem::file_time_type source_mtime_{};
84 csv::CSVFormat format_;
96 std::function<
void(
const std::string&)> verbose = {});
108 std::uint64_t
limit)
const;
110 void edit_cell(std::uint64_t
row,
const std::string& column,
const std::string&
value);
112 void insert_row(std::uint64_t
row,
const std::vector<std::string>& values);
119 void save(
const std::vector<std::string>&
columns = {});
std::string second
Definition heatmap.cpp:31
std::string first
Definition heatmap.cpp:30
Definition indexed_csv.hpp:32
const std::string & file_name() const
Definition indexed_csv.cpp:182
void swap_rows(std::uint64_t first, std::uint64_t second)
Definition indexed_csv.cpp:400
const std::vector< std::string > & headers() const
Definition indexed_csv.cpp:186
void delete_column(const std::string &column)
Definition indexed_csv.cpp:449
static CsvIndexedFile Open(const std::string &input_path, csv::CSVFormat format, std::function< void(const std::string &)> verbose={})
Definition indexed_csv.cpp:137
void save(const std::vector< std::string > &columns={})
Definition indexed_csv.cpp:501
void insert_column(std::uint64_t column, const std::string &name, const std::string &value)
Definition indexed_csv.cpp:410
void insert_row(std::uint64_t row, const std::vector< std::string > &values)
Definition indexed_csv.cpp:385
std::uint64_t row_count() const
Definition indexed_csv.cpp:190
std::vector< std::vector< std::string > > read_rows(std::uint64_t offset, std::uint64_t limit) const
Definition indexed_csv.cpp:277
const std::string & input_path() const
Definition indexed_csv.cpp:178
void edit_cell(std::uint64_t row, const std::string &column, const std::string &value)
Definition indexed_csv.cpp:366
void reset()
Definition indexed_csv.cpp:496
void rename_column(const std::string &column, const std::string &name)
Definition indexed_csv.cpp:427
void delete_row(std::uint64_t row)
Definition indexed_csv.cpp:378
std::uint64_t file_size() const
Definition indexed_csv.cpp:194
bool recover_renamed_source()
Definition indexed_csv.cpp:461
Definition indexed_csv.hpp:91
CsvViewDataMode mode() const
Definition indexed_csv.cpp:559
void save(const std::vector< std::string > &columns={})
Definition indexed_csv.cpp:633
static CsvViewData Open(const std::string &input_path, csv::CSVFormat format, std::function< void(const std::string &)> verbose={})
Definition indexed_csv.cpp:549
void insert_row(std::uint64_t row, const std::vector< std::string > &values)
Definition indexed_csv.cpp:603
const std::string & input_path() const
Definition indexed_csv.cpp:567
void swap_rows(std::uint64_t first, std::uint64_t second)
Definition indexed_csv.cpp:607
void reset()
Definition indexed_csv.cpp:629
void edit_cell(std::uint64_t row, const std::string &column, const std::string &value)
Definition indexed_csv.cpp:593
void rename_column(const std::string &column, const std::string &name)
Definition indexed_csv.cpp:617
std::uint64_t file_size() const
Definition indexed_csv.cpp:583
const std::vector< std::string > & headers() const
Definition indexed_csv.cpp:575
bool recover_renamed_source()
Definition indexed_csv.cpp:625
std::string_view mode_name() const
Definition indexed_csv.cpp:563
void delete_row(std::uint64_t row)
Definition indexed_csv.cpp:599
std::uint64_t row_count() const
Definition indexed_csv.cpp:579
std::vector< std::vector< std::string > > read_rows(std::uint64_t offset, std::uint64_t limit) const
Definition indexed_csv.cpp:587
const std::string & file_name() const
Definition indexed_csv.cpp:571
void delete_column(const std::string &column)
Definition indexed_csv.cpp:621
void insert_column(std::uint64_t column, const std::string &name, const std::string &value)
Definition indexed_csv.cpp:611
Definition indexed_csv.cpp:23
CsvViewDataMode
Definition indexed_csv.hpp:87
Definition indexed_csv.hpp:21
std::optional< std::size_t > source_index
Definition indexed_csv.hpp:23
std::string default_value
Definition indexed_csv.hpp:24
std::string name
Definition indexed_csv.hpp:22
Definition indexed_csv.hpp:27
std::unordered_map< std::string, std::string > cells
Definition indexed_csv.hpp:29
std::optional< std::uint64_t > source_row
Definition indexed_csv.hpp:28
Definition indexed_csv.hpp:17
std::uint64_t byte_offset
Definition indexed_csv.hpp:18
double value
Definition timeseries.cpp:32