#pragma once #include "parser.h" #include "row.h" #include #include namespace usql { struct Table { Table(const Table &other); Table(const std::string name, const std::vector columns); ColDefNode get_column_def(const std::string &col_name); int columns_count() const { return m_col_defs.size(); }; Row create_empty_row(); // TODO this means unnecessary copying void add_row(const Row &row); void add_copy_of_row(const Row &row); void validate_column(const ColDefNode *col_def, ValueNode *col_val); void validate_column(const ColDefNode *col_def, ColValue *col_val); void validate_row(const Row &row); std::string csv_string(); int load_csv_string(const std::string &content); void print(); std::string m_name; std::vector m_col_defs; std::list m_rows; }; }