NL3D::CTessFacePListNode Class Reference

#include <tess_face_priority_list.h>

Inheritance diagram for NL3D::CTessFacePListNode:

NL3D::CTessFace

Detailed Description

A chain link node for PriorityList. NB: It is a circular list <=> (this,this) if list is empty
Author:
Lionel Berenguier

Nevrax France

Date:
2001

Definition at line 47 of file tess_face_priority_list.h.

Public Member Functions

void appendPList (CTessFacePListNode &root)
 CTessFacePListNode (const CTessFacePListNode &)
 CTessFacePListNode ()
void linkInPList (CTessFacePListNode &root)
 unlinkInPList, then link this node to the root of a list.

CTessFacePListNodenextInPList () const
CTessFacePListNodeoperator= (const CTessFacePListNode &)
CTessFacePListNodeprecInPList () const
 get next ptr. next==this if list empty.

void unlinkInPList ()
 if linked, unlink this node from his list.

 ~CTessFacePListNode ()

Private Attributes

CTessFacePListNode_NextTessFaceInPList
CTessFacePListNode_PrecTessFaceInPList


Constructor & Destructor Documentation

NL3D::CTessFacePListNode::CTessFacePListNode  )  [inline]
 

Definition at line 52 of file tess_face_priority_list.h.

References _NextTessFaceInPList, and _PrecTessFaceInPList.

00053         {
00054                 _PrecTessFaceInPList= this;
00055                 _NextTessFaceInPList= this;
00056         }

NL3D::CTessFacePListNode::~CTessFacePListNode  )  [inline]
 

Definition at line 57 of file tess_face_priority_list.h.

References unlinkInPList().

00058         {
00059                 // if not done, unlink.
00060                 unlinkInPList();
00061         }

NL3D::CTessFacePListNode::CTessFacePListNode const CTessFacePListNode  )  [inline]
 

Definition at line 64 of file tess_face_priority_list.h.

References _NextTessFaceInPList, and _PrecTessFaceInPList.

00065         {
00066                 _PrecTessFaceInPList= this;
00067                 _NextTessFaceInPList= this;
00068         }


Member Function Documentation

void NL3D::CTessFacePListNode::appendPList CTessFacePListNode root  ) 
 

append a list just after this node. root is the root of the list. It is not inserted in the result. After this, the list pointed by "root" is empty.

Definition at line 88 of file tess_face_priority_list.cpp.

References _NextTessFaceInPList, and _PrecTessFaceInPList.

Referenced by NL3D::CLandscape::refine(), NL3D::CTessFacePriorityList::shift(), and NL3D::CTessFacePriorityList::CRollingTable::shiftEntries().

00089 {
00090         // If list to append is not empty.
00091         if( root._NextTessFaceInPList != &root )
00092         {
00093                 // If we are empty.
00094                 if( _NextTessFaceInPList==this )
00095                 {
00096                         // link the appendList to the root.
00097                         _PrecTessFaceInPList= root._PrecTessFaceInPList;
00098                         _NextTessFaceInPList= root._NextTessFaceInPList;
00099                         // link the root to the appendList.
00100                         _PrecTessFaceInPList->_NextTessFaceInPList= this;
00101                         _NextTessFaceInPList->_PrecTessFaceInPList= this;
00102                 }
00103                 // else bind first-last in the interval prec-next.
00104                 else
00105                 {
00106                         CTessFacePListNode              *first= root._NextTessFaceInPList;
00107                         CTessFacePListNode              *last= root._PrecTessFaceInPList;
00108                         CTessFacePListNode              *prec= this;
00109                         CTessFacePListNode              *next= _NextTessFaceInPList;
00110                         // insert the appendList in our list.
00111                         next->_PrecTessFaceInPList= last;
00112                         prec->_NextTessFaceInPList= first;
00113                         // insert our list in the appendList.
00114                         last->_NextTessFaceInPList= next;
00115                         first->_PrecTessFaceInPList= prec;
00116                 }
00117 
00118                 // clear input list.
00119                 root._PrecTessFaceInPList= &root;
00120                 root._NextTessFaceInPList= &root;
00121         }
00122 }

