From 15318cad33835e4e2dc620d033e43cd930676cdd Mon Sep 17 00:00:00 2001 From: kergoth Date: Fri, 25 Jan 2002 22:14:26 +0000 Subject: Initial revision --- (limited to 'noncore/apps/tableviewer/db/datacache.h') diff --git a/noncore/apps/tableviewer/db/datacache.h b/noncore/apps/tableviewer/db/datacache.h new file mode 100644 index 0000000..c5dc637 --- a/dev/null +++ b/noncore/apps/tableviewer/db/datacache.h @@ -0,0 +1,130 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qtopia Environment. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +/* + * This file is used to load the xml files that represent the database. + * The main requirment for said file is each data entry must contain a key, + * otherwise any other data headings are allowed. + */ + +#ifndef __DATACACHE_H__ +#define __DATACACHE_H__ + +#include +#include +#include "common.h" + +class DBStore; + +/*! Abstract class that defines how database stuff can be accessed */ +class DBAccess { +public: + +// DBAccess(DBStore *d) { dstore = d; } + virtual ~DBAccess() {} + + virtual QString type() { + return QString(); + } + + virtual bool openSource(QIODevice *) { + qWarning("DBAccess::openSource not yet implemented"); + return false; + } + + virtual bool saveSource(QIODevice *) { + qWarning("DBAccess::saveSource(QString) not yet implemented"); + return false; + } + +protected: + DBStore *dstore; + QString source_name; +}; + +class DBStore { +public: + DBStore(); + ~DBStore(); + + bool openSource(QIODevice *, const QString &source); + bool saveSource(QIODevice *, const QString &source); + + // Add an item + void addItem(DataElem *); + void addItemInternal(DataElem *); + void removeItem(DataElem *); + + // Set the name of the database + void setName(const QString &name); + + // Get the name of the database + QString getName(); + + KeyList *getKeys(); + void setKeys(KeyList *); + + /*! gets the number of fields defined in the database */ + inline int getNumFields() { + return kRep->getNumFields(); + } + + /*! gets the index of a key given its name */ + inline int getKeyIndex(QString qs) { + return kRep->getKeyIndex(qs); + } + + /*! gets the type of a key given its index */ + inline TVVariant::KeyType getKeyType(int i) { + return kRep->getKeyType(i); + } + + /*! gets the name of a key given its index */ + inline QString getKeyName(int i) { + return kRep->getKeyName(i); + } + +// Access functions.. iterator type stuff + + void first(); + void last(); + + bool next(); + bool previous(); + + DataElem* getCurrentData(); + +private: + /* does the work of freeing used memory */ + void freeTable(); + QString name; + + QVector master_table; + DBAccess *archive; + + KeyList *kRep; + + unsigned int number_elems; + unsigned int table_size; /* should always be a power of 2 */ + bool full; /* since because we are using an int for indexing there is + an upper limit on the number of items we can store. */ + unsigned int current_elem; +}; +#endif -- cgit v0.9.0.2