00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018 00019
00020 #ifndef TABLE_H
00021 #define TABLE_H
00022
00023 #ifdef HAVE_CONFIG_H
00024 #include <config.h>
00025 #endif
00026
00027 #include <qstring.h>
00028 #include <qlist.h>
00029
00030 #include "field.h"
00031 #include "index.h"
00032 #include "dataobject.h"
00033
00034 namespace KDB {
00035
00036 class Table;
00037
00038 typedef KSharedPtr<Table> TablePtr;
00039 typedef QValueList<TablePtr> TableList;
00040 typedef QValueListIterator<TablePtr> TableIterator;
00041
00042 class Recordset;
00043 class Connector;
00044
00045 typedef KSharedPtr<Recordset> RecordsetPtr;
00046
00059 class Table :public DataObject {
00060
00061 friend class Database;
00062
00063 Q_OBJECT
00064
00065 public:
00066
00067 ~Table();
00068
00076 Field * newField(const QString &name);
00077
00082 void appendField(Field *);
00083
00088 Field * getField(const QString &name) const;
00089
00093 FieldList fields() const;
00094
00098 QStringList fieldNames() const;
00099
00105 Index * newIndex(const QString &name);
00106
00110 Index * getIndex(const QString &name) const;
00111
00115 IndexList indexes() const;
00116
00120 RecordsetPtr openRecordset();
00121
00127 bool create();
00128
00133 bool designMode() const;
00134
00135 signals:
00136
00137 void fieldAdded( Field * );
00138 void fieldRemoved( Field * );
00139 void changed();
00140 void indexAdded( Index * );
00141 void indexRemoved( Index * );
00142 void created( Table * );
00143
00144 private:
00145
00146 Table(Connector *conn, const char * name, QObject *parent = 0, bool desing = false);
00147
00148 Connector * connector;
00149 FieldList m_fields;
00150 IndexList m_indexes;
00151
00152 bool m_design;
00153
00154 };
00155
00156 }
00157
00158 #endif