Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
Gray::CArray< TYPE, ARG_TYPE > Class Template Reference

#include <cArray.h>

Inheritance diagram for Gray::CArray< TYPE, ARG_TYPE >:
Gray::CObject Gray::cArrayTyped< cStringT< TCHAR >, const TCHAR * > Gray::cArrayTyped< GrayGUI::cXTableColumn, GrayGUI::cXTableColumn & > Gray::cArrayTyped< cDXSpriteElem, cDXSpriteElem & > Gray::cArrayTyped< TYPE, TYPE * > Gray::cArrayTyped< GrayLib::cTemplateEntry, GrayLib::cTemplateEntry & > Gray::cArrayTyped< TYPE, TYPE > Gray::cArrayTyped< GrayLib::cTaskProfilerRec, GrayLib::cTaskProfilerRec & > Gray::cArrayTyped< TYPE, TYPE_ARG >

Public Member Functions

 CArray () noexcept
 
 CArray (THIS_t &&ref) noexcept
 
virtual ~CArray ()
 
bool IsValidMallocSize () const noexcept
 
ITERATE_t GetSize () const noexcept
 
ITERATE_t GetUpperBound () const noexcept
 
bool IsEmpty () const noexcept
 
void SetSize (ITERATE_t nNewSize)
 
ITERATE_t GetMallocSize () const noexcept
 
void RemoveAll ()
 Clean up. More...
 
const TYPEGetAt (ITERATE_t nIndex) const
 
TYPEElementAt (ITERATE_t nIndex)
 
void SetAt (ITERATE_t nIndex, ARG_TYPE newElement)
 
const TYPEGetData () const
 
TYPEGetData ()
 
void SetDataArrayPtr (TYPE *pData, ITERATE_t nSize)
 
void SetAtGrow (ITERATE_t nIndex, ARG_TYPE newElement)
 
ITERATE_t Add (ARG_TYPE newElement)
 
void Copy (const CArray &src)
 
TYPEoperator[] (ITERATE_t nIndex)
 
const TYPEoperator[] (ITERATE_t nIndex) const
 
void InsertAt (ITERATE_t nIndex, ARG_TYPE newElement)
 
void RemoveAt (ITERATE_t nIndex)
 
void RemoveAt (ITERATE_t nIndex, ITERATE_t iQty)
 
void MoveElement (ITERATE_t iFrom, ITERATE_t iTo)
 
- Public Member Functions inherited from Gray::CObject
virtual ~CObject ()
 
virtual bool isValidCheck () const noexcept
 < memory allocation and structure definitions are valid. More...
 
virtual void AssertValid () const
 < memory allocation and structure definitions are valid. More...
 
virtual void Serialize (cArchive &a)
 

Protected Member Functions

bool IsValidIndex (ITERATE_t i) const noexcept
 

Protected Attributes

TYPEm_pData
 the actual array of data More...
 
ITERATE_t m_nSize
 Number of elements (upperBound - 1) More...
 

Detailed Description

template<class TYPE, class ARG_TYPE = const TYPE&>
class Gray::CArray< TYPE, ARG_TYPE >

Minimal array template of elements. like MFC version.

Note
MFC 8.0 uses INT_PTR for GetSize() ARG_TYPE = const TYPE& typically

Constructor & Destructor Documentation

◆ CArray() [1/2]

template<class TYPE , class ARG_TYPE = const TYPE&>
Gray::CArray< TYPE, ARG_TYPE >::CArray ( )
inlinenoexcept

◆ CArray() [2/2]

template<class TYPE , class ARG_TYPE = const TYPE&>
Gray::CArray< TYPE, ARG_TYPE >::CArray ( THIS_t &&  ref)
inlinenoexcept

move constructor.

◆ ~CArray()

template<class TYPE , class ARG_TYPE = const TYPE&>
virtual Gray::CArray< TYPE, ARG_TYPE >::~CArray ( )
inlinevirtual

Member Function Documentation

◆ Add()

template<class TYPE , class ARG_TYPE = const TYPE&>
ITERATE_t Gray::CArray< TYPE, ARG_TYPE >::Add ( ARG_TYPE  newElement)
inline

Add to the end.

◆ Copy()

template<class TYPE , class ARG_TYPE >
void Gray::CArray< TYPE, ARG_TYPE >::Copy ( const CArray< TYPE, ARG_TYPE > &  src)

◆ ElementAt()

template<class TYPE , class ARG_TYPE = const TYPE&>
TYPE& Gray::CArray< TYPE, ARG_TYPE >::ElementAt ( ITERATE_t  nIndex)
inline

◆ GetAt()

template<class TYPE , class ARG_TYPE = const TYPE&>
const TYPE& Gray::CArray< TYPE, ARG_TYPE >::GetAt ( ITERATE_t  nIndex) const
inline

◆ GetData() [1/2]

template<class TYPE , class ARG_TYPE = const TYPE&>
TYPE* Gray::CArray< TYPE, ARG_TYPE >::GetData ( )
inline

