summaryrefslogtreecommitdiffstats
path: root/akregator/src/mk4storage/metakit/src/store.h
diff options
context:
space:
mode:
Diffstat (limited to 'akregator/src/mk4storage/metakit/src/store.h')
-rw-r--r--akregator/src/mk4storage/metakit/src/store.h114
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