STK::List1D< TYPE > Class Template Reference
[Subproject STKernel::Tcontainer]

Templated One dimensionnal Horizontal List. More...

#include <STK_List1D.h>

Inherits ITContainer1D< TYPE, List1D< TYPE > >, and STK::IContainerRef.

List of all members.

Public Member Functions

 List1D (const Inx &I=Inx())
 List1D (const Inx &I, const TYPE &v)
 List1D (const List1D< TYPE > &T)
virtual ~List1D ()
TYPE & getElt (const Integer &pos)
const TYPE & getElt (const Integer &pos) const
List1D< TYPE > getElt (const Inx &J) const
void clear ()
void shift (const Integer &beg=1)
void pushBackElts (const Integer &n=1)
void insertElts (Integer pos, Integer n=1)
void popBackElts (const Integer &n=1)
void eraseElts (Integer pos, Integer n=1)
void swapElts (Integer j1, Integer j2)
List1D< TYPE > & operator= (const List1D< TYPE > &T)
List1D< TYPE > & operator= (const TYPE &v)

Protected Member Functions

 List1D (CellHo< TYPE > *const &pfirst, CellHo< TYPE > *const &plast, const Inx &J)
void initialize (const Inx &I)
void freeMem ()
void setDefault ()

Protected Attributes

CellHo< TYPE > * pfirst_
 First Element of the List.
CellHo< TYPE > * plast_
 First Element of the List.

Private Member Functions

void moveCurrLeft () const
void moveCurrRight () const
void moveCurr (Integer j) const

Private Attributes

Integer curr_
 Current position.
CellHo< TYPE > * pcurr_
 Current pointed position.


Detailed Description

template<class TYPE>
class STK::List1D< TYPE >

A List1D is an implementation of the Interface ITContainer1D.

Definition at line 72 of file STK_List1D.h.


Constructor & Destructor Documentation

template<class TYPE>
STK::List1D< TYPE >::List1D ( const Inx I = Inx()  )  [inline]

Default Ctor : beg_ =1 and end_ =0.

Parameters:
I range of the container

Definition at line 87 of file STK_List1D.h.

00088           : ITContainer1D<TYPE, List1D>(I)
00089           , IContainerRef(false)
00090     { initialize(I); }

template<class TYPE>
STK::List1D< TYPE >::List1D ( const Inx I,
const TYPE &  v 
) [inline]

Misc Ctor with beg and end, initialization with a constant.

Parameters:
I range of the container
v initial value of the container

Definition at line 96 of file STK_List1D.h.

00097           : ITContainer1D<TYPE, List1D >(I)
00098           , IContainerRef(false)
00099     { initialize(I);
00100 
00101       CellHo<TYPE>* p1  = pfirst_;
00102       for ( Integer j=this->first(); j<=this->last(); j++)
00103       { (*p1) = v;             // overwrite the value of the current cell
00104         p1    = p1->getRight();   // Goto Right place
00105       }
00106     }

template<class TYPE>
STK::List1D< TYPE >::List1D ( const List1D< TYPE > &  T  )  [inline]

Copy Ctor.

Parameters:
T the container to copy

Definition at line 111 of file STK_List1D.h.

00112           : ITContainer1D<TYPE, List1D>(T)
00113           , IContainerRef(false)
00114     {
00115       // initialize container
00116       initialize(T.getRange());
00117       // copy the container
00118       CellHo<TYPE>* p1  = pfirst_;
00119       CellHo<TYPE>* pt1 = T.pfirst_;
00120 
00121       for (Integer j=T.first(); j<=T.last(); j++)
00122       { (*p1) = pt1->getData();   // write the value of the current cell
00123         p1    = p1->getRight();   // Goto Right
00124         pt1   = pt1->getRight();  // Goto Right
00125       }
00126     }

template<class TYPE>
STK::List1D< TYPE >::List1D ( CellHo< TYPE > *const &  pfirst,
CellHo< TYPE > *const &  plast,
const Inx J 
) [inline, protected]

Ctor by reference, ref_=1.

Parameters:
pfirst the first cell of the container to wrap
plast the last cell of the container to wrap
I range of the datas to wrap

Definition at line 134 of file STK_List1D.h.

00138           : ITContainer1D<TYPE, List1D>(J)
00139           , IContainerRef(true)
00140           , pfirst_(pfirst)
00141           , plast_(plast)
00142     { 
00143       // Current position
00144       curr_  = this->first();
00145       pcurr_ = pfirst;
00146     }

