HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T > Class Template Reference

#include <UT_PageArray.h>

Classes

struct  NotVoid
 
class  PageTable
 
class  PageTableEntry
 

Public Types

typedef UT_PageArray< DATA_T,
TSIZE, TABLEHARDENED,
PAGESHARDENED, THEPAGEBITS,
IDX_T > 
ThisType
 
typedef DATA_T DataType
 
typedef IDX_T IndexType
 

Public Member Functions

 UT_PageArray ()
 
 UT_PageArray (exint tuplesize)
 
 UT_PageArray (UT_Storage storage)
 
 UT_PageArray (exint tuplesize, UT_Storage storage)
 
 UT_PageArray (const ThisType &that)
 
template<typename SRC_DATA_T , exint SRC_TSIZE, bool SRC_TABLEHARDENED, bool SRC_PAGESHARDENED>
 UT_PageArray (const UT_PageArray< SRC_DATA_T, SRC_TSIZE, SRC_TABLEHARDENED, SRC_PAGESHARDENED, THEPAGEBITS, IDX_T > &that)
 
SYS_FORCE_INLINE ~UT_PageArray ()
 
SYS_FORCE_INLINE void clear ()
 
void clearAndDestroy ()
 
SYS_FORCE_INLINE ThisTypeoperator= (const ThisType &that)
 
template<typename SRC_DATA_T , exint SRC_TSIZE, bool SRC_TABLEHARDENED, bool SRC_PAGESHARDENED>
SYS_FORCE_INLINE ThisTypeoperator= (const UT_PageArray< SRC_DATA_T, SRC_TSIZE, SRC_TABLEHARDENED, SRC_PAGESHARDENED, THEPAGEBITS, IDX_T > &that)
 
template<typename SRC_DATA_T , exint SRC_TSIZE, bool SRC_TABLEHARDENED, bool SRC_PAGESHARDENED>
void replace (const UT_PageArray< SRC_DATA_T, SRC_TSIZE, SRC_TABLEHARDENED, SRC_PAGESHARDENED, THEPAGEBITS, IDX_T > &that)
 
SYS_FORCE_INLINE NotVoidType operator() (IDX_T i, exint component=0) const
 Read element i's specified component (default component 0). More...
 
template<typename DEST_DATA_T = DATA_T>
SYS_FORCE_INLINE DEST_DATA_T get (IDX_T i, exint component=0) const
 
template<typename DEST_DATA_T = NotVoidType, exint DEST_TSIZE = theSafeTupleSize>
SYS_FORCE_INLINE
UT_FixedVector< DEST_DATA_T,
DEST_TSIZE > 
getVector (IDX_T i) const
 
SYS_FORCE_INLINE NotVoidTypeoperator() (IDX_T i, exint component=0)
 
template<typename SRC_DATA_T >
SYS_FORCE_INLINE void set (IDX_T i, SRC_DATA_T v)
 component == 0 in this version More...
 
template<typename SRC_DATA_T >
SYS_FORCE_INLINE void add (IDX_T i, SRC_DATA_T v)
 component == 0 in this version More...
 
template<typename SRC_DATA_T >
SYS_FORCE_INLINE void set (IDX_T i, exint component, SRC_DATA_T v)
 
template<typename SRC_DATA_T >
SYS_FORCE_INLINE void add (IDX_T i, exint component, SRC_DATA_T v)
 
template<int OP, typename SRC_DATA_T >
SYS_FORCE_INLINE void op (IDX_T i, exint component, SRC_DATA_T v)
 
template<typename SRC_DATA_T , exint SRC_TSIZE, bool SRC_INSTANTIATED>
SYS_FORCE_INLINE void setVector (IDX_T i, const UT_FixedVector< SRC_DATA_T, SRC_TSIZE, SRC_INSTANTIATED > &v)
 
template<typename SRC_DATA_T , exint SRC_TSIZE, bool SRC_INSTANTIATED>
SYS_FORCE_INLINE void addVector (IDX_T i, const UT_FixedVector< SRC_DATA_T, SRC_TSIZE, SRC_INSTANTIATED > &v)
 
template<int OP, typename SRC_DATA_T , exint SRC_TSIZE>
SYS_FORCE_INLINE void opVector (IDX_T i, const UT_FixedVector< SRC_DATA_T, SRC_TSIZE > &v)
 
SYS_FORCE_INLINE IDX_T size () const
 
SYS_FORCE_INLINE IDX_T capacity () const
 
void setCapacity (IDX_T newcapacity)
 
void setCapacityIfNeeded (IDX_T newcapacity)
 
void setSize (IDX_T newsize)
 
void setSize (IDX_T newsize, NotVoidType initval)
 
void setSize (IDX_T newsize, const UT_FixedVector< NotVoidType, theSafeTupleSize > &initval)
 
void setSize (IDX_T newsize, const UT_Defaults &initval)
 
void setConstant (IDX_T start, IDX_T end, NotVoidType v)
 
void setConstant (IDX_T start, IDX_T end, const UT_FixedVector< NotVoidType, theSafeTupleSize > &v)
 
void setConstant (IDX_T start, IDX_T end, const UT_Defaults &v)
 
void setStorage (const UT_Storage newstorage)
 
void setTupleSize (exint newtuplesize, const UT_Defaults &v)
 
int64 getMemoryUsage (bool inclusive) const
 
void countMemory (UT_MemoryCounter &counter, bool inclusive) const
 
void moveRange (IDX_T srcstart, IDX_T deststart, IDX_T nelements)
 
template<typename SRC_DATA_T , exint SRC_TSIZE, bool SRC_TABLEHARDENED, bool SRC_PAGESHARDENED>
void moveRange (const UT_PageArray< SRC_DATA_T, SRC_TSIZE, SRC_TABLEHARDENED, SRC_PAGESHARDENED, THEPAGEBITS, IDX_T > &src, IDX_T srcstart, IDX_T deststart, IDX_T nelements)
 
void swapRange (IDX_T astart, IDX_T bstart, IDX_T nelements)
 
void copy (IDX_T dest, IDX_T src)
 Copies a single element from src to dest within this. More...
 
template<typename T >
SYS_FORCE_INLINE void getRange (IDX_T srcstart, IDX_T nelements, T *dest) const
 
template<typename T >
SYS_FORCE_INLINE void setRange (IDX_T deststart, IDX_T nelements, const T *src)
 
template<typename DEST_DATA_T , exint DEST_TSIZE, bool DEST_INSTANTIATED>
void getVectorRange (IDX_T srcstart, IDX_T nelements, UT_FixedVector< DEST_DATA_T, DEST_TSIZE, DEST_INSTANTIATED > *dest) const
 
template<typename SRC_DATA_T , exint SRC_TSIZE, bool SRC_INSTANTIATED>
void setVectorRange (IDX_T deststart, IDX_T nelements, const UT_FixedVector< SRC_DATA_T, SRC_TSIZE, SRC_INSTANTIATED > *src)
 
SYS_FORCE_INLINE bool isTableHardened () const
 Returns true iff the table isn't shared with any other UT_PageArray's. More...
 
SYS_FORCE_INLINE UT_PageArray
< DATA_T, TSIZE, true,
PAGESHARDENED, THEPAGEBITS,
IDX_T > & 
hardenTable ()
 
