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 TS >
SYS_FORCE_INLINE void setVector (IDX_T i, const TS &as)
 
template<typename TS >
SYS_FORCE_INLINE void addVector (IDX_T i, const TS &as)
 
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)
 
template<typename SRC_T >
void setConstant (IDX_T start, IDX_T end, const SRC_T *values)
 
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>
void getVectorRange (IDX_T srcstart, IDX_T nelements, UT_FixedVector< DEST_DATA_T, DEST_TSIZE > *dest) const
 
template<typename SRC_DATA_T , exint SRC_TSIZE>
void setVectorRange (IDX_T deststart, IDX_T nelements, const UT_FixedVector< SRC_DATA_T, SRC_TSIZE > *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>
static SYS_FORCE_INLINE
UT_FixedVector< DEST_TYPE,
SRC_TSIZE > 
convertVectorStorage (const UT_FixedVector< SRC_TYPE, SRC_TSIZE > &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 230 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 246 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 253 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 239 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 245 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 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>
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 266 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 278 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 289 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 305 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 312 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 319 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 630 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 645 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 TS >
SYS_FORCE_INLINE void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::addVector ( IDX_T  i,
const TS &  as 
)
inline

Definition at line 737 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 907 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 1406 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 1414 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 1385 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 1393 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 325 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 ( )
inline

Definition at line 331 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>
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)
inlinestaticprotected

Definition at line 3654 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 1058 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 1692 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 1283 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 469 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 2668 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 1780 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 1757 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 1626 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 3572 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 488 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 2691 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 2722 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 2747 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 1808 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 438 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 1715 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 1736 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 1243 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 1426 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 1422 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 1880 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 498 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 2087 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>
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 
) const

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

Definition at line 2325 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 2057 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 2017 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 1317 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 2124 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 3039 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 3522 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 3534 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 3073 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 3528 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 3540 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 1600 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 1620 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 3088 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 3546 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 3558 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 3106 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 3552 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 3564 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 1303 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 2449 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 1440 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 3639 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 1758 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 1432 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 1587 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 1288 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 3609 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 3620 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 2751 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 2822 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 2910 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 1400 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 568 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 581 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 1274 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 650 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 445 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 581 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 375 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 383 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 1959 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 747 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 1988 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 1270 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 1278 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 1282 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 392 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 1200 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 920 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 624 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 640 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 935 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 948 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, bool TABLEHARDENED, bool PAGESHARDENED, exint THEPAGEBITS, typename IDX_T>
template<typename SRC_T >
void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::setConstant ( IDX_T  start,
IDX_T  end,
const SRC_T *  values 
)

Set all of the values in the range [start,end) to the tuple in values. values must have length equal to getTupleSize(). This will constant-compress pages if allowed and the pages are completely overwritten with the given value.

Definition at line 243 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 1460 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 1478 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 1536 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 2272 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 2212 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 2242 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 1253 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 959 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 311 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 375 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 TS >
SYS_FORCE_INLINE void UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::setVector ( IDX_T  i,
const TS &  as 
)
inline

Definition at line 731 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>
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 
)

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

Definition at line 2385 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 899 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 1148 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 1350 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 2153 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 1682 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 2182 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 1646 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 243 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 250 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 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 >::thePageSize = (exint(1)<<thePageBits)
static

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>
const exint UT_PageArray< DATA_T, TSIZE, TABLEHARDENED, PAGESHARDENED, THEPAGEBITS, IDX_T >::theSafeTupleSize = (TSIZE==-1) ? 3 : TSIZE
static

Definition at line 249 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 247 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 248 of file UT_PageArray.h.


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