template<class TYPE>
virtual STK::List1D< TYPE >::~List1D (  )  [inline, virtual]

virtual dtor.

Definition at line 151 of file STK_List1D.h.

00151 { if (!this->isRef()) freeMem();}


Member Function Documentation

template<class TYPE>
TYPE& STK::List1D< TYPE >::getElt ( const Integer pos  )  [inline]

access to one element.

Parameters:
pos index of the element

Reimplemented from STK::ITContainer1D< TYPE, List1D< TYPE > >.

Reimplemented in STK::DataFrame.

Definition at line 158 of file STK_List1D.h.

00159     {
00160       moveCurr(pos);
00161       return (pcurr_->getData());
00162     }

template<class TYPE>
const TYPE& STK::List1D< TYPE >::getElt ( const Integer pos  )  const [inline]

access to one element const.

Parameters:
pos index of the const element

Reimplemented from STK::ITContainer1D< TYPE, List1D< TYPE > >.

Reimplemented in STK::DataFrame.

Definition at line 167 of file STK_List1D.h.

00168     {
00169       moveCurr(pos);
00170       return (pcurr_->getData());
00171     }

template<class TYPE>
List1D<TYPE> STK::List1D< TYPE >::getElt ( const Inx J  )  const [inline]

access to many elements.

Parameters:
J the range of the elements

Reimplemented from STK::ITContainer1D< TYPE, List1D< TYPE > >.

Definition at line 176 of file STK_List1D.h.

00177     {
00178 #ifdef STK_BOUNDS_CHECK
00179       if ((J.first()<this->first()))
00180       { throw std::out_of_range("List1D::getElt(J) "
00181                            "J.first()<this->first()");
00182       }
00183       if ((J.last()>this->last()))
00184       { throw std::out_of_range("List1D::getElt(J) "
00185                            "J.last()>this->last()");
00186       }
00187 #endif
00188       // get J.first() cell adress
00189       moveCurr(J.first());
00190       CellHo<TYPE>* pfirst = pcurr_;
00191       // get J.last() cell adress
00192       moveCurr(J.last());
00193       CellHo<TYPE>* plast = pcurr_;
00194       // return the reference
00195       return List1D<TYPE>(pfirst, plast, J);
00196     }

template<class TYPE>
void STK::List1D< TYPE >::clear (  )  [inline]

Clear the object. Memory is liberated and the range of the Container is set to 0:-1.

Reimplemented from STK::ITContainer1D< TYPE, List1D< TYPE > >.

Reimplemented in STK::DataFrame.

Definition at line 203 of file STK_List1D.h.

00204     {
00205       if (this->isRef()) return;   // Nothing to do for ref
00206       freeMem();        // Free mem
00207       this->setRange(); // Set to default the dimension
00208     }

template<class TYPE>
void STK::List1D< TYPE >::shift ( const Integer beg = 1  )  [inline]

New first index for the object.

Parameters:
beg new first index of the Container.

Reimplemented from STK::ITContainer1D< TYPE, List1D< TYPE > >.

Reimplemented in STK::DataFrame.

Definition at line 213 of file STK_List1D.h.

00214     {
00215       if (this->first() == beg) return;
00216 #ifdef STK_DEBUG
00217       // is this structure just a pointer?
00218       if (this->isRef())
00219       { throw std::runtime_error("List1D::shift(pos, n) "
00220                             "can't operate on references.");
00221       }
00222 #endif
00223       //compute increment
00224       Integer inc = beg - this->first();   
00225       this->incRange(inc);  // update this->range_()
00226       curr_ += inc;         // update current position
00227     }

template<class TYPE>
void STK::List1D< TYPE >::pushBackElts ( const Integer n = 1  )  [inline]

Add n Elts to the container.

Parameters:
n number of elements to add

Reimplemented from STK::ITContainer1D< TYPE, List1D< TYPE > >.

Definition at line 232 of file STK_List1D.h.

