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

#include <cArray.h>

Inheritance diagram for Gray::cArrayTyped< TYPE, ARG_TYPE >:
Gray::CArray< TYPE, const TYPE & > Gray::CObject Gray::cArrayFacade< TYPE *, TYPE * > Gray::cArrayFacade< cNewPtr< TYPE >, TYPE * > Gray::cArrayFacade< cRefPtr< TYPE >, TYPE * > Gray::cArrayFacade< cIUnkPtr< TYPE >, TYPE * > Gray::cArraySorted< _TYPE_PAIR *, _TYPE_PAIR *, _TYPE_KEY > Gray::cArraySorted< cStringT< TCHAR >, cStringT< TCHAR >, const TCHAR * > Gray::cArrayString< LOGCHAR_t > Gray::cArrayString< GChar_t > Gray::cArrayString< char > Gray::cArrayString< FILECHAR_t > Gray::cArrayStruct< GrayLib::cUPnPNATPort > Gray::cArrayStruct< GrayLib::cMailName > Gray::cArrayStruct< Gray::cArrayStruct > Gray::cArrayStruct< cNetAddress > Gray::cArrayStruct< GrayLib::cECPPoint > Gray::cArrayStruct< Gray3D::cModelMaterial > Gray::cArrayStruct< GrayLib::cRectI > Gray::cArrayStruct< cXmlEntity2 > Gray::cArrayStruct< GrayLib::cZipFileEntry1 > Gray::cArrayStruct< GrayLib::cVecT2 > Gray::cArrayStruct< CPacket > Gray::cArrayStruct< Gray3D::cModelXMaterial > Gray::cArrayStruct< Gray::cFileFindEntry > Gray::cArrayStruct< GrayLib::cVideoBZRateController::cBlock > Gray::cArrayStruct< GrayLib::cVariant > Gray::cArrayStruct< GrayLib::cInputKeyObj > Gray::cArrayStruct< cVariant > Gray::cArrayStruct< GrayLib::cVideoFSRateController::CBlock > Gray::cArrayStruct< Gray::cHeapBlock > Gray::cArrayStruct< Gray3D::cModelXEffectParam > Gray::cArrayStruct< GrayLib::cSQLColumnInfo > Gray::cArrayVal< LONG > Gray::cArrayVal< GrayLib::cColor888 > Gray::cArrayVal< GrayLib::cRectI > Gray::cArrayVal< float > Gray::cArrayVal< int > Gray::cArrayVal< INDEX_t > Gray::cArrayVal< Gray3D::cModel3DSFace > Gray::cArrayVal< SSL_Compress_t > Gray::cArrayVal< GrayMapData::CTemplateRollValue > Gray::cArrayVal< CRC64_t > Gray::cArrayVal< BYTE > Gray::cArrayVal< SSL_CipherSuite_t > Gray::cArrayVal< GrayLib::cVector3f > Gray::cArrayVal< GrayLib::cVector2f > Gray::cArrayVal< VALUE_t > Gray::cArrayVal< CRC32_t >

Public Types

typedef CArray< TYPE, ARG_TYPE > SUPER_t
 
typedef cArrayTyped< TYPE, ARG_TYPE > THIS_t
 
typedef ITERATE_t iterator
 
typedef ITERATE_t const_iterator
 
typedef TYPE ELEM_t
 What type is stored. More...
 
typedef ARG_TYPE REF_t
 How to refer to this? value or ref or pointer? More...
 

Public Member Functions

 cArrayTyped () noexcept
 
 cArrayTyped (const THIS_t &rArray)
 
 cArrayTyped (ITERATE_t iSize)
 
virtual ~cArrayTyped ()
 
bool isValidCheck () const noexcept
 < memory allocation and structure definitions are valid. More...
 
bool IsValidIndex (ITERATE_t i) const noexcept
 
ITERATE_t ClampValidIndex (ITERATE_t i) const noexcept
 
size_t GetHeapStats (OUT ITERATE_t &iAllocCount) const noexcept
 
void AssertValidIndex (ITERATE_t nIndex) const
 
const TYPEGetAtSecure (ITERATE_t nIndex) const
 
TYPEElementAtSecure (ITERATE_t nIndex)
 
REF_t ConstElementAt (ITERATE_t nIndex) const
 
TYPEoperator[] (ITERATE_t nIndex)
 
