CompactListList< T > Class Template Reference

A packed storage unstructured matrix of objects of type <T> using an offset table for access. More...

Public Types

typedef T value_type
 The value type the list contains. More...
 
typedef Tpointer
 The pointer type for non-const access to value_type items. More...
 
typedef const Tconst_pointer
 The pointer type for const access to value_type items. More...
 
typedef Treference
 The type used for storing into value_type objects. More...
 
typedef const Tconst_reference
 The type used for reading from constant value_type objects. More...
 
typedef label size_type
 The type to represent the size of a CompactListList. More...
 

Public Member Functions

 CompactListList () noexcept=default
 Default construct. More...
 
 CompactListList (const CompactListList< T > &list)
 Copy construct. More...
 
 CompactListList (CompactListList< T > &&list)
 Move construct. More...
 
 CompactListList (CompactListList< T > &list, bool reuse)
 Copy/move construct as specified. More...
 
 CompactListList (const label mRows, const label nVals)
 Construct from number of rows and number of values. More...
 
 CompactListList (const label mRows, const label nVals, const Foam::zero)
 
 CompactListList (const label mRows, const label nVals, const T &)
 
 CompactListList (const labelUList &listSizes)
 Construct given list of row-sizes. More...
 
 CompactListList (const labelUList &listSizes, const T &val)
 Construct given list of row-sizes and a uniform value. More...
 
 CompactListList (Istream &is)
 Construct from Istream. More...
 
autoPtr< CompactListList< T > > clone () const
 Clone. More...
 
bool empty () const noexcept
 True if the number of rows/sublists is zero. More...
 
label size () const noexcept
 The primary size (the number of rows/sublists) More...
 
label totalSize () const
 The total addressed size. More...
 
const labelListoffsets () const noexcept
 Return the offset table (= size()+1) More...
 
labelListoffsets () noexcept
 Return non-const access to the offset table. More...
 
const List< T > & values () const noexcept
 Return the packed matrix of values. More...
 
List< T > & values () noexcept
 Return non-const access to the packed matrix of values. More...
 
const Tcdata () const noexcept
 Return const pointer to the first data in values() More...
 
Tdata () noexcept
 Return pointer to the first data in values() More...
 
const char * cdata_bytes () const noexcept
 
char * data_bytes () noexcept
 
std::streamsize size_bytes () const noexcept
 
std::streamsize byteSize () const
 
labelList sizes () const
 The local row sizes. Same as localSizes. More...
 
const labelUList localStarts () const
 The local row starts. More...
 
labelList localSizes () const
 The local row sizes. More...
 
label localStart (const label i) const
 Starting offset for given row. More...
 
label localEnd (const label i) const
 End offset (exclusive) for given row. More...
 
label localSize (const label i) const
 Size of given row. More...
 
List< labelRangeranges () const
 Return start/size ranges for all sub-lists. More...
 
labelRange range (const label i) const
 Return start/size range for given sub-list. More...
 
label maxSize () const
 The max row length used. More...
 
void clear ()
 Clear addressing and contents. More...
 
void resize (const label mRows)
 Reset size of CompactListList. More...
 
void resize (const label mRows, const label nVals)
 Redimension CompactListList. More...
 
void resize_nocopy (const label mRows, const label nVals)
 Redimension without preserving existing content. More...
 
void resize (const label mRows, const label nVals, const T &)
 Redimension CompactListList and fill new elements with value. More...
 
void resize (const labelUList &listSizes)
 Reset dimensions of CompactListList. More...
 
void setLocalSize (const label rowi, const label len)
 Alter local addressing size for given row, does not change content. More...
 
void setSize (const label mRows)
 Redimension - same as resize() More...
 
void setSize (const label mRows, const label nVals)
 Redimension - same as resize() More...
 
void setSize (const label mRows, const label nVals, const T &)
 Redimension - same as resize() More...
 
void setSize (const labelUList &listSizes)
 Reset sizes - same as resize() More...
 
void swap (CompactListList< T > &other)
 Swap contents. More...
 