00233     {
00234       // if n==0 nothing to do
00235       if (n <= 0) return;
00236 #ifdef STK_DEBUG
00237       // is this structure just a pointer?
00238       if (this->isRef())
00239       { throw std::runtime_error("List1D::pushBackElts(pos, n) "
00240                             "can't operate on references.");
00241       }
00242 #endif
00243       // If the container is empty : create it
00244       if (this->empty())
00245       {
00246         initialize(Inx(this->first(), this->first()+ n -1));
00247       }
00248       else  // else adjust the beginning and the sizes
00249       {
00250         CellHo<TYPE> *p1, *p2;            // Auxiliary cells;
00251         try
00252         { p1 = new CellHo<TYPE>(plast_);} // Create the end+1 cell
00253         catch (std::bad_alloc & error)   // if an alloc error is catched
00254         { // throw the exception
00255           throw std::runtime_error("List1D::pushBackElts(n) "
00256                               "memory allocation failed.");
00257         }
00258         // if no error is intercepted
00259         plast_->setRight(p1);             // Set the right ending cell
00260         for (Integer j=2; j<=n; j++)    // main loop for the other cells
00261         { try
00262           { p2 = new CellHo<TYPE>(p1);}  // try to allocate memory
00263           catch (std::bad_alloc & error) // if an alloc error occur
00264           {
00265             while ( p1 != plast_)         // for all cells allocated
00266             { p2 = p1->getLeft();        // get the cell left
00267               delete p1;                 // delete the curent cell
00268               p1 = p2;                   // iterate
00269             }
00270             // set the original right side of cend 
00271             plast_->setRight(pfirst_);
00272             // and throw an exception
00273             throw std::runtime_error("List1D::pushBackElts(n) "
00274                                 "memory allocation failed.");
00275           } // end catch
00276           // if no error is intercepted
00277           p1->setRight(p2);  // Set the right cell of the current cell
00278           p1 = p2;           // Set the current cell to the the next cell
00279         }
00280         p1->setRight(pfirst_);    // the last cell point on the first cell
00281         pfirst_->setLeft(p1);     // the first cell point on the last cell
00282         plast_ = p1;             // the last cell adress
00283         this->incLast(n); // Update size of the container
00284       }
00285     }

template<class TYPE>
void STK::List1D< TYPE >::insertElts ( Integer  pos,
Integer  n = 1 
) [inline]

Insert n elts at the position pos of the container.

Parameters:
pos index where to insert elements
n number of elements to insert (default 1)

Definition at line 291 of file STK_List1D.h.

00292     {
00293       // if n<=0 nothing to do
00294       if (n <= 0) return;
00295 #ifdef STK_DEBUG
00296       // is this structure just a pointer?
00297       if (this->isRef())
00298       { throw std::runtime_error("List1D::insertElts(pos, n) "
00299                             "can't operate on references.");
00300       }
00301 #endif
00302 #ifdef STK_BOUNDS_CHECK
00303       // check indices
00304       if (this->first() > pos)
00305       { throw std::out_of_range("List1D::insertElts(pos, n) "
00306                            "this->first() > pos");
00307       }
00308       if (this->last()+1 < pos)
00309       { throw std::out_of_range("List1D::insertElts(pos, n) "
00310                            "this->last()+1 < pos");
00311       }
00312 #endif
00313       // Move the current position to j
00314       moveCurr(pos);
00315       CellHo<TYPE> *p0 = pcurr_->getLeft();// Get the j-1 cell
00316       CellHo<TYPE> *p1 = p0;               // Auxiliary cell;
00317       // main loop for the other cells
00318       for (Integer j1=1; j1<=n; j1++)
00319       { 
00320         CellHo<TYPE> *p2;        // Auxiliary cell;
00321         try
00322         { p2 = new CellHo<TYPE>(p1);}  // try to allocate memory
00323         catch (std::bad_alloc & error) // if an alloc error occur
00324         { while ( p1 != p0)            // for all cells allocated
00325           { p2 = p1;                   // get the cell left
00326             delete p1;                 // delete the curent cell
00327             p1 = p2->getLeft();        // iterate
00328           }
00329           p0->setRight(pcurr_);
00330           // and throw an exception
00331           throw std::runtime_error("List1D::insertElts(j, n) "
00332                               "memory allocation failed.");
00333         } // catch block
00334         // if no error is intercepted
00335         p1->setRight(p2);  // Set the right cell of the current cell
00336         p1 = p2;           // iterate
00337       }
00338       p1->setRight(pcurr_);     // the last cell point on the first cell
00339       pcurr_->setLeft(p1);      // the first cell point on the last cell
00340       this->incLast(n);   // Update the size of the container
00341       curr_ +=n;                // Update the current position
00342       if ( pos==this->first() )   // if the begininning was modified
00343       { pfirst_ = p0->getRight();}// set new beginning
00344     }