template<bool including_capacity = false>
SYS_FORCE_INLINE UT_PageArray
< DATA_T, TSIZE, true, true,
THEPAGEBITS, IDX_T > & 
hardenAllPages (IDX_T start=IDX_T(0), IDX_T end=IDX_T(-1))
 
template<bool including_capacity = false>
SYS_FORCE_INLINE void tryCompressAllPages (IDX_T start=IDX_T(0), IDX_T end=IDX_T(-1))
 
SYS_FORCE_INLINE exint getTupleSize () const
 
SYS_FORCE_INLINE UT_Storage getStorage () const
 
SYS_FORCE_INLINE bool isPageConstant (UT_PageNum pagenum) const
 Returns true iff the specified page is constant-compressed. More...
 
SYS_FORCE_INLINE bool isArrayZero () const
 Returns true iff the entire array is constant & zero. More...
 
SYS_FORCE_INLINE void setPageConstant (UT_PageNum pagenum, const NotVoidType &val)
 
template<typename SRC_DATA_T >
SYS_FORCE_INLINE void setPageConstant (UT_PageNum pagenum, const UT_FixedVector< SRC_DATA_T, theSafeTupleSize > &val)
 
template<typename SRC_DATA_T >
SYS_FORCE_INLINE void setPageConstant (UT_PageNum pagenum, const SRC_DATA_T *values)
 
SYS_FORCE_INLINE bool isPageHard (UT_PageNum pagenum) const
 
SYS_FORCE_INLINE NotVoidTypehardenPage (UT_PageNum pagenum)
 
SYS_FORCE_INLINE NotVoidTypehardenPageNoInit (UT_PageNum pagenum)
 
SYS_FORCE_INLINE NotVoidTypeunshareConstantPage (UT_PageNum pagenum)
 
SYS_FORCE_INLINE void tryCompressPage (UT_PageNum pagenum)
 
const NotVoidTypegetPageData (UT_PageNum pagenum) const
 
NotVoidTypegetPageData (UT_PageNum pagenum)
 
bool decRefIffSharedTable ()
 
bool decRefIffSharedPage (UT_PageNum pagenum)
 
SYS_FORCE_INLINE int64 getGuaranteedInt (IDX_T i) const
 
bool hasNanInRange (IDX_T start, IDX_T end) const
 
template<typename SrcNotVoidType >
void fillNonConstWithConst (NotVoidType *__restrict destpagedata, NotVoidType *destpageend, const SrcNotVoidType *__restrict stuple, exint mintuplesize, exint desttupleextra)
 
template<typename SrcNotVoidType >
void copyNonConst (NotVoidType *__restrict destpagedata, const SrcNotVoidType *__restrict srcpagedata, const exint desttuplesize, const exint srctuplesize, UT_PageOff ntuples)
 
template<typename DEST_DATA_T >
SYS_FORCE_INLINE const
UT_PageArray< DEST_DATA_T,
TSIZE, TABLEHARDENED,
PAGESHARDENED, THEPAGEBITS,
IDX_T > & 
castType () const
 
template<typename DEST_DATA_T >
SYS_FORCE_INLINE UT_PageArray
< DEST_DATA_T, TSIZE,
TABLEHARDENED, PAGESHARDENED,
THEPAGEBITS, IDX_T > & 
castType ()
 
template<exint DEST_TSIZE>
SYS_FORCE_INLINE const
UT_PageArray< DATA_T,
DEST_TSIZE, TABLEHARDENED,
PAGESHARDENED, THEPAGEBITS,
IDX_T > & 
castTupleSize () const
 
template<exint DEST_TSIZE>
SYS_FORCE_INLINE UT_PageArray
< DATA_T, DEST_TSIZE,
TABLEHARDENED, PAGESHARDENED,
THEPAGEBITS, IDX_T > & 
castTupleSize ()
 

Static Public Member Functions

static SYS_FORCE_INLINE IDX_T roundUpCapacity (IDX_T capacity)
 
static SYS_FORCE_INLINE UT_PageNum pageNum (IDX_T i)
 
static SYS_FORCE_INLINE UT_PageNum numPages (IDX_T nelements)
 
static SYS_FORCE_INLINE UT_PageOff pageOff (IDX_T i)
 
static SYS_FORCE_INLINE UT_PageOff pageStart (IDX_T page)
 

Static Public Attributes

static const UT_Storage theStorage = UT_StorageNum<DATA_T>::theStorage
 
static const exint theTupleSize = TSIZE
 
static const exint theSafeTupleSize = (TSIZE==-1) ? 3 : TSIZE
 
static const exint thePageBits = THEPAGEBITS
 
static const exint thePageSize = (exint(1)<<thePageBits)
 
static const exint thePageMask = thePageSize-1
 

Protected Types

typedef NotVoid< DATA_T >::type NotVoidType
 

Protected Member Functions

template<typename DEST_DATA_T = DATA_T>
DEST_DATA_T getUnknownType (IDX_T i, exint component=0) const
 
template<int OP, typename SRC_DATA_T >
void opUnknownType (IDX_T i, exint component, SRC_DATA_T v)
 
template<int OP, typename SRC_DATA_T , exint SRC_TSIZE>
void opVectorUnknownType (IDX_T i, const UT_FixedVector< SRC_DATA_T, SRC_TSIZE > &v)
 
template<typename DEST_DATA_T , exint DEST_TSIZE>
UT_FixedVector< DEST_DATA_T,
DEST_TSIZE > 
getVectorUnknownType (IDX_T i) const
 
template<typename DEST_DATA_T , exint DEST_TSIZE>
UT_FixedVector< DEST_DATA_T,
DEST_TSIZE > 
getVectorUnknownSize (IDX_T i) const
 
template<typename DEST_DATA_T , exint DEST_TSIZE>
UT_FixedVector< DEST_DATA_T,
DEST_TSIZE > 
getVectorMismatchedSize (IDX_T i) const
 
void hardenAllPagesUnknownType (IDX_T start, IDX_T end)
 
void tryCompressAllPagesUnknownType (IDX_T start, IDX_T end)
 
void tryCompressPageUnknownType (UT_PageNum pagenum)
 
template<typename SRC_DATA_T >
void setPageConstantUnknownType (UT_PageNum pagenum, const UT_FixedVector< SRC_DATA_T, theSafeTupleSize > &val)
 
template<typename SRC_DATA_T >
void setPageConstantUnknownType (UT_PageNum pagenum, const SRC_DATA_T *values)
 
template<typename SRC_DATA_T >
void setPageConstantMismatchedType (UT_PageNum pagenum, const SRC_DATA_T *values)
 
void forceHardenTable (IDX_T newcapacity)
 

Static Protected Member Functions

static SYS_FORCE_INLINE bool decCounterIffAbove1 (SYS_AtomicCounter &counter)
 
static SYS_FORCE_INLINE NotVoidType getConstant (const PageTableEntry *const page, exint component, exint tuplesize=TSIZE)
 
static SYS_FORCE_INLINE const
NotVoidType
getConstantPtr (const PageTableEntry *page, exint component=0, exint tuplesize=TSIZE)
 
