diff options
Diffstat (limited to 'akregator/src/mk4storage/metakit/src/store.h')
-rw-r--r-- | akregator/src/mk4storage/metakit/src/store.h | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/akregator/src/mk4storage/metakit/src/store.h b/akregator/src/mk4storage/metakit/src/store.h new file mode 100644 index 000000000..c45d258ea --- /dev/null +++ b/akregator/src/mk4storage/metakit/src/store.h @@ -0,0 +1,114 @@ +// store.h -- +// $Id$ +// This is part of Metakit, see http://www.equi4.com/metakit/ + +/** @file + * Definition of auxiliary storage management classes + */ + +#ifndef __STORE_H__ +#define __STORE_H__ + +///////////////////////////////////////////////////////////////////////////// + +class c4_Dependencies +{ + c4_PtrArray _refs; + +public: + c4_Dependencies (); + ~c4_Dependencies (); + + void Add(c4_Sequence* seq_); + bool Remove(c4_Sequence* seq_); + + friend class c4_Notifier; +}; + +///////////////////////////////////////////////////////////////////////////// + +class c4_Notifier +{ + c4_Sequence* _origin; + c4_Notifier* _chain; + c4_Notifier* _next; + +public: + enum { kNone, kSetAt, kInsertAt, kRemoveAt, kMove, kSet, kLimit }; + + c4_Notifier (c4_Sequence* origin_); + ~c4_Notifier (); + + bool HasDependents() const; + + void StartSetAt(int index_, c4_Cursor& cursor_); + void StartInsertAt(int index_, c4_Cursor& cursor_, int count_); + void StartRemoveAt(int index_, int count_); + void StartMove(int from_, int to_); + void StartSet(int index_, int propId_, const c4_Bytes& buf_); + + int _type; + int _index; + int _propId; + int _count; + c4_Cursor* _cursor; + const c4_Bytes* _bytes; + +private: + void Notify(); +}; + +///////////////////////////////////////////////////////////////////////////// + +class c4_DerivedSeq : public c4_Sequence +{ +protected: + c4_Sequence& _seq; + +protected: + c4_DerivedSeq (c4_Sequence& seq_); + virtual ~c4_DerivedSeq (); + +public: + virtual int RemapIndex(int, const c4_Sequence*) const; + + virtual int NumRows() const; + virtual void SetNumRows(int size_); + + virtual int NumHandlers() const; + virtual c4_Handler& NthHandler(int) const; + virtual const c4_Sequence* HandlerContext(int) const; + virtual int AddHandler(c4_Handler*); + virtual c4_Handler* CreateHandler(const c4_Property&); + + virtual c4_Notifier* PreChange(c4_Notifier& nf_); +}; + +///////////////////////////////////////////////////////////////////////////// + +class c4_StreamStrategy : public c4_Strategy +{ + c4_Stream* _stream; + t4_byte* _buffer; + t4_i32 _buflen; + t4_i32 _position; +public: + c4_StreamStrategy (t4_i32 buflen_); + c4_StreamStrategy (c4_Stream* stream_); + virtual ~c4_StreamStrategy (); + + virtual bool IsValid() const; + virtual int DataRead(t4_i32 pos_, void* buffer_, int length_); + virtual void DataWrite(t4_i32 pos_, const void* buffer_, int length_); + virtual t4_i32 FileSize(); +}; + +///////////////////////////////////////////////////////////////////////////// + +#if q4_INLINE +#include "store.inl" +#endif + +///////////////////////////////////////////////////////////////////////////// + +#endif |