template<class TYPE>
void STK::List1D< TYPE >::popBackElts ( const Integer n = 1  )  [inline]

Delete last elts of the container.

Parameters:
n number of elts to delete

Reimplemented from STK::ITContainer1D< TYPE, List1D< TYPE > >.

Definition at line 349 of file STK_List1D.h.

00350     {
00351       // if n<=0 nothing to do
00352       if (n <= 0) return;
00353 #ifdef STK_DEBUG
00354       // is this structure just a pointer?
00355       if (this->isRef())
00356       { throw std::runtime_error("List1D::popBackElts() "
00357                             "can't operate on references.");
00358       }
00359 #endif
00360 #ifdef STK_BOUNDS_CHECK
00361       // if there is elts to erase
00362       if (this->getSize()<n)
00363       { throw std::out_of_range("List1D::popBackElts(n) "
00364                            "this->getSize() < n");
00365       }
00366 #endif
00367       // erase elts with pos = end -n +1
00368       eraseElts(this->last() - n +1, n);
00369     }

template<class TYPE>
void STK::List1D< TYPE >::eraseElts ( Integer  pos,
Integer  n = 1 
) [inline]

Delete n elts at the pos index to the container.

Parameters:
pos index where to delete elements
n number of elements to delete (default 1)

Definition at line 375 of file STK_List1D.h.

Referenced by STK::List1D< IVariable * >::popBackElts().

00376     {
00377       // if n==0 nothing to do
00378       if (n<=0) return;
00379 #ifdef STK_DEBUG
00380       // is this structure just a pointer?
00381       if (this->isRef())
00382       { throw std::runtime_error("List1D::eraseElts(pos, n) "
00383                             "can't operate on references.");
00384       }
00385 #endif
00386 #ifdef STK_BOUNDS_CHECK
00387       // check bounds
00388       if (this->first() > pos)
00389       { throw std::out_of_range("List1D::eraseElts(pos, n) "
00390                            "this->first() > pos");
00391       }
00392       if (this->last() < pos)
00393       { throw std::out_of_range("List1D::eraseElts(pos, n) "
00394                            "this->last() < pos");
00395       }
00396       if (this->last() < pos+n-1)
00397       { throw std::out_of_range("List1D::eraseElts(pos, n) "
00398                            "this->last() < pos+n-1");
00399       }
00400 #endif
00401       // Move the current position to j
00402       moveCurr(pos);
00403       CellHo<TYPE>* p2 = pcurr_;  // get jth cell
00404       moveCurrLeft();             // set current to (j-1)th pos
00405       // delete n cells
00406       for (Integer l=1; l<=n; l++)
00407       { CellHo<TYPE>* p3 = p2->getRight();  // get right cell in p3
00408         delete p2;                          // delete current cell
00409         p2 = p3;                            // next
00410       }
00411       // If the last col have been erased update plast_
00412       if (pos+n-1 == this->last()) { plast_ = pcurr_;}
00413       // Update the dimension of the container
00414       this->decLast(n);
00415       // If we have erased all cols
00416       if (this->size() == 0)
00417       { setDefault();}
00418       else
00419       { p2->setLeft(pcurr_);        // p2 is the j+n cell
00420         pcurr_->setRight(p2);       // pcurr_ is on j-1 cell
00421         // If the first col has been erased
00422         if (pos == this->first())
00423         { pfirst_  = p2;   // Set the new beg cell
00424           pcurr_ = p2;   // pcurr_
00425           curr_++;       // and current position
00426         }
00427       }
00428     }

template<class TYPE>
void STK::List1D< TYPE >::swapElts ( Integer  j1,
Integer  j2 
) [inline]

Swapping the j1th col and the j2th col.

Definition at line 431 of file STK_List1D.h.

