46 lines
1.2 KiB
C++
46 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include "parser.h"
|
|
#include "row.h"
|
|
|
|
#include <vector>
|
|
|
|
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);
|
|
ColDefNode get_column_def(int col_index);
|
|
|
|
int columns_count() const { return (int) m_col_defs.size(); };
|
|
size_t rows_count() const { return m_rows.size(); };
|
|
|
|
Row& create_empty_row();
|
|
void commit_row(const Row &row);
|
|
void commit_copy_of_row(const Row &row);
|
|
|
|
static void validate_column(const ColDefNode *col_def, ValueNode *col_val);
|
|
static 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);
|
|
int load_csv_file(const std::string &filename);
|
|
|
|
void print();
|
|
|
|
std::string m_name;
|
|
std::vector<ColDefNode> m_col_defs;
|
|
std::vector<Row> m_rows;
|
|
|
|
static long string_to_long(const std::string &s) ;
|
|
static double string_to_double(const std::string &s) ;
|
|
|
|
void create_row_from_vector(const std::vector<ColDefNode> &colDefs, const std::vector<std::string> &csv_line);
|
|
};
|
|
|
|
}
|