void transfer (CompactListList< T > &list)
 Transfer contents into this and annul the argument. More...
 
label toGlobal (const label rowi, const label i) const
 
label toLocal (const label rowi, const label i) const
 From global to local index on rowi. More...
 
label findRow (const label i) const
 Find row where global index comes from. Binary search. More...
 
label whichRow (const label i) const
 Which row does global index come from? Binary search. More...
 
template<class SubListType = List<T>>
List< SubListType > unpack () const
 Return non-compact list of lists. More...
 
template<class SubListType = List<T>>
List< SubListType > unpack (const labelRange &range) const
 Return non-compact list of lists for the range of sub-lists. More...
 
void operator= (const CompactListList< T > &list)
 Copy assignment. More...
 
void operator= (CompactListList< T > &&list)
 Move assignment. More...
 
void operator= (const T &val)
 Assignment of all entries to the given value. More...
 
void operator= (const Foam::zero)
 Assignment of all entries to zero. More...
 
UList< TlocalList (const label i)
 Return non-const access to sub-list (no subscript checking) More...
 
const UList< TlocalList (const label i) const
 Return const access to sub-list (no subscript checking) More...
 
UList< Toperator[] (const label i)
 Return row as UList - same as localList method. More...
 
const UList< Toperator[] (const label i) const
 Return row as const UList - same as localList method. More...
 
Toperator() (const label i, const label j)
 Return subscript-checked element. More...
 
const Toperator() (const label i, const label j) const
 Return const subscript-checked element. More...
 
IstreamreadList (Istream &is)
 
OstreamwriteList (Ostream &os, const label shortLen=0) const
 Write CompactListList as offsets/values pair. More...
 
const List< T > & m () const noexcept
 Const access to the packed matrix of values. More...
 
List< T > & m () noexcept
 Non-const access to the packed matrix of values. More...
 
label index (const label rowi, const label colj) const
 Return flat index into packed values. More...
 
label whichColumn (const label rowi, const label i) const
 Get column within specified row that corresponds to global index. More...
 
template<class ListListType >
Foam::CompactListList< TpackImpl (const ListListType &lists, const bool checkOverflow)
 
template<class SubListType >
Foam::CompactListList< Tpack (const UList< SubListType > &lists, const bool checkOverflow)
 
template<class SubListType , class Addr >
Foam::CompactListList< Tpack (const IndirectListBase< SubListType, Addr > &lists, const bool checkOverflow)
 
template<class SubListType >
Foam::List< SubListType > unpack () const
 
template<class SubListType >
Foam::List< SubListType > unpack (const labelRange &range) const
 

Static Public Member Functions

static const CompactListList< T > & null ()
 Return a CompactListList reference to a nullObject. More...
 
template<class SubListType = List<T>>
static CompactListList< Tpack (const UList< SubListType > &lists, const bool checkOverflow=false)
 Construct by packing together the list of lists. More...
 
template<class SubListType , class Addr >
static CompactListList< Tpack (const IndirectListBase< SubListType, Addr > &lists, const bool checkOverflow=false)
 Construct by packing together an indirect list of lists. More...
 

Friends

Istreamoperator>> (Istream &, CompactListList< T > &)
 
Ostreamoperator (Ostream &, const CompactListList< T > &)
 Write CompactListList as offsets/values pair. More...
 

Detailed Description

template<class T>
class Foam::CompactListList< T >

A packed storage unstructured matrix of objects of type <T> using an offset table for access.

The offset table is the size of the number of rows+1 whose elements are the accumulated sizes of the rows, i.e.

  • offset[i] gives the index of first element of row i
  • offset[i+1] - offset[i] is the number of elements in row i

Note that an empty CompactListList should have empty offsets (not size 1).

Source files

Definition at line 71 of file CompactListList.H.

Member Typedef Documentation

◆ value_type

typedef T value_type

The value type the list contains.

Definition at line 111 of file CompactListList.H.

◆ pointer

typedef T* pointer

The pointer type for non-const access to value_type items.

Definition at line 114 of file CompactListList.H.

◆ const_pointer

typedef const T* const_pointer