00432     {
00433 #ifdef STK_BOUNDS_CHECK
00434       if (j1<this->first())
00435       { throw std::out_of_range("List1D::swapElts(j1, j2) "
00436                            "j1<this->first()");
00437       }
00438       if (j1>this->last())
00439       { throw std::out_of_range("List1D::swapElts(j1, j2) "
00440                            "j1>this->last()");
00441       }
00442       if (j2<this->first())
00443       { throw std::out_of_range("List1D::swapElts(j1, j2) "
00444                            "j2<this->first()");
00445       }
00446       if (j2>this->last())
00447       { throw std::out_of_range("List1D::swapElts(j1, j2) "
00448                            "j2>this->last()");
00449       }
00450 #endif
00451       // get j1th value in aux
00452       moveCurr(j1);
00453       CellHo<TYPE> *p1 = pcurr_;
00454       TYPE aux = p1->getData();
00455       // set j2th value in j1th position
00456       moveCurr(j2);
00457       (*p1) = pcurr_->getData();
00458       // set j2th value to aux
00459       (*pcurr_) = aux;
00460     }

template<class TYPE>
List1D<TYPE>& STK::List1D< TYPE >::operator= ( const List1D< TYPE > &  T  )  [inline]

operator = : overwrite the Array1D with t. We resize the object if this and T does not have the same size but if they have the same size, we don't modify the range of the object.

Parameters:
T the container to copy

Definition at line 470 of file STK_List1D.h.

00471     {
00472       // We have to resize if this and T have not the same size
00473       // but if they have the same size, we don't scale the index
00474       if (this->size()!=T.size()) { this->resize(T.getRange());}
00475 
00476       /* copy without ovelapping.                                     */
00477       if (this->first() < T.first())
00478       { CellHo<TYPE> *p1 = pfirst_, *pt1 = T.pfirst_;
00479         for (Integer j=1; j<=this->size(); j++)
00480         { (*p1) = pt1->getData();   // overwrite the value
00481           p1    = p1->getRight();   // Goto Right for this
00482           pt1   = pt1->getRight();  // Goto Right for T
00483         }
00484       }
00485       else
00486       { CellHo<TYPE> *p1 = plast_, *pt1 = T.plast_;
00487         for (Integer j=this->size(); j>=1; j--)
00488         { (*p1) = pt1->getData();   // overwrite the value
00489           p1    = p1->getLeft();    // Goto Left for this
00490           pt1   = pt1->getLeft();   // Goto Left for T
00491         }
00492       }
00493       return *this;
00494     }

template<class TYPE>
List1D<TYPE>& STK::List1D< TYPE >::operator= ( const TYPE &  v  )  [inline]

operator= : set the container to a constant value.

Parameters:
v the value to set

Definition at line 499 of file STK_List1D.h.

00500     {
00501       CellHo<TYPE>* p1 = pfirst_;
00502       for (Integer j=1; j<=this->size(); j++)
00503       { p1->setData(v);      // overwrite the value of the current cell
00504         p1    = p1->getRight(); // Goto Right
00505       }
00506       return *this;
00507     }

template<class TYPE>
void STK::List1D< TYPE >::initialize ( const Inx I  )  [inline, protected]

Protected function for initialization.

Definition at line 513 of file STK_List1D.h.

Referenced by STK::List1D< IVariable * >::List1D(), and STK::List1D< IVariable * >::pushBackElts().

00514     {
00515        // set new dimensions
00516       this->setRange(I);
00517       if (this->empty())
00518       { 
00519         setDefault(); return;
00520       }
00521       // Allocate memory for the cells
00522       CellHo<TYPE> *p1, *p2;        // Auxiliary pointer for cells
00523 
00524       p1 = new CellHo<TYPE>();        // pointer on the first cell
00525       pfirst_ = p1;                     // set the first cell
00526       // main loop for the other cells
00527       for (Integer j=this->first()+1; j<=this->last(); j++)
00528       { try
00529         { p2 = new CellHo<TYPE>(p1);}        // try to allocate memory
00530         catch (std::bad_alloc & error)       // if an alloc error occur
00531         { while (p1 != (CellHo<TYPE>*)NULL)  // for all cells allocated
00532           { p2 = p1->getLeft();              // get the cell left
00533             delete p1;                       // delete the cell
00534             p1 = p2;                         // and iterate
00535           }
00536           // set default
00537           setDefault();
00538           this->setRange();
00539           // and throw the exception
00540           throw std::runtime_error("List1D::initialize(beg, end) "
00541                               "memory allocation failed.");
00542         }
00543         // if no error is catched
00544         p1->setRight(p2);      // Set the right cell
00545         p1 = p2;               // and iterate
00546       }
00547       plast_ = p1;              // Set the last cell
00548       plast_->setRight(pfirst_);  // the last cell point on the first cell
00549       pfirst_->setLeft(plast_);   // the first cell point on the last cell
00550 
00551       curr_  = this->first();    // current position is first position
00552       pcurr_ = pfirst_;            // Current cell is first cell
00553     }

