From 2c398e382bf015eb4cf7302e5d79ed63f476be3a Mon Sep 17 00:00:00 2001 From: zecke Date: Sun, 22 Sep 2002 16:40:04 +0000 Subject: Ok now it compiles again... heureka I had to create templatebase so orecordlist and opimaccesstemplate do not have circular dependency otherwise just compile fixes to my templaes and i did not make them inline --- (limited to 'libopie') diff --git a/libopie/pim/opimaccessbackend.h b/libopie/pim/opimaccessbackend.h index d9af589..8e744e7 100644 --- a/libopie/pim/opimaccessbackend.h +++ b/libopie/pim/opimaccessbackend.h @@ -8,22 +8,29 @@ template class OPimAccessBackend { public: - OPimAccessBackend() { - } - ~OPimAccessBackend() { - } + OPimAccessBackend(); + virtual ~OPimAccessBackend(); virtual void load() = 0; virtual void reload() = 0; virtual void save() = 0; - virtual QArray allRecords() = 0; + virtual QArray allRecords()const = 0; virtual QArray queryByExample( const T& t, int sort ) = 0; virtual T find(int uid ) = 0; virtual void clear() = 0; virtual bool add( const T& t ) = 0; virtual bool remove( int uid ) = 0; - virtual void replace( const T& t ) = 0; + virtual bool replace( const T& t ) = 0; }; +template +OPimAccessBackend::OPimAccessBackend() { + +} +template +OPimAccessBackend::~OPimAccessBackend() { + +} + #endif diff --git a/libopie/pim/opimaccesstemplate.h b/libopie/pim/opimaccesstemplate.h index f2a241d..e0708e1 100644 --- a/libopie/pim/opimaccesstemplate.h +++ b/libopie/pim/opimaccesstemplate.h @@ -7,76 +7,112 @@ #include #include +#include "otemplatebase.h" + template -class OPimAccessTemplate { +class OPimAccessTemplate : public OTemplateBase { public: typedef ORecordList List; typedef OPimAccessBackend BackEnd; - OPimAccessTemplate( BackEnd* end) - : m_backEnd( end ) { - } - ~OPimAccessTemplate() { - delete m_backEnd; - } - virtual void load() { - m_backEnd->load(); - } - virtual void reload() { - m_backEnd->reload(); - } - virtual void save() { - m_backEnd->save(); - } + OPimAccessTemplate( BackEnd* end); + virtual ~OPimAccessTemplate(); + virtual void load(); + virtual void reload(); + virtual void save(); /* *do array to Records conversion * QArray ids */ - virtual List allRecords()const { - QArray ints = m_backEnd->allRecords(); - - List lis( ints, this ); - return lis; - } - virtual List queryByExample( const T& t, int sortOrder ) { - QArray ints = m_backEnd->query( t, sortOrder ); - List lis( ints, this ); - - return lis; - } - /* implement QCache here */ - virtual T find( int uid ) { - T t = m_backEnd->find( uid ); - return t; - } + virtual List allRecords()const; + virtual List queryByExample( const T& t, int sortOrder ); + virtual T find( int uid ); /* invalidate cache here */ - virtual void clear() { - invalidateCache(); - m_backEnd->clear(); - } - virtual bool add( const T& t ) { - return m_backEnd->add( t ); - } + virtual void clear() ; + virtual bool add( const T& t ) ; /* only the uid matters */ - virtual bool remove( const T& t ) { - /* remove from cache */ - return m_backEnd->remove( t.uid() ); - } - virtual bool remove( int uid ) { - /* remove from cache */ - return m_backEnd->remove(uid); - } - virtual bool replace( const T& t) { - return m_backEnd->replace( t ); - } + virtual bool remove( const T& t ); + virtual bool remove( int uid ); + virtual bool replace( const T& t) ; protected: - void invalidateCache() { - - } + void invalidateCache(); + BackEnd* backEnd(); BackEnd* m_backEnd; }; +template +OPimAccessTemplate::OPimAccessTemplate( BackEnd* end ) + : OTemplateBase(), m_backEnd( end ) +{ + +} +template +OPimAccessTemplate::~OPimAccessTemplate() { + qWarning("~OPimAccessTemplate"); + delete m_backEnd; +} +template +void OPimAccessTemplate::load() { + m_backEnd->load(); +} +template +void OPimAccessTemplate::reload() { + m_backEnd->reload(); +} +template +void OPimAccessTemplate::save() { + m_backEnd->save(); +} +template +OPimAccessTemplate::List OPimAccessTemplate::allRecords()const { + QArray ints = m_backEnd->allRecords(); + List lis(ints, this ); + return lis; +} +template +OPimAccessTemplate::List +OPimAccessTemplate::queryByExample( const T& t, int sortOrder ) { + QArray ints = m_backEnd->queryByExample( t, sortOrder ); + + List lis(ints, this ); + return lis; +} +template +T OPimAccessTemplate::find( int uid ) { + T t = m_backEnd->find( uid ); + return t; +} +template +void OPimAccessTemplate::clear() { + invalidateCache(); + m_backEnd->clear(); +} +template +bool OPimAccessTemplate::add( const T& t ) { + return m_backEnd->add( t ); +} +template +bool OPimAccessTemplate::remove( const T& t ) { + return m_backEnd->remove( t.uid() ); +} +template +bool OPimAccessTemplate::remove( int uid ) { + return m_backEnd->remove( uid ); +} +template +bool OPimAccessTemplate::replace( const T& t ) { + return m_backEnd->replace( t ); +} +template +void OPimAccessTemplate::invalidateCache() { + +} +template +OPimAccessTemplate::BackEnd* OPimAccessTemplate::backEnd() { + return m_backEnd; +} + #endif diff --git a/libopie/pim/opimrecord.cpp b/libopie/pim/opimrecord.cpp index 88b6fde..60cdbf3 100644 --- a/libopie/pim/opimrecord.cpp +++ b/libopie/pim/opimrecord.cpp @@ -3,6 +3,9 @@ #include "opimrecord.h" +Qtopia::UidGen OPimRecord::m_uidGen( Qtopia::UidGen::Qtopia ); + + OPimRecord::OPimRecord( int uid ) : Qtopia::Record() { @@ -125,3 +128,6 @@ void OPimRecord::setUid( int uid ) { Qtopia::Record::setUid( uid ); }; +Qtopia::UidGen &OPimRecord::uidGen() { + return m_uidGen; +} diff --git a/libopie/pim/opimrecord.h b/libopie/pim/opimrecord.h index 297ff12..e4d33d6 100644 --- a/libopie/pim/opimrecord.h +++ b/libopie/pim/opimrecord.h @@ -104,12 +104,14 @@ public: virtual void setUid( int uid ); protected: + Qtopia::UidGen &uidGen(); QString crossToString()const; private: class OPimRecordPrivate; OPimRecordPrivate *d; QMap > m_relations; + static Qtopia::UidGen m_uidGen; }; diff --git a/libopie/pim/orecordlist.h b/libopie/pim/orecordlist.h index 65c2169..a3955b0 100644 --- a/libopie/pim/orecordlist.h +++ b/libopie/pim/orecordlist.h @@ -2,42 +2,47 @@ #ifndef OPIE_RECORD_LIST_H #define OPIE_RECORD_LIST_H -#include -#include +#include + +#include "otemplatebase.h" +#include "opimrecord.h" + + +template +class ORecordListIterator { +public: + typedef OTemplateBase Base; + ORecordListIterator( const QArray, const Base* ); + ORecordListIterator(); + ~ORecordListIterator(); + ORecordListIterator( const ORecordListIterator& ); + ORecordListIterator &operator=(const ORecordListIterator& ); + T &operator*(); + ORecordListIterator &operator++(); + ORecordListIterator &operator--(); + + bool operator==( const ORecordListIterator& it ); + bool operator!=( const ORecordListIterator& it ); + +private: + QArray m_uids; + int m_current; + const Base* m_temp; + bool m_end : 1; + T m_record; + + /* d pointer for future versions */ + class IteratorPrivate; + IteratorPrivate *d; +}; template class ORecordList { public: - class Iterator { - friend class ORecordList; - public: - Iterator(); - ~Iterator(); - Iterator(const Iterator& ); - Iterator &operator=(const Iterator& ); - T &operator*(); - Iterator &operator++(); - Iterator &operator--(); - - bool operator==( const Iterator& it ); - bool operator!=( const Iterator& it ); - - private: - Iterator( const QArray, - OPimAccessTemplate* ); - - QArray m_uids; - int m_current; - OPimAccessTemplate* m_temp; - bool m_end : 1; - T m_record; - - /* d pointer for future versions */ - class IteratorPrivate; - IteratorPrivate *d; - }; + typedef OTemplateBase Base; + typedef ORecordListIterator Iterator; ORecordList( const QArray& ids, - OPimAccessTemplate* acc ); + const Base* ); ~ORecordList(); Iterator begin(); Iterator end(); @@ -47,23 +52,23 @@ public: */ private: QArray m_ids; - OPimAccessTemplate* m_acc; + const Base* m_acc; }; /* ok now implement it */ -template -ORecordList::Iterator::Iterator() { +template +ORecordListIterator::ORecordListIterator() { m_current = 0; m_temp = 0l; m_end = true; } -template -ORecordList::Iterator::~Iterator() { +template +ORecordListIterator::~ORecordListIterator() { /* nothing to delete */ } -template -ORecordList::Iterator::Iterator( const ORecordList::Iterator& it) { +template +ORecordListIterator::ORecordListIterator( const ORecordListIterator& it) { m_uids = it.m_uids; m_current = it.m_current; m_temp = it.m_temp; @@ -71,8 +76,8 @@ ORecordList::Iterator::Iterator( const ORecordList::Iterator& it) { m_record = it.m_record; } -template -ORecordList::Iterator &ORecordList::Iterator::operator=( const ORecordList::Iterator& it) { +template +ORecordListIterator &ORecordListIterator::operator=( const ORecordListIterator& it) { m_uids = it.m_uids; m_current = it.m_current; m_temp = it.m_temp; @@ -82,18 +87,18 @@ ORecordList::Iterator &ORecordList::Iterator::operator=( const ORecordList return *this; } -template -T &ORecordList::Iterator::operator*() { +template +T &ORecordListIterator::operator*() { if (!m_end ) m_record = m_temp->find( m_uids[m_current] ); else - m_record = T; + m_record = T(); return m_record; } -template -ORecordList::Iterator &ORecordList::Iterator::operator++() { +template +ORecordListIterator &ORecordListIterator::operator++() { if (m_current < m_uids.count() ) { m_end = false; ++m_current; @@ -102,8 +107,8 @@ ORecordList::Iterator &ORecordList::Iterator::operator++() { return *this; } -template -ORecordList::Iterator &ORecordList::Iterator::operator--() { +template +ORecordListIterator &ORecordListIterator::operator--() { if ( m_current > 0 ) { --m_current; m_end = false; @@ -113,8 +118,8 @@ ORecordList::Iterator &ORecordList::Iterator::operator--() { return *this; } -template -bool ORecordList::Iterator::operator==( const ORecordList::Iterator& it ) { +template +bool ORecordListIterator::operator==( const ORecordListIterator& it ) { /* if both are at we're the same.... */ if ( m_end == it.m_end ) return true; @@ -125,32 +130,33 @@ bool ORecordList::Iterator::operator==( const ORecordList::Iterator& it ) return true; } -template -bool ORecordList::Iterator::operator!=( const ORecordList::Iterator it ) { +template +bool ORecordListIterator::operator!=( const ORecordListIterator& it ) { return !(*this == it ); } -template -ORecordList::Iterator::Iterator( const QArray uids, - OPimAccessTemplate* t ) +template +ORecordListIterator::ORecordListIterator( const QArray uids, + const Base* t ) : m_uids( uids ), m_current( 0 ), m_temp( t ), m_end( false ) { } -template + +template ORecordList::ORecordList( const QArray& ids, - OPimAccessTemplate* acc ) + const Base* acc ) : m_ids( ids ), m_acc( acc ) { } -template +template ORecordList::~ORecordList() { /* nothing to do here */ } -template +template ORecordList::Iterator ORecordList::begin() { Iterator it( m_ids, m_acc ); return it; } -template +template ORecordList::Iterator ORecordList::end() { Iterator it( m_ids, m_acc ); it.m_end = true; diff --git a/libopie/pim/otemplatebase.h b/libopie/pim/otemplatebase.h new file mode 100644 index 0000000..41cc934 --- a/dev/null +++ b/libopie/pim/otemplatebase.h @@ -0,0 +1,18 @@ +#ifndef OPIE_TEMPLATE_BASE_H +#define OPIE_TEMPLATE_BASE_H + +#include "opimrecord.h" + +template +class OTemplateBase { +public: + OTemplateBase() { + }; + virtual ~OTemplateBase() { + } + virtual T find( int uid ) = 0; + +}; + + +#endif -- cgit v0.9.0.2