static SYS_FORCE_INLINE
NotVoidType
getConstantPtr (PageTableEntry *page, exint component=0, exint tuplesize=TSIZE)
 
static SYS_FORCE_INLINE void makeConstant (PageTableEntry *page, const UT_FixedVector< NotVoidType, theSafeTupleSize > &val)
 
static void makeConstant (PageTableEntry *page, const NotVoidType &val, exint tuplesize=TSIZE)
 
static void makeConstant (PageTableEntry *page, const NotVoidType *values, exint tuplesize)
 
template<typename SrcType >
static void replacePage (PageTableEntry *dest, const typename SrcType::PageTableEntry *src, exint desttuplesize, exint srctuplesize, UT_PageOff destpagesize, UT_PageOff destpagecapacity)
 
template<typename SrcType >
static void copyPartialPage (PageTableEntry *dest, const typename SrcType::PageTableEntry *src, exint desttuplesize, exint srctuplesize, UT_PageOff destoff, UT_PageOff srcoff, UT_PageOff ntuples, UT_PageOff destpagecapacity)
 
template<typename SrcType >
static void makeConstantFrom (PageTableEntry *dest, const typename SrcType::PageTableEntry *src, exint desttuplesize, exint srctuplesize)
 
template<typename SrcNotVoidType >
static void fillNonConstWithConst (NotVoidType *destpagedata, NotVoidType *destpageend, const SrcNotVoidType *stuple, exint mintuplesize, exint desttupleextra)
 
template<typename SrcNotVoidType >
static void copyNonConst (NotVoidType *destpagedata, const SrcNotVoidType *srcpagedata, exint desttuplesize, exint srctuplesize, UT_PageOff ntuples)
 
template<typename SrcNotVoidType >
static bool isEqualConst (const NotVoidType *tuple, const SrcNotVoidType *stuple, exint mintuplesize)
 
static void hardenConstantPage (PageTableEntry *page, UT_PageOff pagecapacity, exint tuplesize=TSIZE)
 
static void hardenConstantPageNoInit (PageTableEntry *page, UT_PageOff pagecapacity, exint tuplesize=TSIZE)
 
static void hardenSharedPage (PageTableEntry *page, UT_PageOff pagecapacity, exint tuplesize=TSIZE)
 
static void hardenSharedPageNoInit (PageTableEntry *page, UT_PageOff pagecapacity, exint tuplesize=TSIZE)
 
template<typename T >
static SYS_FORCE_INLINE bool isZero (const T &val)
 
template<typename T >
static SYS_FORCE_INLINE bool isZero (const T *val, exint tuplesize)
 
template<typename T0 , typename T1 >
static SYS_FORCE_INLINE bool isEqual (const T0 *a, const T1 *b, exint tuplesize)
 
template<typename DEST_TYPE , typename SRC_TYPE , exint SRC_TSIZE, bool SRC_INSTANTIATED>
static SYS_FORCE_INLINE
UT_FixedVector< DEST_TYPE,
SRC_TSIZE > 
convertVectorStorage (const UT_FixedVector< SRC_TYPE, SRC_TSIZE, SRC_INSTANTIATED > &src)
 
static void hardenConstantPage (PageTable *pages, PageTableEntry *page)
 
static void hardenConstantPageNoInit (PageTable *pages, PageTableEntry *page)
 
static void hardenConstantPage (PageTable *pages, PageTableEntry *page, exint tuplesize)
 
static void hardenConstantPageNoInit (PageTable *pages, PageTableEntry *page, exint tuplesize)
 
static void hardenSharedPage (PageTable *pages, PageTableEntry *page)
 
static void hardenSharedPageNoInit (PageTable *pages, PageTableEntry *page)
 
static void hardenSharedPage (PageTable *pages, PageTableEntry *page, exint tuplesize)
 
static void hardenSharedPageNoInit (PageTable *pages, PageTableEntry *page, exint tuplesize)
 

Friends

template<typename DATA_T2 , exint TSIZE2, bool TABLEHARDENED2, bool PAGESHARDENED2, exint THEPAGEBITS2, typename IDX_T2 >
class UT_PageArray
 

Detailed Description

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
class UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >

Definition at line 235 of file UT_PageArray.h.

Member Typedef Documentation

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
typedef DATA_T UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::DataType

Definition at line 251 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
typedef IDX_T UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::IndexType

Definition at line 258 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
typedef NotVoid<DATA_T>::type UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::NotVoidType
protected

Definition at line 244 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
typedef UT_PageArray<DATA_T,TSIZE,TABLEHARDENED,PAGESHARDENED,THEPAGEBITS,IDX_T> UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::ThisType

Definition at line 250 of file UT_PageArray.h.

Constructor & Destructor Documentation

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::UT_PageArray ( )
inline

The default constructor can only be used if the tuple size and storage type are known at compile time.

Definition at line 262 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::UT_PageArray ( exint  tuplesize)
inline

This constructor can only be used if the storage type is known at compile time, but the tuple size is not.

Definition at line 271 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::UT_PageArray ( UT_Storage  storage)
inline

This constructor can only be used if the storage type is known at compile time, but the tuple size is not.

Definition at line 283 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::UT_PageArray ( exint  tuplesize,
UT_Storage  storage 
)
inline

This constructor can only be used if the tuple size and storage type are unknown at compile time.

Definition at line 294 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::UT_PageArray ( const ThisType that)
inline

This just references that's page table, unless TABLEHARDENED or PAGESHARDENED. If TABLEHARDENED and !PAGESHARDENED, the pages are referenced, and if PAGESHARDENED, the pages are copied.

Definition at line 310 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename SRC_DATA_T , exint SRC_TSIZE, bool SRC_TABLEHARDENED, bool SRC_PAGESHARDENED>
UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::UT_PageArray ( const UT_PageArray< SRC_DATA_T, SRC_TSIZE, SRC_TABLEHARDENED, SRC_PAGESHARDENED, THEPAGEBITS, IDX_T > &  that)
inlineexplicit

Definition at line 317 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
SYS_FORCE_INLINE UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::~UT_PageArray ( )
inline

Definition at line 324 of file UT_PageArray.h.

Member Function Documentation

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename SRC_DATA_T >
SYS_FORCE_INLINE void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::add ( IDX_T  i,
SRC_DATA_T  v 
)
inline

component == 0 in this version

Definition at line 618 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename SRC_DATA_T >
SYS_FORCE_INLINE void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::add ( IDX_T  i,
exint  component,
SRC_DATA_T  v 
)
inline

Definition at line 633 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename SRC_DATA_T , exint SRC_TSIZE, bool SRC_INSTANTIATED>
SYS_FORCE_INLINE void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::addVector ( IDX_T  i,
const UT_FixedVector< SRC_DATA_T, SRC_TSIZE, SRC_INSTANTIATED > &  v 
)
inline

Definition at line 724 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
SYS_FORCE_INLINE IDX_T UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::capacity ( ) const
inline

Definition at line 874 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<exint DEST_TSIZE>
SYS_FORCE_INLINE const UT_PageArray<DATA_T,DEST_TSIZE,TABLEHARDENED,PAGESHARDENED,THEPAGEBITS,IDX_T>& UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::castTupleSize ( ) const
inline

This is for setting the TSIZE template after checking getTupleSize(), if TSIZE wasn't already known.

