summaryrefslogtreecommitdiffstats
path: root/akregator/src/mk4storage/metakit/src/column.inl
diff options
context:
space:
mode:
Diffstat (limited to 'akregator/src/mk4storage/metakit/src/column.inl')
-rw-r--r--akregator/src/mk4storage/metakit/src/column.inl89
1 files changed, 89 insertions, 0 deletions
diff --git a/akregator/src/mk4storage/metakit/src/column.inl b/akregator/src/mk4storage/metakit/src/column.inl
new file mode 100644
index 00000000..58f34437
--- /dev/null
+++ b/akregator/src/mk4storage/metakit/src/column.inl
@@ -0,0 +1,89 @@
+// column.inl --
+// $Id$
+// This is part of Metakit, the homepage is http://www.equi4.com/metakit/
+
+/** @file
+ * Inlined members of the column classes
+ */
+
+/////////////////////////////////////////////////////////////////////////////
+// c4_Column
+
+d4_inline int c4_Column::fSegIndex(t4_i32 offset_)
+{
+ // limited by max array: 1 << (kSegBits + 15) with 16-bit ints
+ return (int) (offset_ >> kSegBits);
+}
+
+d4_inline t4_i32 c4_Column::fSegOffset(int index_)
+{
+ return (t4_i32) index_ << kSegBits;
+}
+
+d4_inline int c4_Column::fSegRest(t4_i32 offset_)
+{
+ return ((int) offset_ & kSegMask);
+}
+
+d4_inline c4_Persist* c4_Column::Persist() const
+{
+ return _persist;
+}
+
+d4_inline t4_i32 c4_Column::Position() const
+{
+ return _position;
+}
+
+d4_inline t4_i32 c4_Column::ColSize() const
+{
+ return _size;
+}
+
+d4_inline bool c4_Column::IsDirty() const
+{
+ return _dirty;
+}
+
+d4_inline void c4_Column::SetBuffer(t4_i32 length_)
+{
+ SetLocation(0, length_);
+ _dirty = true;
+}
+
+d4_inline const t4_byte* c4_Column::LoadNow(t4_i32 offset_)
+{
+ if (_segments.GetSize() == 0)
+ SetupSegments();
+
+ if (offset_ >= _gap)
+ offset_ += _slack;
+
+ t4_byte* ptr = (t4_byte*) _segments.GetAt(fSegIndex(offset_));
+ return ptr + fSegRest(offset_);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// c4_ColIter
+
+d4_inline c4_ColIter::c4_ColIter (c4_Column& col_, t4_i32 offset_, t4_i32 limit_)
+ : _column (col_), _limit (limit_), _pos (offset_), _len (0), _ptr (0)
+{
+}
+
+d4_inline const t4_byte* c4_ColIter::BufLoad() const
+{
+ return _ptr;
+}
+
+d4_inline t4_byte* c4_ColIter::BufSave()
+{
+ return _column.CopyNow(_pos);
+}
+
+d4_inline int c4_ColIter::BufLen() const
+{
+ return _len;
+}
+
+/////////////////////////////////////////////////////////////////////////////