template<class TYPE>
void STK::List1D< TYPE >::freeMem (  )  [inline, protected]

Protected function for desallocation.

Reimplemented in STK::DataFrame.

Definition at line 556 of file STK_List1D.h.

Referenced by STK::List1D< IVariable * >::clear(), and STK::List1D< IVariable * >::~List1D().

00557     {
00558       if (this->isRef()) return;   // Nothing to do for ref
00559       CellHo<TYPE> *p2, *p1 =pfirst_;   // Auxiliary pointers for cells
00560       // for all cells
00561       for (Integer j=this->first(); j<=this->last(); j++)
00562       { p2 = p1->getRight();               // get the right cell
00563         delete p1;                         // delete the curent cell
00564         p1 = p2;                           // and iterate
00565       }
00566       setDefault();
00567     }

template<class TYPE>
void STK::List1D< TYPE >::setDefault (  )  [inline, protected]

Protected function for setting members to default.

Definition at line 571 of file STK_List1D.h.

Referenced by STK::List1D< IVariable * >::eraseElts(), STK::List1D< IVariable * >::freeMem(), and STK::List1D< IVariable * >::initialize().

00572     { pfirst_  = (CellHo<TYPE>*)NULL;
00573       plast_  = (CellHo<TYPE>*)NULL;
00574       pcurr_ = (CellHo<TYPE>*)NULL;
00575       curr_  = this->first();
00576     }

template<class TYPE>
void STK::List1D< TYPE >::moveCurrLeft (  )  const [inline, private]

Private function for moving the current position : it's very low level manipulation functions, and no check is done at this level. Note that it is constant functions, as the object itself is not modified, the modified members are mutable. Move Current position to left

Definition at line 595 of file STK_List1D.h.

Referenced by STK::List1D< IVariable * >::eraseElts(), and STK::List1D< IVariable * >::moveCurr().

00596     {
00597       pcurr_ = pcurr_->getLeft();
00598       curr_--;
00599     }

template<class TYPE>
void STK::List1D< TYPE >::moveCurrRight (  )  const [inline, private]

move Current position to right

Definition at line 602 of file STK_List1D.h.

Referenced by STK::List1D< IVariable * >::moveCurr().

00603     {
00604       pcurr_ = pcurr_->getRight();
00605       curr_++;
00606     }

template<class TYPE>
void STK::List1D< TYPE >::moveCurr ( Integer  j  )  const [inline, private]

Move current position to j

Definition at line 609 of file STK_List1D.h.

Referenced by STK::List1D< IVariable * >::eraseElts(), STK::List1D< IVariable * >::getElt(), STK::List1D< IVariable * >::insertElts(), and STK::List1D< IVariable * >::swapElts().

00610     { 
00611       // if j is greater than the current
00612       if (j>curr_)
00613       {
00614         if ((j-curr_) <= (this->last()-j))    // if j is near the current
00615           for( ;curr_!=j; ) moveCurrRight(); // move to right
00616         else                                 // else we are near the end
00617           for(curr_ = this->last(), pcurr_ = plast_ ; curr_!=j; )
00618             moveCurrLeft();
00619       }
00620       else  // else j is less than the current
00621       {
00622         if ((curr_-j) <= (j-this->first()))  // if j is near the current
00623           for( ;curr_!=j; ) moveCurrLeft();  // move to left
00624         else                                 // else we are near the beg
00625           for( curr_ = this->first(), pcurr_ = pfirst_; curr_!=j; )
00626             moveCurrRight();
00627       }
00628     }


Member Data Documentation

template<class TYPE>
CellHo<TYPE>* STK::List1D< TYPE >::pfirst_ [protected]

template<class TYPE>
CellHo<TYPE>* STK::List1D< TYPE >::plast_ [protected]

template<class TYPE>
Integer STK::List1D< TYPE >::curr_ [mutable, private]

template<class TYPE>
CellHo<TYPE>* STK::List1D< TYPE >::pcurr_ [mutable, private]


The documentation for this class was generated from the following file:

Generated on Fri Sep 25 10:31:01 2009 for STK++ by  doxygen 1.5.8