The pointer type for const access to value_type items.

Definition at line 117 of file CompactListList.H.

◆ reference

typedef T& reference

The type used for storing into value_type objects.

Definition at line 120 of file CompactListList.H.

◆ const_reference

typedef const T& const_reference

The type used for reading from constant value_type objects.

Definition at line 123 of file CompactListList.H.

◆ size_type

typedef label size_type

The type to represent the size of a CompactListList.

Definition at line 126 of file CompactListList.H.

Constructor & Destructor Documentation

◆ CompactListList() [1/10]

CompactListList ( )
defaultnoexcept

Default construct.

◆ CompactListList() [2/10]

CompactListList ( const CompactListList< T > &  list)
inline

Copy construct.

Definition at line 60 of file CompactListListI.H.

◆ CompactListList() [3/10]

CompactListList ( CompactListList< T > &&  list)
inline

Move construct.

Definition at line 71 of file CompactListListI.H.

◆ CompactListList() [4/10]

CompactListList ( CompactListList< T > &  list,
bool  reuse 
)
inline

Copy/move construct as specified.

Definition at line 82 of file CompactListListI.H.

◆ CompactListList() [5/10]

CompactListList ( const label  mRows,
const label  nVals 
)
inline

Construct from number of rows and number of values.

Definition at line 95 of file CompactListListI.H.

◆ CompactListList() [6/10]

CompactListList ( const label  mRows,
const label  nVals,
const Foam::zero   
)
inline

Construct from number of rows, number of values initializing all elements to zero

Definition at line 109 of file CompactListListI.H.

◆ CompactListList() [7/10]

CompactListList ( const label  mRows,
const label  nVals,
const T val 
)
inline

Construct from number of rows, number of values and uniform value for all elements.

Definition at line 124 of file CompactListListI.H.

◆ CompactListList() [8/10]

CompactListList ( const labelUList listSizes)
explicit

Construct given list of row-sizes.

Definition at line 146 of file CompactListList.C.

References UList< T >::size().

Here is the call graph for this function:

◆ CompactListList() [9/10]

CompactListList ( const labelUList listSizes,
const T val 
)

Construct given list of row-sizes and a uniform value.

Definition at line 175 of file CompactListList.C.

References UList< T >::size().

Here is the call graph for this function:

◆ CompactListList() [10/10]

CompactListList ( Istream is)
explicit

Construct from Istream.

Definition at line 34 of file CompactListListIO.C.

Member Function Documentation

◆ null()

const Foam::CompactListList< T > & null
inlinestatic

Return a CompactListList reference to a nullObject.

Definition at line 35 of file CompactListListI.H.

◆ pack() [1/4]

static CompactListList< T > pack ( const UList< SubListType > &  lists,
const bool  checkOverflow = false 
)
static

Construct by packing together the list of lists.

◆ pack() [2/4]

static CompactListList< T > pack ( const IndirectListBase< SubListType, Addr > &  lists,
const bool  checkOverflow = false 
)
static

Construct by packing together an indirect list of lists.

◆ clone()

Clone.

Definition at line 140 of file CompactListListI.H.

References Foam::New().

Here is the call graph for this function:

◆ empty()

bool empty
inlinenoexcept

True if the number of rows/sublists is zero.

Definition at line 212 of file CompactListListI.H.

◆ size()

Foam::label size
inlinenoexcept

The primary size (the number of rows/sublists)

Definition at line 219 of file CompactListListI.H.

Referenced by decompositionMethod::calcCellCells(), and SloanRenumber::renumber().

Here is the caller graph for this function:

◆ totalSize()

Foam::label totalSize
inline

The total addressed size.

Definition at line 234 of file CompactListListI.H.

◆ offsets() [1/2]

const Foam::labelList & offsets
inlinenoexcept

Return the offset table (= size()+1)

Definition at line 149 of file CompactListListI.H.

Referenced by decompositionMethod::calcCellCells(), metisLikeDecomp::decompose(), decompositionInformation::decompositionInformation(), globalIndex::get(), and Foam::ensightOutput::Detail::getPolysFacePoints().