Definition at line 1364 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<exint DEST_TSIZE>
SYS_FORCE_INLINE UT_PageArray<DATA_T,DEST_TSIZE,TABLEHARDENED,PAGESHARDENED,THEPAGEBITS,IDX_T>& UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::castTupleSize ( )
inline

This is for setting the TSIZE template after checking getTupleSize(), if TSIZE wasn't already known.

Definition at line 1372 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename DEST_DATA_T >
SYS_FORCE_INLINE const UT_PageArray<DEST_DATA_T,TSIZE,TABLEHARDENED,PAGESHARDENED,THEPAGEBITS,IDX_T>& UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::castType ( ) const
inline

This is for setting the DATA_T template after checking getStorage(), if DATA_T wasn't already known.

Definition at line 1343 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename DEST_DATA_T >
SYS_FORCE_INLINE UT_PageArray<DEST_DATA_T,TSIZE,TABLEHARDENED,PAGESHARDENED,THEPAGEBITS,IDX_T>& UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::castType ( )
inline

This is for setting the DATA_T template after checking getStorage(), if DATA_T wasn't already known.

Definition at line 1351 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
SYS_FORCE_INLINE void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::clear ( void  )
inline

Definition at line 330 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::clearAndDestroy ( void  )
inline

Definition at line 336 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename DEST_TYPE , typename SRC_TYPE , exint SRC_TSIZE, bool SRC_INSTANTIATED>
static SYS_FORCE_INLINE UT_FixedVector<DEST_TYPE, SRC_TSIZE> UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::convertVectorStorage ( const UT_FixedVector< SRC_TYPE, SRC_TSIZE, SRC_INSTANTIATED > &  src)
inlinestaticprotected

Definition at line 3554 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::copy ( IDX_T  dest,
IDX_T  src 
)
inline

Copies a single element from src to dest within this.

Definition at line 1018 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename SrcNotVoidType >
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::copyNonConst ( NotVoidType *__restrict  destpagedata,
const SrcNotVoidType *__restrict  srcpagedata,
const exint  desttuplesize,
const exint  srctuplesize,
UT_PageOff  ntuples 
)

Definition at line 1611 of file UT_PageArrayImpl.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename SrcNotVoidType >
static void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::copyNonConst ( NotVoidType destpagedata,
const SrcNotVoidType *  srcpagedata,
exint  desttuplesize,
exint  srctuplesize,
UT_PageOff  ntuples 
)
staticprotected

This is just a helper function for copying a non-constant source page to a non-constant destination page, with conversion. NOTE: destpagedata must point to an UNSHARED page's data. NOTE: The two data ranges must be NON-OVERLAPPING.

template<typename DATA_T , exint TSIZE, bool TABLEHARDENED, bool PAGESHARDENED, exint THEPAGEBITS, typename IDX_T >
template<typename SrcType >
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::copyPartialPage ( PageTableEntry dest,
const typename SrcType::PageTableEntry *  src,
exint  desttuplesize,
exint  srctuplesize,
UT_PageOff  destoff,
UT_PageOff  srcoff,
UT_PageOff  ntuples,
UT_PageOff  destpagecapacity 
)
staticprotected

This replaces part of dest with part of src. It keeps dest constant if easy. If desttuplesize > srctuplesize, it only replaces the first srctuplesize components. This will not check to see if the whole page is being replaced, so if you want the src page to be referenced, or overwrite a constant value, when writing the whole page, use replacePage.

Definition at line 1202 of file UT_PageArrayImpl.h.

template<typename DATA_T , exint TSIZE, bool TABLEHARDENED, bool PAGESHARDENED, exint THEPAGEBITS, typename IDX_T >
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::countMemory ( UT_MemoryCounter counter,
bool  inclusive 
) const

Count memory usage using a UT_MemoryCounter in order to count shared memory correctly. If inclusive is true, the size of this object is counted, else only memory owned by this object is counted. If this is pointed to by the calling object, inclusive should be true. If this is contained in the calling object, inclusive should be false. (Its memory was already counted in the size of the calling object.) Include UT_PageArrayImpl.h to call this.

Definition at line 394 of file UT_PageArrayImpl.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
static SYS_FORCE_INLINE bool UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::decCounterIffAbove1 ( SYS_AtomicCounter counter)
inlinestaticprotected

Definition at line 2570 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
bool UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::decRefIffSharedPage ( UT_PageNum  pagenum)
inline

NOTE: Don't use this unless you know what you're doing! This is for the case where a non-POD type that requires destruction is masquerading as a POD type in here, e.g. GA_OffsetList as UT_FixedVector<int64,2>. When destroying a page, this first needs to be called. If it returns true, the page was shared, so it was just decRef'd, meaning that the data don't need to be destructed. If it returns false, the page was not shared, so the data need to be destructed before deleting the page.

Definition at line 1702 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
bool UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::decRefIffSharedTable ( )
inline

NOTE: Don't use this unless you know what you're doing! This is for the case where a non-POD type that requires destruction is masquerading as a POD type in here, e.g. GA_OffsetList as UT_FixedVector<int64,2>. When destroying a table, this first needs to be called. If it returns true, the table was shared, so it was just decRef'd, meaning that the data don't need to be destructed. If it returns false, the table was not shared, so the data need to be destructed before deleting the table.

Definition at line 1679 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename SrcNotVoidType >
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::fillNonConstWithConst ( NotVoidType *__restrict  destpagedata,
NotVoidType destpageend,
const SrcNotVoidType *__restrict  stuple,
exint  mintuplesize,
exint  desttupleextra 
)

Definition at line 1545 of file UT_PageArrayImpl.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename SrcNotVoidType >
static void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::fillNonConstWithConst ( NotVoidType destpagedata,
NotVoidType destpageend,
const SrcNotVoidType *  stuple,
exint  mintuplesize,
exint  desttupleextra 
)
staticprotected

This is just a helper function for writing a single source tuple (or nullptr) to a block of tuple data, with conversion. NOTE: destpagedata must point to an UNSHARED page's data.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::forceHardenTable ( IDX_T  newcapacity)
inlineprotected

Definition at line 3474 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename DEST_DATA_T = DATA_T>
SYS_FORCE_INLINE DEST_DATA_T UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::get ( IDX_T  i,
exint  component = 0 
) const
inline

This get function may seem redundant, given operator(), but it gives a simple way to read from a non-const UT_PageArray without calling the non-const operator() and potentially hardening pages. It just explicitly adds const. It also allows data type conversion and reading when the type is unknown at compile time. It should hopefully be inlined in the no-conversion case; it's less critical in the conversion case.

Definition at line 491 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
static SYS_FORCE_INLINE NotVoidType UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::getConstant ( const PageTableEntry *const  page,
exint  component,
exint  tuplesize = TSIZE 
)
inlinestaticprotected

Definition at line 2593 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
static SYS_FORCE_INLINE const NotVoidType* UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::getConstantPtr ( const PageTableEntry page,
exint  component = 0,
exint  tuplesize = TSIZE 
)
inlinestaticprotected

NOTE: It may seem like overkill to take a PageTableEntry *, but the returned pointer may be inside the pointer that the caller owns, so we need the caller's pointer, not a copy. getConstant doesn't have this issue, since it can use the local pointer and read the value.