const TYPEoperator[] (ITERATE_t nIndex) const
 
TYPEHead ()
 
TYPETail ()
 
TYPEElementAtHead ()
 
TYPEElementAtTail ()
 
REF_t ConstHead () const
 
REF_t ConstTail () const
 
REF_t GetAtTail ()
 
void UnLinkIndex (ITERATE_t nIndex)
 
void Swap (ITERATE_t i, ITERATE_t j)
 
void SetCopy (const cArrayTyped< TYPE, ARG_TYPE > &aValues)
 
const cArrayTyped< TYPE, ARG_TYPE > & operator= (const cArrayTyped< TYPE, ARG_TYPE > &aValues)
 
ITERATE_t FindIFor (ARG_TYPE arg) const
 
bool HasArg (ARG_TYPE arg) const
 
void RemoveLast ()
 
ELEM_t PopHead ()
 
ELEM_t PopTail ()
 
bool RemoveArg (ARG_TYPE arg)
 
void UnLinkArg (ARG_TYPE arg)
 
ITERATE_t AddTail (ARG_TYPE newElement)
 
ITERATE_t PushTail (ARG_TYPE newElement)
 
void AddHead (ARG_TYPE newElement)
 
TYPEget_DataWork () const
 
void AddArray (const SUPER_t &src)
 
bool IsEqualArray (const SUPER_t &aValues) const
 
bool isArraySorted () const
 
bool isArraySortedND () const
 
void QSort ()
 
- Public Member Functions inherited from Gray::CArray< TYPE, const TYPE & >
 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, const TYPE & newElement)
 
const TYPEGetData () const
 
TYPEGetData ()
 
void SetDataArrayPtr (TYPE *pData, ITERATE_t nSize)
 
void SetAtGrow (ITERATE_t nIndex, const TYPE & newElement)
 
ITERATE_t Add (const TYPE & newElement)
 
void Copy (const CArray &src)
 
TYPEoperator[] (ITERATE_t nIndex)
 
const TYPEoperator[] (ITERATE_t nIndex) const
 
