|
|
| DataFrameStorage (const DataFrameStorage &)=delete |
| |
|
DataFrameStorage & | operator= (const DataFrameStorage &)=delete |
| |
| | DataFrameStorage (DataFrameStorage &&other) noexcept |
| |
| DataFrameStorage & | operator= (DataFrameStorage &&other) noexcept |
| |
| std::vector< CSVRow > & | rows () noexcept |
| |
| const std::vector< CSVRow > & | rows () const noexcept |
| |
| void | set_names (ConstColNamesPtr names) |
| |
| const ConstColNamesPtr & | names () const noexcept |
| |
| size_t | n_cols () const noexcept |
| |
| CellBinding | bind (size_t row, size_t column) const |
| |
| csv::string_view | view (size_t row, size_t column) const |
| |
| CellBinding | try_bind (size_t row, size_t column, CSVError &error) const |
| |
| const RowOverlay * | find_edits (const CSVRow *row) const |
| |
| RowOverlay * | ensure_edits (const CSVRow *row) |
| |
| CSVRow | make_inserted_row (const std::vector< std::string > &row, CSVError &error) const |
| |
| void | reserve_insert () |
| |
| void | insert_row (size_t index, CSVRow &&row) |
| |
| void | erase_row (size_t index) |
| |
| bool | erase_column (size_t index, int key_column, CSVError &error) |
| |
| template<typename BeforeReplace > |
| bool | insert_column (size_t index, const std::string &name, const std::string &value, int &key_column, const BeforeReplace &before_replace, CSVError &error) |
| |
| DataFrameStorage | selected_rows (const std::vector< std::uint8_t > &mask, CSVError &error) const |
| |
| bool | pristine () const noexcept |
| |
C++11 tagged choice of concrete backends, without a vtable.
The clean backing remains alive after first-edit publication. A reader that loaded the old pointer can safely finish without a per-read lock. Only structural operations (including moves) retire a dirty backend; those require exclusive access and invalidate proxies.
Definition at line 16 of file data_frame_storage.hpp.