Definition at line 2624 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
static SYS_FORCE_INLINE NotVoidType* UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::getConstantPtr ( PageTableEntry page,
exint  component = 0,
exint  tuplesize = TSIZE 
)
inlinestaticprotected

NOTE: It may seem like overkill to take a PageTableEntry *, but the returned pointer may be inside the pointer that the caller owns, so we need the caller's pointer, not a copy. getConstant doesn't have this issue, since it can use the local pointer and read the value.

Definition at line 2649 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
SYS_FORCE_INLINE int64 UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::getGuaranteedInt ( IDX_T  i) const
inline

Only call this if DATA_T is void and you are absolutely, 100% CERTAIN that the storage type is int16, int32, or int64. NOTE: Really! Be careful!

Definition at line 1730 of file UT_PageArray.h.

template<typename DATA_T , exint TSIZE, bool TABLEHARDENED, bool PAGESHARDENED, exint THEPAGEBITS, typename IDX_T >
int64 UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::getMemoryUsage ( bool  inclusive) const

Get the total of all memory referred-to by this. NOTE: This does not handle shared memory correctly. Include UT_PageArrayImpl.h to call this.

Definition at line 363 of file UT_PageArrayImpl.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
const NotVoidType* UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::getPageData ( UT_PageNum  pagenum) const
inline

Returns a pointer to the data of a page. WARNING: DO NOT call this if DATA_T is void! The pointer returned can depend on the type. This will return nullptr if the page is constant compressed to zero. If it's non-nullptr and isPageConstant(pagenum) returns true, there will only be one element (tuple) at that address.

Definition at line 1637 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
NotVoidType* UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::getPageData ( UT_PageNum  pagenum)
inline

Returns a pointer to the data of a page. WARNING: DO NOT call this if DATA_T is void! The pointer returned can depend on the type. NOTE: DO NOT MODIFY THE DATA if there's any chance the page or the table might be shared. Check isTableHard() and isPageHard(pagenum). This will return nullptr if the page is constant compressed to zero. If it's non-nullptr and isPageConstant(pagenum) returns true, there will only be one element (tuple) at that address.

Definition at line 1658 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename T >
SYS_FORCE_INLINE void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::getRange ( IDX_T  srcstart,
IDX_T  nelements,
T dest 
) const
inline

Copies nelements from srcstart in this to dest array Include UT_PageArrayImpl.h to call this.

Definition at line 1201 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
SYS_FORCE_INLINE UT_Storage UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::getStorage ( ) const
inline

Definition at line 1384 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
SYS_FORCE_INLINE exint UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::getTupleSize ( ) const
inline

Definition at line 1380 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename DEST_DATA_T = DATA_T>
DEST_DATA_T UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::getUnknownType ( IDX_T  i,
exint  component = 0 
) const
inlineprotected

Definition at line 1802 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename DEST_DATA_T = NotVoidType, exint DEST_TSIZE = theSafeTupleSize>
SYS_FORCE_INLINE UT_FixedVector<DEST_DATA_T,DEST_TSIZE> UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::getVector ( IDX_T  i) const
inline

Definition at line 501 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename DEST_DATA_T , exint DEST_TSIZE>
UT_FixedVector<DEST_DATA_T,DEST_TSIZE> UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::getVectorMismatchedSize ( IDX_T  i) const
inlineprotected

Definition at line 1999 of file UT_PageArray.h.

template<typename DATA_T , exint TSIZE, bool TABLEHARDENED, bool PAGESHARDENED, exint THEPAGEBITS, typename IDX_T>
template<typename DEST_DATA_T , exint DEST_TSIZE, bool DEST_INSTANTIATED>
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::getVectorRange ( IDX_T  srcstart,
IDX_T  nelements,
UT_FixedVector< DEST_DATA_T, DEST_TSIZE, DEST_INSTANTIATED > *  dest 
) const

Copies nelements from srcstart in this to dest array Include UT_PageArrayImpl.h to call this.

Definition at line 2244 of file UT_PageArrayImpl.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename DEST_DATA_T , exint DEST_TSIZE>
UT_FixedVector<DEST_DATA_T,DEST_TSIZE> UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::getVectorUnknownSize ( IDX_T  i) const
inlineprotected

Definition at line 1969 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename DEST_DATA_T , exint DEST_TSIZE>
UT_FixedVector<DEST_DATA_T,DEST_TSIZE> UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::getVectorUnknownType ( IDX_T  i) const
inlineprotected

Definition at line 1931 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<bool including_capacity = false>
SYS_FORCE_INLINE UT_PageArray<DATA_T,TSIZE,true,true,THEPAGEBITS,IDX_T>& UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::hardenAllPages ( IDX_T  start = IDX_T(0),
IDX_T  end = IDX_T(-1) 
)
inline

This forces all pages to be hardened, optionally including pages that are in the capacity but outside the size.

Definition at line 1275 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::hardenAllPagesUnknownType ( IDX_T  start,
IDX_T  end 
)
inlineprotected

Definition at line 2036 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
static void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::hardenConstantPage ( PageTableEntry page,
UT_PageOff  pagecapacity,
exint  tuplesize = TSIZE 
)
inlinestaticprotected

Definition at line 2941 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
static void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::hardenConstantPage ( PageTable pages,
PageTableEntry page 
)
inlinestaticprotected

NOTE: These have to be below the PageTable class definition, because for no apparent reason, even though you can have a regular local variable of type PageTable before, you can't have a function parameter of type PageTable before. sigh

Definition at line 3424 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
static void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::hardenConstantPage ( PageTable pages,
PageTableEntry page,
exint  tuplesize 
)
inlinestaticprotected

NOTE: These have to be below the PageTable class definition, because for no apparent reason, even though you can have a regular local variable of type PageTable before, you can't have a function parameter of type PageTable before. sigh

Definition at line 3436 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
static void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::hardenConstantPageNoInit ( PageTableEntry page,
UT_PageOff  pagecapacity,
exint  tuplesize = TSIZE 
)
inlinestaticprotected

Definition at line 2975 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
static void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::hardenConstantPageNoInit ( PageTable pages,
PageTableEntry page 
)
inlinestaticprotected

NOTE: These have to be below the PageTable class definition, because for no apparent reason, even though you can have a regular local variable of type PageTable before, you can't have a function parameter of type PageTable before. sigh

Definition at line 3430 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
static void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::hardenConstantPageNoInit ( PageTable pages,
PageTableEntry page,
exint  tuplesize 
)
inlinestaticprotected

NOTE: These have to be below the PageTable class definition, because for no apparent reason, even though you can have a regular local variable of type PageTable before, you can't have a function parameter of type PageTable before. sigh

Definition at line 3442 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
SYS_FORCE_INLINE NotVoidType* UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::hardenPage ( UT_PageNum  pagenum)
inline

Hardens the specified page if it is constant-compressed or shared. It returns a pointer to the data, but it will only be the correct type if DATA_T is not void.

Definition at line 1522 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
SYS_FORCE_INLINE NotVoidType* UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::hardenPageNoInit ( UT_PageNum  pagenum)
inline

