00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #pragma once
00021
00029 #include "Types.h"
00030 #include "Table.h"
00031
00037 class TableDef : public boost::enable_shared_from_this<TableDef>
00038 {
00039 public:
00041 TableDef(std::string name);
00042
00044 ~TableDef();
00045
00046
00048 cstring getName() const;
00049
00050
00052 void addPK(const std::string& name);
00053
00055 void addFPK(TableDefPtr table);
00056
00058 void addFPK(TableDefPtr table, const std::string& suffix);
00059
00060
00062 void addValue(const std::string& name);
00063
00065 void addValue(const std::string& name, value_type defaultvalue);
00066
00068 void addTextField(const std::string& name);
00069
00076 void addLookupTextField(const std::string& name);
00077
00079 void addTextField(const std::string& name, const std::string& defaulttext);
00080
00082 void addFK(TableDefPtr table);
00083
00085 void addFK(TableDefPtr table, const std::string& suffix);
00086
00088 const std::string& tableForeignName() const;
00089
00090
00092 FieldDefVector::const_iterator begin() const { return m_deffields.begin(); }
00093
00095 FieldDefVector::const_iterator end() const { return m_deffields.end(); }
00096
00098 size_t size() const { return m_deffields.size(); }
00099
00100
00102 size_t primarykeysize() const { return m_primarykeysize; }
00103
00104 private:
00105 std::string m_name;
00106 std::string m_foreignname;
00107 FieldDefVector m_deffields;
00108 size_t m_primarykeysize;
00109 };