◆ GetData() [2/2]

template<class TYPE , class ARG_TYPE = const TYPE&>
const TYPE* Gray::CArray< TYPE, ARG_TYPE >::GetData ( ) const
inline

◆ GetMallocSize()

template<class TYPE , class ARG_TYPE = const TYPE&>
ITERATE_t Gray::CArray< TYPE, ARG_TYPE >::GetMallocSize ( ) const
inlinenoexcept

Get quantity of objects truly allocated. (may not be whole number) like STL capacity()

◆ GetSize()

template<class TYPE , class ARG_TYPE = const TYPE&>
ITERATE_t Gray::CArray< TYPE, ARG_TYPE >::GetSize ( ) const
inlinenoexcept

◆ GetUpperBound()

template<class TYPE , class ARG_TYPE = const TYPE&>
ITERATE_t Gray::CArray< TYPE, ARG_TYPE >::GetUpperBound ( ) const
inlinenoexcept

◆ InsertAt()

template<class TYPE , class ARG_TYPE >
void Gray::CArray< TYPE, ARG_TYPE >::InsertAt ( ITERATE_t  nIndex,
ARG_TYPE  newElement 
)

Insert at this location, move anything after this.

◆ IsEmpty()

template<class TYPE , class ARG_TYPE = const TYPE&>
bool Gray::CArray< TYPE, ARG_TYPE >::IsEmpty ( ) const
inlinenoexcept

◆ IsValidIndex()

template<class TYPE , class ARG_TYPE = const TYPE&>
bool Gray::CArray< TYPE, ARG_TYPE >::IsValidIndex ( ITERATE_t  i) const
inlineprotectednoexcept

◆ IsValidMallocSize()

template<class TYPE , class ARG_TYPE >
bool Gray::CArray< TYPE, ARG_TYPE >::IsValidMallocSize
noexcept

◆ MoveElement()

template<class TYPE , class ARG_TYPE >
void Gray::CArray< TYPE, ARG_TYPE >::MoveElement ( ITERATE_t  iFrom,
ITERATE_t  iTo 
)

Similar to Swap() but only one element is moved. (sort of) re-order the whole array. move an index to another place. dangerous for types that have internal pointers !

◆ operator[]() [1/2]

template<class TYPE , class ARG_TYPE = const TYPE&>
TYPE& Gray::CArray< TYPE, ARG_TYPE >::operator[] ( ITERATE_t  nIndex)
inline

◆ operator[]() [2/2]

template<class TYPE , class ARG_TYPE = const TYPE&>
const TYPE& Gray::CArray< TYPE, ARG_TYPE >::operator[] ( ITERATE_t  nIndex) const
inline

◆ RemoveAll()

template<class TYPE , class ARG_TYPE >
void Gray::CArray< TYPE, ARG_TYPE >::RemoveAll

Clean up.

AKA SetEmpty, Empty

Note
SetSize(0) is slightly more efficient than RemoveAll() if u plan to re-use the array.

◆ RemoveAt() [1/2]

template<class TYPE , class ARG_TYPE >
void Gray::CArray< TYPE, ARG_TYPE >::RemoveAt ( ITERATE_t  nIndex)

◆ RemoveAt() [2/2]

template<class TYPE , class ARG_TYPE >
void Gray::CArray< TYPE, ARG_TYPE >::RemoveAt ( ITERATE_t  nIndex,
ITERATE_t  iQty 
)

◆ SetAt()

template<class TYPE , class ARG_TYPE = const TYPE&>
void Gray::CArray< TYPE, ARG_TYPE >::SetAt ( ITERATE_t  nIndex,
ARG_TYPE  newElement 
)
inline
Note
Destructor is automatically called.

◆ SetAtGrow()

template<class TYPE , class ARG_TYPE >
void Gray::CArray< TYPE, ARG_TYPE >::SetAtGrow ( ITERATE_t  nIndex,
ARG_TYPE  newElement 
)

◆ SetDataArrayPtr()

template<class TYPE , class ARG_TYPE = const TYPE&>
void Gray::CArray< TYPE, ARG_TYPE >::SetDataArrayPtr ( TYPE pData,
ITERATE_t  nSize 
)
inline

set internal pointer. (dangerous)

◆ SetSize()

template<class TYPE , class ARG_TYPE >
void Gray::CArray< TYPE, ARG_TYPE >::SetSize ( ITERATE_t  nNewSize)
Note
SetSize(0) is slightly more efficient than RemoveAll() if u plan to re-use the array.

Member Data Documentation

◆ m_nSize

template<class TYPE , class ARG_TYPE = const TYPE&>
ITERATE_t Gray::CArray< TYPE, ARG_TYPE >::m_nSize
protected

Number of elements (upperBound - 1)

◆ m_pData

template<class TYPE , class ARG_TYPE = const TYPE&>
TYPE* Gray::CArray< TYPE, ARG_TYPE >::m_pData
protected

the actual array of data


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