casa
$Rev:20696$

Class holding the row numbers in a RefTable. More...
#include <RefRows.h>
Public Member Functions  
RefRows (const Vector< uInt > &rowNumbers, Bool isSliced=False, Bool collapse=False)  
Create the object from a Vector containing the row numbers.  
RefRows (uInt start, uInt end, uInt incr=1)  
Create the object from a single start,end,incr slice.  
RefRows (const RefRows &other)  
Copy constructor (reference semantics).  
RefRows &  operator= (const RefRows &other) 
Assignment (copy semantics).  
~RefRows ()  
Bool  operator== (const RefRows &other) const 
Do this and the other object reference the same rows?  
Vector< uInt >  convert (const Vector< uInt > &rootRownrs) const 
Convert this object to a Vector<uInt> by applying the given row numbers.  
Vector< uInt >  convert () const 
Convert this object to a Vector<uInt> by deslicing it.  
uInt  nrows () const 
Return the number of rows given by this object.  
uInt  nrow () const 
uInt  firstRow () const 
Return the first row in the object.  
Bool  isSliced () const 
Represents the vector a slice?  
const Vector< uInt > &  rowVector () const 
Get the row vector as is (thus sliced if the object contains slices).  
Private Member Functions  
uInt  fillNrows () const 
Fill the itsNrows variable.  
Private Attributes  
Vector< uInt >  itsRows 
uInt  itsNrows 
Bool  itsSliced 
Class holding the row numbers in a RefTable.
Internal
RefRows is used to hold the row numbers forming a view on another table. It contains a vector which can hold the row numbers in 2 ways:
ScalarColumn::getColumnRange
. Class RefRowsSliceIter can be used to iterate through a RefRows object. Each step in the iteration goes to the next a slice. If the RefRows objct contains a simple series of row numbers, each slice contains only one row number. This can degrade performance, so it is possible to use shortcuts by testing if the object contains slices (using isSliced()
) and getting the row number vector directly (using rowVector()
).
RefRows is meant to have one class representing the various ways of picking row numbers. This simplifies the interface of the table and data manager classes dealing with getting/putting the data.
casa::RefRows::RefRows  (  const Vector< uInt > &  rowNumbers, 
Bool  isSliced = False , 

Bool  collapse = False 

) 
Create the object from a Vector containing the row numbers.
When isSliced==False
, the vector is treated as containing individual row numbers, otherwise as containing slices in the form start,end,incr. When collapse==True
, it will try to collapse the individual row numbers to the slice form (to save memory).
casa::RefRows::RefRows  (  uInt  start, 
uInt  end,  
uInt  incr = 1 

) 
Create the object from a single start,end,incr slice.
casa::RefRows::RefRows  (  const RefRows &  other  ) 
Copy constructor (reference semantics).
Vector<uInt> casa::RefRows::convert  (  const Vector< uInt > &  rootRownrs  )  const 
Convert this object to a Vector<uInt> by applying the given row numbers.
It is used to convert the RefRows object with row numbers in a RefTable to row numbers in the original root table.
Vector<uInt> casa::RefRows::convert  (  )  const 
Convert this object to a Vector<uInt> by deslicing it.
I.e. it linearizes the row numbers.
uInt casa::RefRows::fillNrows  (  )  const [private] 
uInt casa::RefRows::firstRow  (  )  const [inline] 
Bool casa::RefRows::isSliced  (  )  const [inline] 
uInt casa::RefRows::nrow  (  )  const [inline] 
Definition at line 126 of file RefRows.h.
References fillNrows(), and itsNrows.
uInt casa::RefRows::nrows  (  )  const [inline] 
Return the number of rows given by this object.
If the object contains slices, it counts the number of rows represented by each slice.
Definition at line 124 of file RefRows.h.
References fillNrows(), and itsNrows.
Do this and the other object reference the same rows?
const Vector<uInt>& casa::RefRows::rowVector  (  )  const [inline] 
uInt casa::RefRows::itsNrows [private] 
Vector<uInt> casa::RefRows::itsRows [private] 
Definition at line 148 of file RefRows.h.
Referenced by firstRow(), and rowVector().
Bool casa::RefRows::itsSliced [private] 
Definition at line 150 of file RefRows.h.
Referenced by isSliced().