Definition at line 1542 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
static void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::hardenSharedPage ( PageTableEntry page,
UT_PageOff  pagecapacity,
exint  tuplesize = TSIZE 
)
inlinestaticprotected

Definition at line 2990 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
static void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::hardenSharedPage ( PageTable pages,
PageTableEntry page 
)
inlinestaticprotected

NOTE: These have to be below the PageTable class definition, because for no apparent reason, even though you can have a regular local variable of type PageTable before, you can't have a function parameter of type PageTable before. sigh

Definition at line 3448 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
static void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::hardenSharedPage ( PageTable pages,
PageTableEntry page,
exint  tuplesize 
)
inlinestaticprotected

NOTE: These have to be below the PageTable class definition, because for no apparent reason, even though you can have a regular local variable of type PageTable before, you can't have a function parameter of type PageTable before. sigh

Definition at line 3460 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
static void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::hardenSharedPageNoInit ( PageTableEntry page,
UT_PageOff  pagecapacity,
exint  tuplesize = TSIZE 
)
inlinestaticprotected

Definition at line 3008 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
static void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::hardenSharedPageNoInit ( PageTable pages,
PageTableEntry page 
)
inlinestaticprotected

NOTE: These have to be below the PageTable class definition, because for no apparent reason, even though you can have a regular local variable of type PageTable before, you can't have a function parameter of type PageTable before. sigh

Definition at line 3454 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
static void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::hardenSharedPageNoInit ( PageTable pages,
PageTableEntry page,
exint  tuplesize 
)
inlinestaticprotected

NOTE: These have to be below the PageTable class definition, because for no apparent reason, even though you can have a regular local variable of type PageTable before, you can't have a function parameter of type PageTable before. sigh

Definition at line 3466 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
SYS_FORCE_INLINE UT_PageArray<DATA_T,TSIZE,true,PAGESHARDENED,THEPAGEBITS,IDX_T>& UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::hardenTable ( )
inline

This ensures that the table itself is not shared. It's a good idea to do this before writing, to avoid having to check every time. Remember to use the returned reference, since it records in the template that it doesn't need to be hardened again. It should be a no-op if TABLEHARDENED is already true.

Definition at line 1261 of file UT_PageArray.h.

template<typename DATA_T , exint TSIZE, bool TABLEHARDENED, bool PAGESHARDENED, exint THEPAGEBITS, typename IDX_T>
bool UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::hasNanInRange ( IDX_T  start,
IDX_T  end 
) const

Returns true iff there is at least one NaN value in the given range. Include UT_PageArrayImpl.h to call this.

Definition at line 2364 of file UT_PageArrayImpl.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
SYS_FORCE_INLINE bool UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::isArrayZero ( ) const
inline

Returns true iff the entire array is constant & zero.

Definition at line 1398 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename T0 , typename T1 >
static SYS_FORCE_INLINE bool UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::isEqual ( const T0 *  a,
const T1 *  b,
exint  tuplesize 
)
inlinestaticprotected

Definition at line 3539 of file UT_PageArray.h.

template<typename DATA_T , exint TSIZE, bool TABLEHARDENED, bool PAGESHARDENED, exint THEPAGEBITS, typename IDX_T >
template<typename SrcNotVoidType >
bool UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::isEqualConst ( const NotVoidType tuple,
const SrcNotVoidType *  stuple,
exint  mintuplesize 
)
staticprotected

This is just a helper function for checking whether two constant pages are equal, up to the smaller of the two, to see if writing is necessary.

Definition at line 1677 of file UT_PageArrayImpl.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
SYS_FORCE_INLINE bool UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::isPageConstant ( UT_PageNum  pagenum) const
inline

Returns true iff the specified page is constant-compressed.

Definition at line 1390 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
SYS_FORCE_INLINE bool UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::isPageHard ( UT_PageNum  pagenum) const
inline

Returns true iff the specified page is "hard", i.e. NOT constant-compressed and NOT shared. NOTE: The table may or may not be hard.

Definition at line 1509 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
SYS_FORCE_INLINE bool UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::isTableHardened ( ) const
inline

Returns true iff the table isn't shared with any other UT_PageArray's.

Definition at line 1246 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename T >
static SYS_FORCE_INLINE bool UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::isZero ( const T val)
inlinestaticprotected

Definition at line 3509 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename T >
static SYS_FORCE_INLINE bool UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::isZero ( const T val,
exint  tuplesize 
)
inlinestaticprotected

Definition at line 3520 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
static SYS_FORCE_INLINE void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::makeConstant ( PageTableEntry page,
const UT_FixedVector< NotVoidType, theSafeTupleSize > &  val 
)
inlinestaticprotected

Definition at line 2653 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
static void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::makeConstant ( PageTableEntry page,
const NotVoidType val,
exint  tuplesize = TSIZE 
)
inlinestaticprotected

Definition at line 2724 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
static void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::makeConstant ( PageTableEntry page,
const NotVoidType values,
exint  tuplesize 
)
inlinestaticprotected

Definition at line 2812 of file UT_PageArray.h.

template<typename DATA_T , exint TSIZE, bool TABLEHARDENED, bool PAGESHARDENED, exint THEPAGEBITS, typename IDX_T >
template<typename SrcType >
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::makeConstantFrom ( PageTableEntry dest,
const typename SrcType::PageTableEntry *  src,
exint  desttuplesize,
exint  srctuplesize 
)
staticprotected

This version of makeConstant copies a const page onto this page, converting type if necessary, and supporting a different tuple size, so long as the destination size either isn't larger or is constant. NOTE: This would be templated on the actual templates of UT_PageArray, but somehow, Visual C++ can't deduce the type, so the template type has to be specified by the caller, and one argument is much easier to specify on every call than 4.

Definition at line 1319 of file UT_PageArrayImpl.h.

template<typename DATA_T , exint TSIZE, bool TABLEHARDENED, bool PAGESHARDENED, exint THEPAGEBITS, typename IDX_T>
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::moveRange ( IDX_T  srcstart,
IDX_T  deststart,
IDX_T  nelements 
)

Copies the nelements from srcstart to deststart The two ranges are allowed to overlap. Include UT_PageArrayImpl.h to call this.

Definition at line 493 of file UT_PageArrayImpl.h.

template<typename DATA_T , exint TSIZE, bool TABLEHARDENED, bool PAGESHARDENED, exint THEPAGEBITS, typename IDX_T>
template<typename SRC_DATA_T , exint SRC_TSIZE, bool SRC_TABLEHARDENED, bool SRC_PAGESHARDENED>
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::moveRange ( const UT_PageArray< SRC_DATA_T, SRC_TSIZE, SRC_TABLEHARDENED, SRC_PAGESHARDENED, THEPAGEBITS, IDX_T > &  src,
IDX_T  srcstart,
IDX_T  deststart,
IDX_T  nelements 
)

Copies the nelements from fromstart in src to tostart in this. The two ranges are allowed to overlap, even if &src==this. Include UT_PageArrayImpl.h to call this.

Definition at line 506 of file UT_PageArrayImpl.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
static SYS_FORCE_INLINE UT_PageNum UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::numPages ( IDX_T  nelements)
inlinestatic