void InsertAt (ITERATE_t nIndex, const 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 void AssertValid () const
 < memory allocation and structure definitions are valid. More...
 
virtual void Serialize (cArchive &a)
 

Protected Member Functions

virtual COMPARE_t CompareData (REF_t Data1, REF_t Data2) const noexcept
 
ITERATE_t QSortPartition (ITERATE_t iLeft, ITERATE_t iRight)
 
void QSort (ITERATE_t iLeft, ITERATE_t iRight)
 
- Protected Member Functions inherited from Gray::CArray< TYPE, const TYPE & >
bool IsValidIndex (ITERATE_t i) const noexcept
 

Additional Inherited Members

- Protected Attributes inherited from Gray::CArray< TYPE, const TYPE & >
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::cArrayTyped< TYPE, ARG_TYPE >

Equivalent to MFC CArray with added functions not in MFC TYPE = the type stored. ARG_TYPE = how it should be referenced. const TYPE& typically

Member Typedef Documentation

◆ const_iterator

template<class TYPE , class ARG_TYPE = const TYPE&>
typedef ITERATE_t Gray::cArrayTyped< TYPE, ARG_TYPE >::const_iterator

◆ ELEM_t

template<class TYPE , class ARG_TYPE = const TYPE&>
typedef TYPE Gray::cArrayTyped< TYPE, ARG_TYPE >::ELEM_t

What type is stored.

◆ iterator

template<class TYPE , class ARG_TYPE = const TYPE&>
typedef ITERATE_t Gray::cArrayTyped< TYPE, ARG_TYPE >::iterator

◆ REF_t

template<class TYPE , class ARG_TYPE = const TYPE&>
typedef ARG_TYPE Gray::cArrayTyped< TYPE, ARG_TYPE >::REF_t

How to refer to this? value or ref or pointer?

◆ SUPER_t

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

◆ THIS_t

template<class TYPE , class ARG_TYPE = const TYPE&>
typedef cArrayTyped<TYPE, ARG_TYPE> Gray::cArrayTyped< TYPE, ARG_TYPE >::THIS_t

Constructor & Destructor Documentation

◆ cArrayTyped() [1/3]

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

◆ cArrayTyped() [2/3]

template<class TYPE , class ARG_TYPE = const TYPE&>
Gray::cArrayTyped< TYPE, ARG_TYPE >::cArrayTyped ( const THIS_t rArray)
inline

Force copies to be explicit!

◆ cArrayTyped() [3/3]

template<class TYPE , class ARG_TYPE = const TYPE&>
Gray::cArrayTyped< TYPE, ARG_TYPE >::cArrayTyped ( ITERATE_t  iSize)
inlineexplicit

◆ ~cArrayTyped()

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

Member Function Documentation

◆ AddArray()

template<class TYPE , class ARG_TYPE = const TYPE&>
void Gray::cArrayTyped< TYPE, ARG_TYPE >::AddArray ( const SUPER_t src)
inline

Append an array to the end of this. Like MFC CArray::Append()

◆ AddHead()

template<class TYPE , class ARG_TYPE = const TYPE&>
void Gray::cArrayTyped< TYPE, ARG_TYPE >::AddHead ( ARG_TYPE  newElement)
inline

◆ AddTail()

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

◆ AssertValidIndex()

template<class TYPE , class ARG_TYPE = const TYPE&>
void Gray::cArrayTyped< TYPE, ARG_TYPE >::AssertValidIndex ( ITERATE_t  nIndex) const
inline

◆ ClampValidIndex()

template<class TYPE , class ARG_TYPE = const TYPE&>
ITERATE_t Gray::cArrayTyped< TYPE, ARG_TYPE >::ClampValidIndex ( ITERATE_t  i) const
inlinenoexcept
Returns
-1 = empty array.

◆ CompareData()

template<class TYPE , class ARG_TYPE = const TYPE&>
virtual COMPARE_t Gray::cArrayTyped< TYPE, ARG_TYPE >::CompareData ( REF_t  Data1,
REF_t  Data2 
) const
inlineprotectedvirtualnoexcept

Compare a data record to another data record. ASSUME this is the same as comparing keys. Otherwise you must overload this. Default implementation. Override this for proper implementation. This probably won't work for most cases.

Reimplemented in Gray::cArraySortString< _TYPE_CH >, Gray::cArraySortString< TYPE >, Gray::cArraySortString< FILECHAR_t >, Gray::cArraySortName< GrayLib::cFileChangeElem >, Gray::cArraySortName< GrayGUI::cXCheckBox >, Gray::cArraySortName< GrayLib::cSyncOp >, Gray::cArraySortName< Gray3D::cXTextureFile >, Gray::cArraySortName< GrayLib::cSQLDriver, char >, Gray::cArraySortName< TYPE, TCHAR >, Gray::cArraySortName< GrayLib::cScriptablePropDynamic >, Gray::cArraySortName< GrayLib::cManifestElem >, Gray::cArraySortName< GrayLib::cLogFileTail >, Gray::cArraySortName< GrayLib::cTimeScheduleSpecialEval, char >, Gray::cArraySortName< Gray::cAtomDef, ATOMCHAR_t >, Gray::cArraySortValue< Gray::cMemPage, UINT_PTR >, Gray::cArraySortValue< GrayLib::cTimerInst, TIMESYS_t >, Gray::cArraySortValue< cXObjEventSink, EVENTPRI_TYPE >, Gray::cArraySortValue< TYPE, ITERATE_t >, Gray::cArraySortHash< GrayGUI::cXDialogPlacementObj >, Gray::cArraySortHash< GrayLib::cNetServerConnection >, Gray::cArraySortHash< GrayLib::cTimerInst, HASHCODE_t >, Gray::cArraySortHash< GrayLib::cNetHostRangeX4 >, Gray::cArraySortHash< GrayLib::cVarTuple, ATOMCODE_t >, Gray::cArraySortHash< GrayLib::cThread, THREADID_t >, Gray::cArraySortHash< GrayLib::cNetServerPort >, Gray::cArraySortHash< GrayJS::cJSXObject >, Gray::cArraySortHash< Gray::cAtomDef, ATOMCODE_t >, Gray::cArraySortPtrName< TYPE, _TYPECH >, Gray::cArraySortFacadeHash< TYPE, TYPE_PTR, _TYPE_HASH >, Gray::cArraySortFacadeValue< TYPE, TYPE_PTR, TYPE_KEY >, Gray::cArraySortFacade< TYPE, TYPE_PTR, TYPE_KEY >, Gray::cArraySortFacade< cRefPtr< TYPE >, TYPE *, TYPE_KEY >, Gray::cArraySortFacade< TYPE *, TYPE *, const GChar_t * >, Gray::cArraySortFacade< TYPE, TYPE_PTR, HASHCODE_t >, Gray::cArrayFacade< TYPE *, TYPE * >, Gray::cArrayFacade< cNewPtr< TYPE >, TYPE * >, Gray::cArrayFacade< cRefPtr< TYPE >, TYPE * >, Gray::cArrayFacade< cIUnkPtr< TYPE >, TYPE * >, Gray::cPairSortStr< _TYPE_A, _TYPE_B >, Gray::cPairSortBase< _TYPE_PAIR, _TYPE_KEY >, Gray::cPairSortBase< cPair< _TYPE_A, _TYPE_B >, const ATOMCHAR_t * >, Gray::cPairSortBase< cPair< _TYPE_A, _TYPE_B >, _TYPE_A >, Gray::cArraySortStructHash< GrayLib::cTextLocEntry >, Gray::cArraySortStructHash< cIniKeyValue >, Gray::cArraySortStructHash< TYPE_INST, THREADID_t >, Gray::cArraySortStructHash< GrayLib::cMailTag >, Gray::cArraySortStructHash< GrayLib::cHttpHeadTag >, Gray::cArraySortStructHash< CMapKey, HASHCODE_t >, Gray::cArraySortStructHash< cAtomRef, ATOMCODE_t >, Gray::cArraySortVal< UID_t >, Gray::cArraySortVal< UIDINDEX_t >, Gray::cArraySortVal< SCRIPTINTERFACEID_t >, and Gray::cArraySortVal< Gray::cPtrTrace * >.

◆ ConstElementAt()

template<class TYPE , class ARG_TYPE = const TYPE&>
REF_t Gray::cArrayTyped< TYPE, ARG_TYPE >::ConstElementAt ( ITERATE_t  nIndex) const
inline

◆ ConstHead()

template<class TYPE , class ARG_TYPE = const TYPE&>
REF_t Gray::cArrayTyped< TYPE, ARG_TYPE >::ConstHead ( ) const
inline

◆ ConstTail()

template<class TYPE , class ARG_TYPE = const TYPE&>
REF_t Gray::cArrayTyped< TYPE, ARG_TYPE >::ConstTail ( ) const
inline

◆ ElementAtHead()

template<class TYPE , class ARG_TYPE = const TYPE&>
TYPE& Gray::cArrayTyped< TYPE, ARG_TYPE >::ElementAtHead ( )
inline

◆ ElementAtSecure()

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

throw an exception if we are out or range.

◆ ElementAtTail()

template<class TYPE , class ARG_TYPE = const TYPE&>
TYPE& Gray::cArrayTyped< TYPE, ARG_TYPE >::ElementAtTail ( )
inline

◆ FindIFor()

template<class TYPE , class ARG_TYPE = const TYPE&>
ITERATE_t Gray::cArrayTyped< TYPE, ARG_TYPE >::FindIFor ( ARG_TYPE  arg) const
inline

Find the index of a specified entry arg.

Returns
index, -1 = k_ITERATE_BAD = not found.

◆ get_DataWork()

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

◆ GetAtSecure()

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

throw an exception if we are out or range.

◆ GetAtTail()

template<class TYPE , class ARG_TYPE = const TYPE&>
REF_t Gray::cArrayTyped< TYPE, ARG_TYPE >::GetAtTail ( )
inline

◆ GetHeapStats()

template<class TYPE , class ARG_TYPE = const TYPE&>
size_t Gray::cArrayTyped< TYPE, ARG_TYPE >::GetHeapStats ( OUT ITERATE_t iAllocCount) const
inlinenoexcept
Returns
sizeof all children alloc(s). not size of *this

◆ HasArg()

template<class TYPE , class ARG_TYPE = const TYPE&>
bool Gray::cArrayTyped< TYPE, ARG_TYPE >::HasArg ( ARG_TYPE  arg) const
inline

Find the index of a specified entry.

◆ Head()

template<class TYPE , class ARG_TYPE = const TYPE&>
TYPE& Gray::cArrayTyped< TYPE, ARG_TYPE >::Head ( )
inline

◆ isArraySorted()

template<class TYPE , class ARG_TYPE >
bool Gray::cArrayTyped< TYPE, ARG_TYPE >::isArraySorted

Hard check for sorted. Allow dupes!

◆ isArraySortedND()

template<class TYPE , class ARG_TYPE >
bool Gray::cArrayTyped< TYPE, ARG_TYPE >::isArraySortedND

Hard check for sorted. Allow NO dupes!

◆ IsEqualArray()

template<class TYPE , class ARG_TYPE = const TYPE&>
bool Gray::cArrayTyped< TYPE, ARG_TYPE >::IsEqualArray ( const SUPER_t aValues) const
inline

Compare 2 arrays, just look for the first not same.

Note
Must be the same order too !
Returns
false = different

◆ isValidCheck()

template<class TYPE , class ARG_TYPE = const TYPE&>
bool Gray::cArrayTyped< TYPE, ARG_TYPE >::isValidCheck ( ) const
inlinevirtualnoexcept

< memory allocation and structure definitions are valid.

NOT in MFC so use COBJECT_IsValidCheck to call.

Note
This can't be called in constructors and destructors of course !

Reimplemented from Gray::CObject.

◆ IsValidIndex()

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

◆ operator=()

template<class TYPE , class ARG_TYPE = const TYPE&>
const cArrayTyped<TYPE, ARG_TYPE>& Gray::cArrayTyped< TYPE, ARG_TYPE >::operator= ( const cArrayTyped< TYPE, ARG_TYPE > &  aValues)
inline

◆ operator[]() [1/2]

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

◆ operator[]() [2/2]

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

◆ PopHead()

template<class TYPE , class ARG_TYPE = const TYPE&>
ELEM_t Gray::cArrayTyped< TYPE, ARG_TYPE >::PopHead ( )
inline

◆ PopTail()

template<class TYPE , class ARG_TYPE = const TYPE&>
ELEM_t Gray::cArrayTyped< TYPE, ARG_TYPE >::PopTail ( )
inline

◆ PushTail()

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

◆ QSort() [1/2]

template<class TYPE , class ARG_TYPE = const TYPE&>
void Gray::cArrayTyped< TYPE, ARG_TYPE >::QSort ( )
inline

◆ QSort() [2/2]

template<class TYPE , class ARG_TYPE >
void Gray::cArrayTyped< TYPE, ARG_TYPE >::QSort ( ITERATE_t  iLeft,
ITERATE_t  iRight 
)
protected

Re-sort- might have become unsorted for some reason. similar to std::sort()

◆ QSortPartition()

template<class TYPE , class ARG_TYPE >
ITERATE_t Gray::cArrayTyped< TYPE, ARG_TYPE >::QSortPartition ( ITERATE_t  iLeft,
ITERATE_t  iRight 
)
protected

◆ RemoveArg()

template<class TYPE , class ARG_TYPE = const TYPE&>
bool Gray::cArrayTyped< TYPE, ARG_TYPE >::RemoveArg ( ARG_TYPE  arg)
inline
Returns
true = removed. false = was not here.

◆ RemoveLast()

template<class TYPE , class ARG_TYPE = const TYPE&>
void Gray::cArrayTyped< TYPE, ARG_TYPE >::RemoveLast ( )
inline

◆ SetCopy()

template<class TYPE , class ARG_TYPE = const TYPE&>
void Gray::cArrayTyped< TYPE, ARG_TYPE >::SetCopy ( const cArrayTyped< TYPE, ARG_TYPE > &  aValues)
inline
Note
This will call empty constructors.

◆ Swap()

template<class TYPE , class ARG_TYPE = const TYPE&>
void Gray::cArrayTyped< TYPE, ARG_TYPE >::Swap ( ITERATE_t  i,
ITERATE_t  j 
)
inline

like cMemT::Swap(). dangerous for types that have pointers to themselves. self referenced.

◆ Tail()

template<class TYPE , class ARG_TYPE = const TYPE&>
TYPE& Gray::cArrayTyped< TYPE, ARG_TYPE >::Tail ( )
inline

◆ UnLinkArg()

template<class TYPE , class ARG_TYPE = const TYPE&>
void Gray::cArrayTyped< TYPE, ARG_TYPE >::UnLinkArg ( ARG_TYPE  arg)
inline

◆ UnLinkIndex()

template<class TYPE , class ARG_TYPE = const TYPE&>
void Gray::cArrayTyped< TYPE, ARG_TYPE >::UnLinkIndex ( ITERATE_t  nIndex)
inline

Remove the object from the list. DO NOT call its normal destructor!


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