void NL3D::CTessFacePListNode::linkInPList CTessFacePListNode root  ) 
 

unlinkInPList, then link this node to the root of a list.

Definition at line 49 of file tess_face_priority_list.cpp.

References _NextTessFaceInPList, and _PrecTessFaceInPList.

Referenced by NL3D::CLandscape::newTessFace().

00050 {
00051         // unlink old list from me.
00052         _PrecTessFaceInPList->_NextTessFaceInPList= _NextTessFaceInPList;
00053         _NextTessFaceInPList->_PrecTessFaceInPList= _PrecTessFaceInPList;
00054 
00055         // link me to the list.
00056         _PrecTessFaceInPList= &root;
00057         _NextTessFaceInPList= root._NextTessFaceInPList;
00058         // link the list to me.
00059         root._NextTessFaceInPList->_PrecTessFaceInPList= this;
00060         root._NextTessFaceInPList= this;
00061         /*
00062                 NB if list was empty (this, this), then
00063                         _PrecTessFaceInPList= &root
00064                         _NextTessFaceInPList= root._NextTessFaceInPList= &root !
00065                         root._NextTessFaceInPList->_PrecTessFaceInPList= this;  => root._PrecTessFaceInPList= this
00066                         root._NextTessFaceInPList= this
00067         */
00068 }

CTessFacePListNode* NL3D::CTessFacePListNode::nextInPList  )  const [inline]
 

Definition at line 84 of file tess_face_priority_list.h.

References _NextTessFaceInPList.

Referenced by NL3D::CTessFacePriorityList::CRollingTable::clearRollTableEntry(), and NL3D::CLandscape::refine().

00084 {return _NextTessFaceInPList;}

CTessFacePListNode& NL3D::CTessFacePListNode::operator= const CTessFacePListNode  )  [inline]
 

Definition at line 70 of file tess_face_priority_list.h.

00070 {return *this;}

CTessFacePListNode* NL3D::CTessFacePListNode::precInPList  )  const [inline]
 

get next ptr. next==this if list empty.

Definition at line 83 of file tess_face_priority_list.h.

References _PrecTessFaceInPList.

00083 {return _PrecTessFaceInPList;}

void NL3D::CTessFacePListNode::unlinkInPList  ) 
 

if linked, unlink this node from his list.

Definition at line 71 of file tess_face_priority_list.cpp.

References _NextTessFaceInPList, and _PrecTessFaceInPList.

Referenced by NL3D::CTessFacePriorityList::CRollingTable::clearRollTableEntry(), NL3D::CLandscape::deleteTessFace(), NL3D::CTessFacePriorityList::shift(), NL3D::CTessFacePriorityList::shiftAll(), NL3D::CTessFace::split(), NL3D::CTessFace::splitRectangular(), NL3D::CTessFace::updateRefineSplit(), and ~CTessFacePListNode().

00072 {
00073         /*
00074                 NB: if this node was empty (this, this), this is a No-Op.
00075                 If this node was the last of a list, then the root correctly get (&root, &root) after this.
00076         */
00077         // unlink old list from me.
00078         _PrecTessFaceInPList->_NextTessFaceInPList= _NextTessFaceInPList;
00079         _NextTessFaceInPList->_PrecTessFaceInPList= _PrecTessFaceInPList;
00080 
00081         // reset to empty node.
00082         _PrecTessFaceInPList= this;
00083         _NextTessFaceInPList= this;
00084 }


Field Documentation

CTessFacePListNode* NL3D::CTessFacePListNode::_NextTessFaceInPList [private]
 

Definition at line 88 of file tess_face_priority_list.h.

Referenced by appendPList(), CTessFacePListNode(), linkInPList(), nextInPList(), and unlinkInPList().

CTessFacePListNode* NL3D::CTessFacePListNode::_PrecTessFaceInPList [private]
 

Definition at line 87 of file tess_face_priority_list.h.

Referenced by appendPList(), CTessFacePListNode(), linkInPList(), precInPList(), and unlinkInPList().


The documentation for this class was generated from the following files:
Generated on Tue Mar 16 07:48:42 2004 for NeL by doxygen 1.3.6