summaryrefslogtreecommitdiff
path: root/db/mork/src/morkSearchRowCursor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'db/mork/src/morkSearchRowCursor.cpp')
-rw-r--r--db/mork/src/morkSearchRowCursor.cpp169
1 files changed, 169 insertions, 0 deletions
diff --git a/db/mork/src/morkSearchRowCursor.cpp b/db/mork/src/morkSearchRowCursor.cpp
new file mode 100644
index 0000000000..5bc0b43721
--- /dev/null
+++ b/db/mork/src/morkSearchRowCursor.cpp
@@ -0,0 +1,169 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef _MDB_
+#include "mdb.h"
+#endif
+
+#ifndef _MORK_
+#include "mork.h"
+#endif
+
+#ifndef _MORKNODE_
+#include "morkNode.h"
+#endif
+
+#ifndef _MORKENV_
+#include "morkEnv.h"
+#endif
+
+#ifndef _MORKCURSOR_
+#include "morkCursor.h"
+#endif
+
+#ifndef _MORKSEARCHROWCURSOR_
+#include "morkSearchRowCursor.h"
+#endif
+
+#ifndef _MORKUNIQROWCURSOR_
+#include "morkUniqRowCursor.h"
+#endif
+
+#ifndef _MORKSTORE_
+#include "morkStore.h"
+#endif
+
+#ifndef _MORKTABLE_
+#include "morkTable.h"
+#endif
+
+#ifndef _MORKROW_
+#include "morkRow.h"
+#endif
+
+//3456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789
+
+// ````` ````` ````` ````` `````
+// { ===== begin morkNode interface =====
+
+/*public virtual*/ void
+morkSearchRowCursor::CloseMorkNode(morkEnv* ev) // CloseSearchRowCursor() only if open
+{
+ if ( this->IsOpenNode() )
+ {
+ this->MarkClosing();
+ this->CloseSearchRowCursor(ev);
+ this->MarkShut();
+ }
+}
+
+/*public virtual*/
+morkSearchRowCursor::~morkSearchRowCursor() // CloseSearchRowCursor() executed earlier
+{
+ MORK_ASSERT(this->IsShutNode());
+}
+
+/*public non-poly*/
+morkSearchRowCursor::morkSearchRowCursor(morkEnv* ev,
+ const morkUsage& inUsage,
+ nsIMdbHeap* ioHeap, morkTable* ioTable, mork_pos inRowPos)
+: morkTableRowCursor(ev, inUsage, ioHeap, ioTable, inRowPos)
+// , mSortingRowCursor_Sorting( 0 )
+{
+ if ( ev->Good() )
+ {
+ if ( ioTable )
+ {
+ // morkSorting::SlotWeakSorting(ioSorting, ev, &mSortingRowCursor_Sorting);
+ if ( ev->Good() )
+ {
+ // mNode_Derived = morkDerived_kTableRowCursor;
+ // mNode_Derived must stay equal to kTableRowCursor
+ }
+ }
+ else
+ ev->NilPointerError();
+ }
+}
+
+/*public non-poly*/ void
+morkSearchRowCursor::CloseSearchRowCursor(morkEnv* ev)
+{
+ if ( this->IsNode() )
+ {
+ // morkSorting::SlotWeakSorting((morkSorting*) 0, ev, &mSortingRowCursor_Sorting);
+ this->CloseTableRowCursor(ev);
+ this->MarkShut();
+ }
+ else
+ this->NonNodeError(ev);
+}
+
+// } ===== end morkNode methods =====
+// ````` ````` ````` ````` `````
+
+/*static*/ void
+morkSearchRowCursor::NonSearchRowCursorTypeError(morkEnv* ev)
+{
+ ev->NewError("non morkSearchRowCursor");
+}
+
+morkUniqRowCursor*
+morkSearchRowCursor::MakeUniqCursor(morkEnv* ev)
+{
+ morkUniqRowCursor* outCursor = 0;
+
+ return outCursor;
+}
+
+#if 0
+orkinTableRowCursor*
+morkSearchRowCursor::AcquireUniqueRowCursorHandle(morkEnv* ev)
+{
+ orkinTableRowCursor* outCursor = 0;
+
+ morkUniqRowCursor* uniqCursor = this->MakeUniqCursor(ev);
+ if ( uniqCursor )
+ {
+ outCursor = uniqCursor->AcquireTableRowCursorHandle(ev);
+ uniqCursor->CutStrongRef(ev);
+ }
+ return outCursor;
+}
+#endif
+mork_bool
+morkSearchRowCursor::CanHaveDupRowMembers(morkEnv* ev)
+{
+ return morkBool_kTrue; // true is correct
+}
+
+mork_count
+morkSearchRowCursor::GetMemberCount(morkEnv* ev)
+{
+ morkTable* table = mTableRowCursor_Table;
+ if ( table )
+ return table->mTable_RowArray.mArray_Fill;
+ else
+ return 0;
+}
+
+morkRow*
+morkSearchRowCursor::NextRow(morkEnv* ev, mdbOid* outOid, mdb_pos* outPos)
+{
+ morkRow* outRow = 0;
+ mork_pos pos = -1;
+
+ morkTable* table = mTableRowCursor_Table;
+ if ( table )
+ {
+ }
+ else
+ ev->NilPointerError();
+
+ *outPos = pos;
+ return outRow;
+}
+
+//3456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789