usql/table.h

37 lines
790 B
C++

#pragma once
#include "parser.h"
#include "row.h"
#include <vector>
#include <list>
namespace usql {
struct Table {
Table(const Table &other);
Table(const std::string name, const std::vector<ColDefNode> 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();
void print();
std::string m_name;
std::vector<ColDefNode> m_col_defs;
std::list<Row> m_rows;
};
}