Here is the caller graph for this function:

◆ offsets() [2/2]

Foam::labelList & offsets
inlinenoexcept

Return non-const access to the offset table.

Definition at line 156 of file CompactListListI.H.

◆ values() [1/2]

const Foam::List< T > & values
inlinenoexcept

Return the packed matrix of values.

Definition at line 163 of file CompactListListI.H.

Referenced by metisLikeDecomp::decompose(), decompositionInformation::decompositionInformation(), and Foam::ensightOutput::Detail::getPolysFacePoints().

Here is the caller graph for this function:

◆ values() [2/2]

Foam::List< T > & values
inlinenoexcept

Return non-const access to the packed matrix of values.

Definition at line 170 of file CompactListListI.H.

◆ cdata()

const T * cdata
inlinenoexcept

Return const pointer to the first data in values()

Definition at line 177 of file CompactListListI.H.

◆ data()

T * data
inlinenoexcept

Return pointer to the first data in values()

Definition at line 184 of file CompactListListI.H.

◆ cdata_bytes()

const char * cdata_bytes
inlinenoexcept

Return const pointer to underlying values storage, reinterpreted as byte data.

Note
Only meaningful for contiguous data

Definition at line 191 of file CompactListListI.H.

◆ data_bytes()

char * data_bytes
inlinenoexcept

Return pointer to underlying values storage, reinterpreted as byte data.

Note
Only meaningful for contiguous data

Definition at line 198 of file CompactListListI.H.

◆ size_bytes()

std::streamsize size_bytes
inlinenoexcept

Number of contiguous bytes for the values data, no runtime check that the type is actually contiguous

Note
Only meaningful for contiguous data

Definition at line 205 of file CompactListListI.H.

◆ byteSize()

std::streamsize byteSize

Number of contiguous bytes for the values data, runtime FatalError if type is not contiguous

Definition at line 235 of file CompactListList.C.

References Foam::abort(), Foam::FatalError, and FatalErrorInFunction.

Here is the call graph for this function:

◆ sizes()

Foam::labelList sizes
inline

The local row sizes. Same as localSizes.

Definition at line 227 of file CompactListListI.H.

◆ localStarts()

const Foam::labelUList localStarts
inline

The local row starts.

Definition at line 250 of file CompactListListI.H.

References UList< label >::null().

Here is the call graph for this function:

◆ localSizes()

Foam::labelList localSizes

The local row sizes.

Definition at line 330 of file CompactListList.C.

◆ localStart()

Foam::label localStart ( const label  i) const
inline

Starting offset for given row.

Definition at line 261 of file CompactListListI.H.

◆ localEnd()

Foam::label localEnd ( const label  i) const
inline

End offset (exclusive) for given row.

Definition at line 268 of file CompactListListI.H.

◆ localSize()

Foam::label localSize ( const label  i) const
inline

Size of given row.

Definition at line 275 of file CompactListListI.H.

◆ ranges()

Return start/size ranges for all sub-lists.

Definition at line 256 of file CompactListList.C.

◆ range()

Foam::labelRange range ( const label  i) const

Return start/size range for given sub-list.

Definition at line 248 of file CompactListList.C.

◆ maxSize()

Foam::label maxSize
inline

The max row length used.

Definition at line 242 of file CompactListListI.H.

◆ clear()

void clear
inline

Clear addressing and contents.

Definition at line 354 of file CompactListListI.H.

◆ resize() [1/4]

void resize ( const label  mRows)
inline

Reset size of CompactListList.

Note
this form only allows truncation of the CompactListList.

Definition at line 362 of file CompactListListI.H.

References Foam::abort(), Foam::FatalError, FatalErrorInFunction, and Foam::nl.

Here is the call graph for this function:

◆ resize() [2/4]

void resize ( const label  mRows,
const label  nVals 
)
inline

Redimension CompactListList.

Definition at line 389 of file CompactListListI.H.

References Foam::Zero.

◆ resize_nocopy()

void resize_nocopy ( const label  mRows,
const label  nVals 
)
inline

