clarify and increase number of oid<->pos<-> row table methods

git-svn-id: svn://10.0.0.236/trunk@28133 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
davidmc%netscape.com
1999-04-19 22:28:03 +00:00
parent 6fede59c0e
commit 34af8fd400
4 changed files with 184 additions and 104 deletions

View File

@@ -332,7 +332,7 @@ orkinTable::DropActivity( // tell collection usage no longer expected
if ( ev )
{
morkTable* table = (morkTable*) mHandle_Object;
ev->StubMethodOnlyError();
// ev->StubMethodOnlyError(); // okay to do nothing
outErr = ev->AsErr();
}
return outErr;
@@ -475,18 +475,95 @@ orkinTable::GetTableRowCursor( // make a cursor, starting iteration at inRowPos
// { ----- begin row position methods -----
/*virtual*/ mdb_err
orkinTable::RowPosToOid( // get row member for a table position
orkinTable::PosToOid( // get row member for a table position
nsIMdbEnv* mev, // context
mdb_pos inRowPos, // zero-based ordinal position of row in table
mdbOid* outOid) // row oid at the specified position
{
mdb_err outErr = 0;
mdbOid roid;
roid.mOid_Scope = 0;
roid.mOid_Id = -1;
morkEnv* ev = this->CanUseTable(mev, /*inMutable*/ morkBool_kFalse, &outErr);
if ( ev )
{
ev->StubMethodOnlyError();
morkTable* table = (morkTable*) mHandle_Object;
morkRow* row = table->SafeRowAt(ev, inRowPos);
if ( row )
roid = row->mRow_Oid;
outErr = ev->AsErr();
}
if ( outOid )
*outOid = roid;
return outErr;
}
/*virtual*/ mdb_err
orkinTable::OidToPos( // test for the table position of a row member
nsIMdbEnv* mev, // context
const mdbOid* inOid, // row to find in table
mdb_pos* outPos) // zero-based ordinal position of row in table
{
mdb_err outErr = 0;
morkEnv* ev = this->CanUseTable(mev, /*inMutable*/ morkBool_kFalse, &outErr);
if ( ev )
{
mork_pos pos = ((morkTable*) mHandle_Object)->ArrayHasOid(ev, inOid);
if ( outPos )
*outPos = pos;
outErr = ev->AsErr();
}
return outErr;
}
/*virtual*/ mdb_err
orkinTable::PosToRow( // get row member for a table position
nsIMdbEnv* mev, // context
mdb_pos inRowPos, // zero-based ordinal position of row in table
nsIMdbRow** acqRow) // acquire row at table position inRowPos
{
mdb_err outErr = 0;
nsIMdbRow* outRow = 0;
morkEnv* ev = this->CanUseTable(mev, /*inMutable*/ morkBool_kFalse, &outErr);
if ( ev )
{
morkTable* table = (morkTable*) mHandle_Object;
morkStore* store = table->mTable_Store;
morkRow* row = table->SafeRowAt(ev, inRowPos);
if ( row && store )
outRow = row->AcquireRowHandle(ev, store);
outErr = ev->AsErr();
}
if ( acqRow )
*acqRow = outRow;
return outErr;
}
/*virtual*/ mdb_err
orkinTable::RowToPos( // test for the table position of a row member
nsIMdbEnv* mev, // context
nsIMdbRow* ioRow, // row to find in table
mdb_pos* outPos) // zero-based ordinal position of row in table
{
mdb_err outErr = 0;
mork_pos pos = -1;
morkEnv* ev = this->CanUseTable(mev, /*inMutable*/ morkBool_kFalse, &outErr);
if ( ev )
{
morkRow* row = 0;
orkinRow* orow = (orkinRow*) ioRow;
if ( orow->CanUseRow(mev, /*inMutable*/ morkBool_kFalse, &outErr, &row) )
{
morkTable* table = (morkTable*) mHandle_Object;
pos = table->ArrayHasOid(ev, &row->mRow_Oid);
}
outErr = ev->AsErr();
}
if ( outPos )
*outPos = pos;
return outErr;
}
@@ -526,24 +603,6 @@ orkinTable::HasOid( // test for the table position of a row member
return outErr;
}
/*virtual*/ mdb_err
orkinTable::OidToPos( // test for the table position of a row member
nsIMdbEnv* mev, // context
const mdbOid* inOid, // row to find in table
mdb_pos* outPos) // zero-based ordinal position of row in table
{
mdb_err outErr = 0;
morkEnv* ev = this->CanUseTable(mev, /*inMutable*/ morkBool_kFalse, &outErr);
if ( ev )
{
mork_pos pos = ((morkTable*) mHandle_Object)->ArrayHasOid(ev, inOid);
if ( outPos )
*outPos = pos;
outErr = ev->AsErr();
}
return outErr;
}
/*virtual*/ mdb_err
orkinTable::CutOid( // make sure the row with inOid is not a member
nsIMdbEnv* mev, // context
@@ -649,30 +708,6 @@ orkinTable::HasRow( // test for the table position of a row member
}
/*virtual*/ mdb_err
orkinTable::RowToPos( // test for the table position of a row member
nsIMdbEnv* mev, // context
nsIMdbRow* ioRow, // row to find in table
mdb_pos* outPos) // zero-based ordinal position of row in table
{
mdb_err outErr = 0;
morkEnv* ev = this->CanUseTable(mev, /*inMutable*/ morkBool_kFalse, &outErr);
if ( ev )
{
morkRow* row = 0;
orkinRow* orow = (orkinRow*) ioRow;
if ( orow->CanUseRow(mev, /*inMutable*/ morkBool_kFalse, &outErr, &row) )
{
morkTable* table = (morkTable*) mHandle_Object;
mork_pos pos = table->ArrayHasOid(ev, &row->mRow_Oid);
if ( outPos )
*outPos = pos;
}
outErr = ev->AsErr();
}
return outErr;
}
/*virtual*/ mdb_err
orkinTable::CutRow( // make sure the row with inOid is not a member
nsIMdbEnv* mev, // context