Definition at line 1232 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<int OP, typename SRC_DATA_T >
SYS_FORCE_INLINE void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::op ( IDX_T  i,
exint  component,
SRC_DATA_T  v 
)
inline

Definition at line 638 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
SYS_FORCE_INLINE NotVoidType UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::operator() ( IDX_T  i,
exint  component = 0 
) const
inline

Read element i's specified component (default component 0).

Definition at line 448 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
SYS_FORCE_INLINE NotVoidType& UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::operator() ( IDX_T  i,
exint  component = 0 
)
inline

Get a non-const reference to element i's specified component (default component 0). WARNING: DO NOT call this if DATA_T is void! NOTE: Unlike set(), this must always harden, even if you're just writing a value that is already there.

Definition at line 569 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
SYS_FORCE_INLINE ThisType& UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::operator= ( const ThisType that)
inline

NOTE: Compilers seem not to use the operator= below when the template arguments match, so this operator= is necessary in order to avoid the compiler silently using its implicitly-defined assignment operator.

Definition at line 378 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename SRC_DATA_T , exint SRC_TSIZE, bool SRC_TABLEHARDENED, bool SRC_PAGESHARDENED>
SYS_FORCE_INLINE ThisType& UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::operator= ( const UT_PageArray< SRC_DATA_T, SRC_TSIZE, SRC_TABLEHARDENED, SRC_PAGESHARDENED, THEPAGEBITS, IDX_T > &  that)
inline

Definition at line 386 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<int OP, typename SRC_DATA_T >
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::opUnknownType ( IDX_T  i,
exint  component,
SRC_DATA_T  v 
)
inlineprotected

Definition at line 1877 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<int OP, typename SRC_DATA_T , exint SRC_TSIZE>
SYS_FORCE_INLINE void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::opVector ( IDX_T  i,
const UT_FixedVector< SRC_DATA_T, SRC_TSIZE > &  v 
)
inline

This looks gigantic, but it's mostly because of the different behaviour for different template values. If PAGESHARDENED is true, it'll skip checking for constant or shared pages altogether.

Definition at line 733 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<int OP, typename SRC_DATA_T , exint SRC_TSIZE>
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::opVectorUnknownType ( IDX_T  i,
const UT_FixedVector< SRC_DATA_T, SRC_TSIZE > &  v 
)
inlineprotected

Definition at line 1904 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
static SYS_FORCE_INLINE UT_PageNum UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::pageNum ( IDX_T  i)
inlinestatic

Definition at line 1228 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
static SYS_FORCE_INLINE UT_PageOff UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::pageOff ( IDX_T  i)
inlinestatic

Definition at line 1236 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
static SYS_FORCE_INLINE UT_PageOff UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::pageStart ( IDX_T  page)
inlinestatic

Definition at line 1240 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename SRC_DATA_T , exint SRC_TSIZE, bool SRC_TABLEHARDENED, bool SRC_PAGESHARDENED>
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::replace ( const UT_PageArray< SRC_DATA_T, SRC_TSIZE, SRC_TABLEHARDENED, SRC_PAGESHARDENED, THEPAGEBITS, IDX_T > &  that)
inline

Completely replace this UT_PageArray with that, referencing the pages or table, if allowed by the template arguments.

Definition at line 395 of file UT_PageArray.h.

template<typename DATA_T , exint TSIZE, bool TABLEHARDENED, bool PAGESHARDENED, exint THEPAGEBITS, typename IDX_T >
template<typename SrcType >
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::replacePage ( PageTableEntry dest,
const typename SrcType::PageTableEntry *  src,
exint  desttuplesize,
exint  srctuplesize,
UT_PageOff  destpagesize,
UT_PageOff  destpagecapacity 
)
staticprotected

This replaces dest with src. It references if possible and keeps dest constant if easy. If desttuplesize > srctuplesize, it only replaces the first srctuplesize components.

Definition at line 1119 of file UT_PageArrayImpl.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
static SYS_FORCE_INLINE IDX_T UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::roundUpCapacity ( IDX_T  capacity)
inlinestatic

This helper function forces a (non-negative) capacity to be an acceptable value: either A) a power of two less than a full page in size, or B) a multiple of the page size.

Definition at line 887 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename SRC_DATA_T >
SYS_FORCE_INLINE void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::set ( IDX_T  i,
SRC_DATA_T  v 
)
inline

component == 0 in this version

Definition at line 612 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename SRC_DATA_T >
SYS_FORCE_INLINE void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::set ( IDX_T  i,
exint  component,
SRC_DATA_T  v 
)
inline

This looks gigantic, but it's mostly because of the different behaviour for different template values. If PAGESHARDENED is true, it'll skip checking for constant or shared pages altogether.

Definition at line 628 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::setCapacity ( IDX_T  newcapacity)
inline

Definition at line 902 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::setCapacityIfNeeded ( IDX_T  newcapacity)
inline

Definition at line 915 of file UT_PageArray.h.

template<typename DATA_T , exint TSIZE, bool TABLEHARDENED, bool PAGESHARDENED, exint THEPAGEBITS, typename IDX_T>
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::setConstant ( IDX_T  start,
IDX_T  end,
NotVoidType  v 
)

Set all of the values in the range [start,end) to v. This will constant-compress pages if allowed and the pages are completely overwritten with the given value. This version of setConstant only works if DATA_T is a numeric type. If the tuple size is > 1, it will write v to all components.

Definition at line 112 of file UT_PageArrayImpl.h.

template<typename DATA_T , exint TSIZE, bool TABLEHARDENED, bool PAGESHARDENED, exint THEPAGEBITS, typename IDX_T>
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::setConstant ( IDX_T  start,
IDX_T  end,
const UT_FixedVector< NotVoidType, theSafeTupleSize > &  v 
)

Set all of the values in the range [start,end) to v. This will constant-compress pages if allowed and the pages are completely overwritten with the given value. This version of setConstant only works if DATA_T is a numeric type and TSIZE >= 1.

Definition at line 135 of file UT_PageArrayImpl.h.

template<typename DATA_T , exint TSIZE, bool TABLEHARDENED, bool PAGESHARDENED, exint THEPAGEBITS, typename IDX_T>
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::setConstant ( IDX_T  start,
IDX_T  end,
const UT_Defaults v 
)

Set all of the values in the range [start,end) to v. This will constant-compress pages if allowed and the pages are completely overwritten with the given value.

Definition at line 155 of file UT_PageArrayImpl.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
SYS_FORCE_INLINE void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::setPageConstant ( UT_PageNum  pagenum,
const NotVoidType val 
)
inline

Sets all components of all elements of the specified page to the given value.

Definition at line 1418 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename SRC_DATA_T >
SYS_FORCE_INLINE void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::setPageConstant ( UT_PageNum  pagenum,
const UT_FixedVector< SRC_DATA_T, theSafeTupleSize > &  val 
)
inline

Sets all components of all elements of the specified page to the given value.

Definition at line 1436 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename SRC_DATA_T >
SYS_FORCE_INLINE void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::setPageConstant ( UT_PageNum  pagenum,
const SRC_DATA_T *  values 
)
inline

Sets all components of all elements of the specified page to the given values. NOTE: The length of values must be equal to the tuple size.