Redimension without preserving existing content.

Definition at line 401 of file CompactListListI.H.

References Foam::Zero.

◆ resize() [3/4]

void resize ( const label  mRows,
const label  nVals,
const T val 
)
inline

Redimension CompactListList and fill new elements with value.

Definition at line 413 of file CompactListListI.H.

References Foam::Zero.

◆ resize() [4/4]

void resize ( const labelUList listSizes)

Reset dimensions of CompactListList.

Definition at line 279 of file CompactListList.C.

References clear(), and UList< T >::size().

Here is the call graph for this function:

◆ setLocalSize()

void setLocalSize ( const label  rowi,
const label  len 
)

Alter local addressing size for given row, does not change content.

Definition at line 311 of file CompactListList.C.

References delta.

◆ setSize() [1/4]

void setSize ( const label  mRows)
inline

Redimension - same as resize()

Definition at line 427 of file CompactListListI.H.

References resize().

Referenced by decompositionMethod::calcCellCells().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setSize() [2/4]

void setSize ( const label  mRows,
const label  nVals 
)
inline

Redimension - same as resize()

Definition at line 434 of file CompactListListI.H.

References resize().

Here is the call graph for this function:

◆ setSize() [3/4]

void setSize ( const label  mRows,
const label  nVals,
const T val 
)
inline

Redimension - same as resize()

Definition at line 445 of file CompactListListI.H.

References resize().

Here is the call graph for this function:

◆ setSize() [4/4]

void setSize ( const labelUList listSizes)
inline

Reset sizes - same as resize()

Definition at line 457 of file CompactListListI.H.

References resize().

Here is the call graph for this function:

◆ swap()

void swap ( CompactListList< T > &  other)

Swap contents.

Definition at line 353 of file CompactListList.C.

◆ transfer()

void transfer ( CompactListList< T > &  list)

Transfer contents into this and annul the argument.

Definition at line 369 of file CompactListList.C.

References PtrList< T >::transfer().

Referenced by CompactListList< T >::operator=().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ toGlobal()

Foam::label toGlobal ( const label  rowi,
const label  i 
) const
inline

From local index on rowi to global (flat) indexing into packed values

Definition at line 298 of file CompactListListI.H.

Referenced by CompactListList< T >::index().

Here is the caller graph for this function:

◆ toLocal()

Foam::label toLocal ( const label  rowi,
const label  i 
) const
inline

From global to local index on rowi.

Definition at line 309 of file CompactListListI.H.

References Foam::abort(), Foam::FatalError, FatalErrorInFunction, and Foam::nl.

Referenced by CompactListList< T >::whichColumn().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ findRow()

Foam::label findRow ( const label  i) const
inline

Find row where global index comes from. Binary search.

Returns
-1 if out-of-bounds

Definition at line 330 of file CompactListListI.H.

References Foam::findLower().

Here is the call graph for this function:

◆ whichRow()

Foam::label whichRow ( const label  i) const
inline

Which row does global index come from? Binary search.

FatalError if out-of-bounds

Definition at line 337 of file CompactListListI.H.

References Foam::abort(), Foam::FatalError, FatalErrorInFunction, and Foam::nl.

Here is the call graph for this function:

◆ unpack() [1/4]

List< SubListType > unpack ( ) const

Return non-compact list of lists.

Referenced by decompositionMethod::decompose(), multiLevelDecomp::decompose(), and renumberMethod::renumber().

Here is the caller graph for this function:

◆ unpack() [2/4]

List< SubListType > unpack ( const labelRange range) const

Return non-compact list of lists for the range of sub-lists.

◆ operator=() [1/4]

void operator= ( const CompactListList< T > &  list)
inline

Copy assignment.

Definition at line 469 of file CompactListListI.H.

◆ operator=() [2/4]

void operator= ( CompactListList< T > &&  list)
inline

Move assignment.

Definition at line 485 of file CompactListListI.H.

References CompactListList< T >::transfer().

Here is the call graph for this function:

◆ operator=() [3/4]

void operator= ( const T val)
inline

