зеркало из https://github.com/mozilla/pjs.git
add NilRowObjectError();
This commit is contained in:
Родитель
445fbc0c53
Коммит
696e44c41c
|
@ -138,6 +138,12 @@ morkRowCellCursor::CloseRowCellCursor(morkEnv* ev)
|
|||
// } ===== end morkNode methods =====
|
||||
// ````` ````` ````` ````` `````
|
||||
|
||||
/*static*/ void
|
||||
morkRowCellCursor::NilRowObjectError(morkEnv* ev)
|
||||
{
|
||||
ev->NewError("nil mRowCellCursor_RowObject");
|
||||
}
|
||||
|
||||
/*static*/ void
|
||||
morkRowCellCursor::NonRowCellCursorTypeError(morkEnv* ev)
|
||||
{
|
||||
|
|
|
@ -76,7 +76,8 @@ public: // dynamic type identification
|
|||
{ return IsNode() && mNode_Derived == morkDerived_kRowCellCursor; }
|
||||
// } ===== end morkNode methods =====
|
||||
|
||||
public: // typing
|
||||
public: // errors
|
||||
static void NilRowObjectError(morkEnv* ev);
|
||||
static void NonRowCellCursorTypeError(morkEnv* ev);
|
||||
|
||||
public: // other cell cursor methods
|
||||
|
|
|
@ -1,165 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1999 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#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 _MORKROWCELLCURSOR_
|
||||
#include "morkRowCellCursor.h"
|
||||
#endif
|
||||
|
||||
#ifndef _ORKINROWCELLCURSOR_
|
||||
#include "orkinRowCellCursor.h"
|
||||
#endif
|
||||
|
||||
#ifndef _MORKSTORE_
|
||||
#include "morkStore.h"
|
||||
#endif
|
||||
|
||||
#ifndef _MORKROWOBJECT_
|
||||
#include "morkRowObject.h"
|
||||
#endif
|
||||
|
||||
#ifndef _MORKROW_
|
||||
#include "morkRow.h"
|
||||
#endif
|
||||
|
||||
//3456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789
|
||||
|
||||
// ````` ````` ````` ````` `````
|
||||
// { ===== begin morkNode interface =====
|
||||
|
||||
/*public virtual*/ void
|
||||
morkRowCellCursor::CloseMorkNode(morkEnv* ev) // CloseRowCellCursor() only if open
|
||||
{
|
||||
if ( this->IsOpenNode() )
|
||||
{
|
||||
this->MarkClosing();
|
||||
this->CloseRowCellCursor(ev);
|
||||
this->MarkShut();
|
||||
}
|
||||
}
|
||||
|
||||
/*public virtual*/
|
||||
morkRowCellCursor::~morkRowCellCursor() // CloseRowCellCursor() executed earlier
|
||||
{
|
||||
MORK_ASSERT(this->IsShutNode());
|
||||
}
|
||||
|
||||
/*public non-poly*/
|
||||
morkRowCellCursor::morkRowCellCursor(morkEnv* ev,
|
||||
const morkUsage& inUsage,
|
||||
nsIMdbHeap* ioHeap, morkRowObject* ioRowObject)
|
||||
: morkCursor(ev, inUsage, ioHeap)
|
||||
, mRowCellCursor_RowObject( 0 )
|
||||
, mRowCellCursor_Col( 0 )
|
||||
{
|
||||
if ( ev->Good() )
|
||||
{
|
||||
if ( ioRowObject )
|
||||
{
|
||||
morkRow* row = ioRowObject->mRowObject_Row;
|
||||
if ( row )
|
||||
{
|
||||
if ( row->IsRow() )
|
||||
{
|
||||
mCursor_Pos = -1;
|
||||
mCursor_Seed = row->mRow_Seed;
|
||||
|
||||
morkRowObject::SlotStrongRowObject(ioRowObject, ev,
|
||||
&mRowCellCursor_RowObject);
|
||||
if ( ev->Good() )
|
||||
mNode_Derived = morkDerived_kRowCellCursor;
|
||||
}
|
||||
else
|
||||
row->NonRowTypeError(ev);
|
||||
}
|
||||
else
|
||||
ioRowObject->NilRowError(ev);
|
||||
}
|
||||
else
|
||||
ev->NilPointerError();
|
||||
}
|
||||
}
|
||||
|
||||
/*public non-poly*/ void
|
||||
morkRowCellCursor::CloseRowCellCursor(morkEnv* ev)
|
||||
{
|
||||
if ( this )
|
||||
{
|
||||
if ( this->IsNode() )
|
||||
{
|
||||
mCursor_Pos = -1;
|
||||
mCursor_Seed = 0;
|
||||
morkRowObject::SlotStrongRowObject((morkRowObject*) 0, ev,
|
||||
&mRowCellCursor_RowObject);
|
||||
this->CloseCursor(ev);
|
||||
this->MarkShut();
|
||||
}
|
||||
else
|
||||
this->NonNodeError(ev);
|
||||
}
|
||||
else
|
||||
ev->NilPointerError();
|
||||
}
|
||||
|
||||
// } ===== end morkNode methods =====
|
||||
// ````` ````` ````` ````` `````
|
||||
|
||||
/*static*/ void
|
||||
morkRowCellCursor::NonRowCellCursorTypeError(morkEnv* ev)
|
||||
{
|
||||
ev->NewError("non morkRowCellCursor");
|
||||
}
|
||||
|
||||
orkinRowCellCursor*
|
||||
morkRowCellCursor::AcquireRowCellCursorHandle(morkEnv* ev)
|
||||
{
|
||||
orkinRowCellCursor* outCursor = 0;
|
||||
orkinRowCellCursor* c = (orkinRowCellCursor*) mObject_Handle;
|
||||
if ( c ) // have an old handle?
|
||||
c->AddStrongRef(ev->AsMdbEnv());
|
||||
else // need new handle?
|
||||
{
|
||||
c = orkinRowCellCursor::MakeRowCellCursor(ev, this);
|
||||
mObject_Handle = c;
|
||||
}
|
||||
if ( c )
|
||||
outCursor = c;
|
||||
return outCursor;
|
||||
}
|
||||
|
||||
|
||||
//3456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789
|
|
@ -1,97 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1999 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#ifndef _MORKROWCELLCURSOR_
|
||||
#define _MORKROWCELLCURSOR_ 1
|
||||
|
||||
#ifndef _MORK_
|
||||
#include "mork.h"
|
||||
#endif
|
||||
|
||||
#ifndef _MORKCURSOR_
|
||||
#include "morkCursor.h"
|
||||
#endif
|
||||
|
||||
//3456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789
|
||||
|
||||
class orkinRowCellCursor;
|
||||
#define morkDerived_kRowCellCursor /*i*/ 0x6343 /* ascii 'cC' */
|
||||
|
||||
class morkRowCellCursor : public morkCursor { // row iterator
|
||||
|
||||
// public: // slots inherited from morkObject (meant to inform only)
|
||||
// nsIMdbHeap* mNode_Heap;
|
||||
// mork_able mNode_Mutable; // can this node be modified?
|
||||
// mork_load mNode_Load; // is this node clean or dirty?
|
||||
// mork_base mNode_Base; // must equal morkBase_kNode
|
||||
// mork_derived mNode_Derived; // depends on specific node subclass
|
||||
// mork_access mNode_Access; // kOpen, kClosing, kShut, or kDead
|
||||
// mork_usage mNode_Usage; // kHeap, kStack, kMember, kGlobal, kNone
|
||||
// mork_uses mNode_Uses; // refcount for strong refs
|
||||
// mork_refs mNode_Refs; // refcount for strong refs + weak refs
|
||||
|
||||
// morkFactory* mObject_Factory; // weak ref to suite factory
|
||||
|
||||
// mork_seed mCursor_Seed;
|
||||
// mork_pos mCursor_Pos;
|
||||
// mork_bool mCursor_DoFailOnSeedOutOfSync;
|
||||
// mork_u1 mCursor_Pad[ 3 ]; // explicitly pad to u4 alignment
|
||||
|
||||
public: // state is public because the entire Mork system is private
|
||||
|
||||
morkRowObject* mRowCellCursor_RowObject; // strong ref to row
|
||||
mork_column mRowCellCursor_Col; // col of cell last at mCursor_Pos
|
||||
|
||||
// { ===== begin morkNode interface =====
|
||||
public: // morkNode virtual methods
|
||||
virtual void CloseMorkNode(morkEnv* ev); // CloseRowCellCursor()
|
||||
virtual ~morkRowCellCursor(); // assert that close executed earlier
|
||||
|
||||
public: // morkRowCellCursor construction & destruction
|
||||
morkRowCellCursor(morkEnv* ev, const morkUsage& inUsage,
|
||||
nsIMdbHeap* ioHeap, morkRowObject* ioRowObject);
|
||||
void CloseRowCellCursor(morkEnv* ev); // called by CloseMorkNode();
|
||||
|
||||
private: // copying is not allowed
|
||||
morkRowCellCursor(const morkRowCellCursor& other);
|
||||
morkRowCellCursor& operator=(const morkRowCellCursor& other);
|
||||
|
||||
public: // dynamic type identification
|
||||
mork_bool IsRowCellCursor() const
|
||||
{ return IsNode() && mNode_Derived == morkDerived_kRowCellCursor; }
|
||||
// } ===== end morkNode methods =====
|
||||
|
||||
public: // typing
|
||||
static void NonRowCellCursorTypeError(morkEnv* ev);
|
||||
|
||||
public: // other cell cursor methods
|
||||
orkinRowCellCursor* AcquireRowCellCursorHandle(morkEnv* ev);
|
||||
|
||||
public: // typesafe refcounting inlines calling inherited morkNode methods
|
||||
static void SlotWeakRowCellCursor(morkRowCellCursor* me,
|
||||
morkEnv* ev, morkRowCellCursor** ioSlot)
|
||||
{ morkNode::SlotWeakNode((morkNode*) me, ev, (morkNode**) ioSlot); }
|
||||
|
||||
static void SlotStrongRowCellCursor(morkRowCellCursor* me,
|
||||
morkEnv* ev, morkRowCellCursor** ioSlot)
|
||||
{ morkNode::SlotStrongNode((morkNode*) me, ev, (morkNode**) ioSlot); }
|
||||
};
|
||||
|
||||
//3456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789
|
||||
|
||||
#endif /* _MORKROWCELLCURSOR_ */
|
Загрузка…
Ссылка в новой задаче