Definition at line 1474 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename SRC_DATA_T >
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::setPageConstantMismatchedType ( UT_PageNum  pagenum,
const SRC_DATA_T *  values 
)
inlineprotected

Definition at line 2174 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename SRC_DATA_T >
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::setPageConstantUnknownType ( UT_PageNum  pagenum,
const UT_FixedVector< SRC_DATA_T, theSafeTupleSize > &  val 
)
inlineprotected

Definition at line 2118 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename SRC_DATA_T >
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::setPageConstantUnknownType ( UT_PageNum  pagenum,
const SRC_DATA_T *  values 
)
inlineprotected

Definition at line 2146 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename T >
SYS_FORCE_INLINE void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::setRange ( IDX_T  deststart,
IDX_T  nelements,
const T src 
)
inline

Copies nelements from src array to deststart in this Include UT_PageArrayImpl.h to call this.

Definition at line 1211 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::setSize ( IDX_T  newsize)
inline

Sets the size of the array without initializing any added elements.

Definition at line 926 of file UT_PageArray.h.

template<typename DATA_T , exint TSIZE, bool TABLEHARDENED, bool PAGESHARDENED, exint THEPAGEBITS, typename IDX_T>
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::setSize ( IDX_T  newsize,
NotVoidType  initval 
)

Sets the size of the array and initializes any new elements to initval. This version of setSize only works if DATA_T is a numeric type. If the tuple size is > 1, it will write initval to all components. Include UT_PageArrayImpl.h to call this.

Definition at line 30 of file UT_PageArrayImpl.h.

template<typename DATA_T , exint TSIZE, bool TABLEHARDENED, bool PAGESHARDENED, exint THEPAGEBITS, typename IDX_T>
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::setSize ( IDX_T  newsize,
const UT_FixedVector< NotVoidType, theSafeTupleSize > &  initval 
)

Sets the size of the array and initializes any new elements to initval. This version of setSize only works if DATA_T is a numeric type and TSIZE >= 1. Include UT_PageArrayImpl.h to call this.

Definition at line 60 of file UT_PageArrayImpl.h.

template<typename DATA_T , exint TSIZE, bool TABLEHARDENED, bool PAGESHARDENED, exint THEPAGEBITS, typename IDX_T>
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::setSize ( IDX_T  newsize,
const UT_Defaults initval 
)

Sets the size of the array and initializes any new elements to initval. Include UT_PageArrayImpl.h to call this.

Definition at line 86 of file UT_PageArrayImpl.h.

template<typename DATA_T , exint TSIZE, bool TABLEHARDENED, bool PAGESHARDENED, exint THEPAGEBITS, typename IDX_T >
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::setStorage ( const UT_Storage  newstorage)

Changes the storage type and converts the data to the new type. NOTE: This only makes sense if DATA_T is void and newstorage is something other than INVALID. Include UT_PageArrayImpl.h to call this.

Definition at line 240 of file UT_PageArrayImpl.h.

template<typename DATA_T , exint TSIZE, bool TABLEHARDENED, bool PAGESHARDENED, exint THEPAGEBITS, typename IDX_T >
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::setTupleSize ( exint  newtuplesize,
const UT_Defaults v 
)

Changes the tuple size, and if the new size is larger, pads with values from the UT_Defaults. NOTE: This only makes sense if TSIZE == -1. Include UT_PageArrayImpl.h to call this.

Definition at line 302 of file UT_PageArrayImpl.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename SRC_DATA_T , exint SRC_TSIZE, bool SRC_INSTANTIATED>
SYS_FORCE_INLINE void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::setVector ( IDX_T  i,
const UT_FixedVector< SRC_DATA_T, SRC_TSIZE, SRC_INSTANTIATED > &  v 
)
inline

Definition at line 719 of file UT_PageArray.h.

template<typename DATA_T , exint TSIZE, bool TABLEHARDENED, bool PAGESHARDENED, exint THEPAGEBITS, typename IDX_T>
template<typename SRC_DATA_T , exint SRC_TSIZE, bool SRC_INSTANTIATED>
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::setVectorRange ( IDX_T  deststart,
IDX_T  nelements,
const UT_FixedVector< SRC_DATA_T, SRC_TSIZE, SRC_INSTANTIATED > *  src 
)

Copies nelements from src array to deststart in this Include UT_PageArrayImpl.h to call this.

Definition at line 2302 of file UT_PageArrayImpl.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
SYS_FORCE_INLINE IDX_T UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::size ( void  ) const
inline

Definition at line 866 of file UT_PageArray.h.

template<typename DATA_T , exint TSIZE, bool TABLEHARDENED, bool PAGESHARDENED, exint THEPAGEBITS, typename IDX_T>
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::swapRange ( IDX_T  astart,
IDX_T  bstart,
IDX_T  nelements 
)

Swaps the nelements at astart with the nelements at bstart. The two ranges must be non-overlapping, else swapping is ill-defined. Include UT_PageArrayImpl.h to call this.

Definition at line 1069 of file UT_PageArrayImpl.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<bool including_capacity = false>
SYS_FORCE_INLINE void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::tryCompressAllPages ( IDX_T  start = IDX_T(0),
IDX_T  end = IDX_T(-1) 
)
inline

Definition at line 1308 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::tryCompressAllPagesUnknownType ( IDX_T  start,
IDX_T  end 
)
inlineprotected

Definition at line 2063 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
SYS_FORCE_INLINE void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::tryCompressPage ( UT_PageNum  pagenum)
inline

Checks if the specified page is all a single value, and if so, makes it a constant page.

Definition at line 1604 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::tryCompressPageUnknownType ( UT_PageNum  pagenum)
inlineprotected

Definition at line 2090 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
SYS_FORCE_INLINE NotVoidType* UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::unshareConstantPage ( UT_PageNum  pagenum)
inline

If the specified page is constant and shared, (only relevant for nonzero tuples that are at least the size of a pointer), this keeps the page constant, but unshares it, so that the constant value can be modified. NOTE: This should ONLY be called on constant pages! Check isPageConstant(pagenum).

Definition at line 1568 of file UT_PageArray.h.

Friends And Related Function Documentation

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
template<typename DATA_T2 , exint TSIZE2, bool TABLEHARDENED2, bool PAGESHARDENED2, exint THEPAGEBITS2, typename IDX_T2 >
friend class UT_PageArray
friend

Definition at line 248 of file UT_PageArray.h.

Member Data Documentation

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
const exint UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::thePageBits = THEPAGEBITS
static

Definition at line 255 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
const exint UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::thePageMask = thePageSize-1
static

Definition at line 257 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
const exint UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::thePageSize = (exint(1)<<thePageBits)
static

Definition at line 256 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
const exint UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::theSafeTupleSize = (TSIZE==-1) ? 3 : TSIZE
static

Definition at line 254 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
const UT_Storage UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::theStorage = UT_StorageNum<DATA_T>::theStorage
static

Definition at line 252 of file UT_PageArray.h.

template<typename DATA_T, exint TSIZE = 1, bool TABLEHARDENED = false, bool PAGESHARDENED = false, exint THEPAGEBITS = 10, typename IDX_T = exint>
const exint UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::theTupleSize = TSIZE
static

Definition at line 253 of file UT_PageArray.h.


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