Assignment of all entries to the given value.

Definition at line 501 of file CompactListListI.H.

◆ operator=() [4/4]

void operator= ( const Foam::zero  )
inline

Assignment of all entries to zero.

Definition at line 508 of file CompactListListI.H.

References Foam::Zero.

◆ localList() [1/2]

Foam::UList< T > localList ( const label  i)
inline

Return non-const access to sub-list (no subscript checking)

Definition at line 283 of file CompactListListI.H.

◆ localList() [2/2]

const Foam::UList< T > localList ( const label  i) const
inline

Return const access to sub-list (no subscript checking)

Definition at line 291 of file CompactListListI.H.

◆ operator[]() [1/2]

Foam::UList< T > operator[] ( const label  i)
inline

Return row as UList - same as localList method.

Definition at line 516 of file CompactListListI.H.

◆ operator[]() [2/2]

const Foam::UList< T > operator[] ( const label  i) const
inline

Return row as const UList - same as localList method.

Definition at line 524 of file CompactListListI.H.

◆ operator()() [1/2]

T & operator() ( const label  i,
const label  j 
)
inline

Return subscript-checked element.

Definition at line 531 of file CompactListListI.H.

◆ operator()() [2/2]

const T & operator() ( const label  i,
const label  j 
) const
inline

Return const subscript-checked element.

Definition at line 542 of file CompactListListI.H.

◆ readList()

Foam::Istream & readList ( Istream is)

Read CompactListList as offsets/values pair from Istream, discards current list contents

Definition at line 46 of file CompactListListIO.C.

◆ writeList()

Foam::Ostream & writeList ( Ostream os,
const label  shortLen = 0 
) const

Write CompactListList as offsets/values pair.

Definition at line 56 of file CompactListListIO.C.

References os().

Referenced by Foam::operator<<().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m() [1/2]

const List< T > & m ( ) const
inlinenoexcept

Const access to the packed matrix of values.

Definition at line 417 of file CompactListList.H.

Referenced by decompositionMethod::calcCellCells().

Here is the caller graph for this function:

◆ m() [2/2]

List< T > & m ( )
inlinenoexcept

Non-const access to the packed matrix of values.

Definition at line 420 of file CompactListList.H.

◆ index()

label index ( const label  rowi,
const label  colj 
) const
inline

Return flat index into packed values.

Definition at line 423 of file CompactListList.H.

References CompactListList< T >::toGlobal().

Here is the call graph for this function:

◆ whichColumn()

label whichColumn ( const label  rowi,
const label  i 
) const
inline

Get column within specified row that corresponds to global index.

Definition at line 429 of file CompactListList.H.

References CompactListList< T >::toLocal().

Here is the call graph for this function:

◆ packImpl()

Foam::CompactListList< T > packImpl ( const ListListType &  lists,
const bool  checkOverflow 
)

Definition at line 59 of file CompactListList.C.

References forAll.

◆ pack() [3/4]

Foam::CompactListList< T > pack ( const UList< SubListType > &  lists,
const bool  checkOverflow 
)

Definition at line 113 of file CompactListList.C.

◆ pack() [4/4]

Foam::CompactListList< T > pack ( const IndirectListBase< SubListType, Addr > &  lists,
const bool  checkOverflow 
)

Definition at line 129 of file CompactListList.C.

◆ unpack() [3/4]

Foam::List< SubListType > unpack ( ) const

Definition at line 387 of file CompactListList.C.

References forAll.

◆ unpack() [4/4]

Foam::List< SubListType > unpack ( const labelRange range) const

Definition at line 403 of file CompactListList.C.

References UList< T >::begin(), and range.

Here is the call graph for this function:

Friends And Related Function Documentation

◆ operator>>

Istream & operator>> ( Istream is,
CompactListList< T > &  list 
)
friend

Read CompactListList offsets/values pair from Istream, discarding existing contents

Definition at line 441 of file CompactListList.H.

◆ operator

Ostream & operator ( Ostream ,
const CompactListList< T > &   
)
friend

Write CompactListList as offsets/values pair.


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