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

#include <cArraySort.h>

Inheritance diagram for Gray::cArraySortFacade< TYPE, TYPE_PTR, TYPE_KEY >:
Gray::cArraySorted< TYPE, TYPE, TYPE > Gray::cArrayTyped< TYPE, TYPE > Gray::CArray< TYPE, ARG_TYPE > Gray::CObject Gray::cArraySortFacadeHash< TYPE *, TYPE *, TYPE_KEY > Gray::cArraySortFacadeValue< TYPE *, TYPE *, TYPE_KEY > Gray::cArraySortPtrName< const GrayLib::cScriptableProp, ATOMCHAR_t > Gray::cArraySortRef< TYPE, const GChar_t * > Gray::cArraySortRef< TYPE, int > Gray::cArraySortRef< TYPE, HASHCODE_t > Gray::cArraySortRef< TYPE, const ATOMCHAR_t * > Gray::cArraySortPtrHash< TYPE, TYPE_KEY > Gray::cArraySortPtrValue< TYPE, TYPE_KEY > Gray::cArraySortName< TYPE, _TYPECH > Gray::cArraySortValue< TYPE, TYPE_KEY > Gray::cArraySortHash< TYPE, HASHCODE_t > Gray::cArraySortHash< TYPE, _TYPE_HASH > GrayLib::cArraySortSymName< TYPE > Gray::cThreadLockArrayValue< cJobBase, TIMESYS_t > Gray::cThreadLockArrayHash< TYPE, _TYPE_HASH > Gray::cThreadLockArrayHash< GrayLib::cNetServerConnection > Gray::cThreadLockArrayHash< cNetAddrTracker > GrayLib::cJobArray GrayLib::cNetAddrMgr

Public Types

typedef cArraySorted< TYPE, TYPE_PTR, TYPE_KEY > SUPER_t
 
typedef SUPER_t::REF_t REF_t
 
typedef SUPER_t::ELEM_t ELEM_t
 
- Public Types inherited from Gray::cArraySorted< TYPE, TYPE, TYPE >
typedef cArrayTyped< TYPE, TYPESUPER_t
 
typedef TYPE KEY_t
 
typedef SUPER_t::REF_t REF_t
 
- Public Types inherited from Gray::cArrayTyped< TYPE, TYPE >
typedef CArray< TYPE, TYPESUPER_t
 
typedef cArrayTyped< TYPE, TYPETHIS_t
 
typedef ITERATE_t iterator
 
typedef ITERATE_t const_iterator
 
typedef TYPE ELEM_t
 What type is stored. More...
 
typedef TYPE REF_t
 How to refer to this? value or ref or pointer? More...
 

Public Member Functions

virtual ~cArraySortFacade ()
 
bool IsValidIndex (ITERATE_t i) const noexcept
 
REF_t GetAt (ITERATE_t index) const noexcept
 
REF_t GetAtCheck (ITERATE_t nIndex) const
 
TYPE_PTR FindArgForKey (TYPE_KEY key1) const noexcept
 
ITERATE_t FindIForAC_BRUTEFORCE (const TYPE_PTR pData) const
 
ELEM_t PopHead ()
 
ELEM_t PopTail ()
 
void DeleteAll ()
 
- Public Member Functions inherited from Gray::cArraySorted< TYPE, TYPE, TYPE >
virtual ~cArraySorted ()
 
ITERATE_t FindINear (REF_t pNew, COMPARE_t &iCompareRes) const
 
ITERATE_t FindINearKey (KEY_t key, COMPARE_t &iCompareRes) const
 
ITERATE_t FindIForKey (KEY_t key) const
 
ITERATE_t FindIFirstForKey (TYPE nKey) const
 
ITERATE_t FindILastForKey (TYPE nKey) const
 
ITERATE_t AddPresorted (ITERATE_t index, COMPARE_t iCompareRes, TYPE pNew)
 
bool RemoveKey (TYPE key)
 
ITERATE_t Add (TYPE pNew)
 
void AddArray (const SUPER_t &a)
 
- Public Member Functions inherited from Gray::cArrayTyped< TYPE, TYPE >
void QSort ()
 
 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, TYPE > &aValues)
 
const cArrayTyped< TYPE, TYPE > & operator= (const cArrayTyped< TYPE, TYPE > &aValues)
 
ITERATE_t FindIFor (TYPE arg) const
 
bool HasArg (TYPE arg) const
 
void RemoveLast ()
 
ELEM_t PopHead ()
 
ELEM_t PopTail ()
 
bool RemoveArg (TYPE arg)
 
void UnLinkArg (TYPE arg)
 
ITERATE_t AddTail (TYPE newElement)
 
ITERATE_t PushTail (TYPE newElement)
 
void AddHead (TYPE newElement)
 
TYPEget_DataWork () const
 
void AddArray (const SUPER_t &src)
 
bool IsEqualArray (const SUPER_t &aValues) const
 
bool isArraySorted () const
 
bool isArraySortedND () const
 
- Public Member Functions inherited from Gray::CArray< TYPE, ARG_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, 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 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 pData1, REF_t pData2) const noexcept override
 
- Protected Member Functions inherited from Gray::cArraySorted< TYPE, TYPE, TYPE >
virtual COMPARE_t CompareKey (KEY_t key1, REF_t Data2) const
 
bool RemoveArgKey (REF_t pObj, KEY_t key)
 
- Protected Member Functions inherited from Gray::cArrayTyped< TYPE, TYPE >
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, ARG_TYPE >
bool IsValidIndex (ITERATE_t i) const noexcept
 

Additional Inherited Members

- Protected Attributes inherited from Gray::CArray< TYPE, ARG_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 TYPE_PTR = TYPE, typename TYPE_KEY = TYPE>
class Gray::cArraySortFacade< TYPE, TYPE_PTR, TYPE_KEY >

TYPE = the pointer or facade we are storing. A sorted array of some TYPE_PTR pointers. overload this Default Sort by memcmp()

Member Typedef Documentation

◆ ELEM_t

template<class TYPE , class TYPE_PTR = TYPE, typename TYPE_KEY = TYPE>
typedef SUPER_t::ELEM_t Gray::cArraySortFacade< TYPE, TYPE_PTR, TYPE_KEY >::ELEM_t

◆ REF_t

template<class TYPE , class TYPE_PTR = TYPE, typename TYPE_KEY = TYPE>
typedef SUPER_t::REF_t Gray::cArraySortFacade< TYPE, TYPE_PTR, TYPE_KEY >::REF_t

◆ SUPER_t

template<class TYPE , class TYPE_PTR = TYPE, typename TYPE_KEY = TYPE>
typedef cArraySorted<TYPE, TYPE_PTR, TYPE_KEY> Gray::cArraySortFacade< TYPE, TYPE_PTR, TYPE_KEY >::SUPER_t

Constructor & Destructor Documentation

◆ ~cArraySortFacade()

template<class TYPE , class TYPE_PTR = TYPE, typename TYPE_KEY = TYPE>
virtual Gray::cArraySortFacade< TYPE, TYPE_PTR, TYPE_KEY >::~cArraySortFacade ( )
inlinevirtual

Member Function Documentation

◆ CompareData()

template<class TYPE , class TYPE_PTR = TYPE, typename TYPE_KEY = TYPE>
virtual COMPARE_t Gray::cArraySortFacade< TYPE, TYPE_PTR, TYPE_KEY >::CompareData ( REF_t  pData1,
REF_t  pData2 
) const
inlineoverrideprotectedvirtualnoexcept

default = Binary compare the whole thing. cValT::Compare(*pData1,*pData2) ??

Reimplemented in Gray::cArraySortName< TYPE, _TYPECH >, 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< TYPE, TYPE_KEY >, Gray::cArraySortValue< Gray::cMemPage, UINT_PTR >, Gray::cArraySortValue< GrayLib::cTimerInst, TIMESYS_t >, Gray::cArraySortValue< cXObjEventSink, EVENTPRI_TYPE >, Gray::cArraySortValue< TYPE, ITERATE_t >, Gray::cArraySortHash< TYPE, _TYPE_HASH >, Gray::cArraySortHash< GrayGUI::cXDialogPlacementObj >, Gray::cArraySortHash< TYPE, HASHCODE_t >, 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::cArraySortPtrName< const GrayLib::cScriptableProp, ATOMCHAR_t >, Gray::cArraySortFacadeHash< TYPE, TYPE_PTR, _TYPE_HASH >, Gray::cArraySortFacadeHash< TYPE *, TYPE *, TYPE_KEY >, Gray::cArraySortFacadeValue< TYPE, TYPE_PTR, TYPE_KEY >, and Gray::cArraySortFacadeValue< TYPE *, TYPE *, TYPE_KEY >.

◆ DeleteAll()

template<class TYPE , class TYPE_PTR = TYPE, typename TYPE_KEY = TYPE>
void Gray::cArraySortFacade< TYPE, TYPE_PTR, TYPE_KEY >::DeleteAll ( )
inline

◆ FindArgForKey()

template<class TYPE , class TYPE_PTR = TYPE, typename TYPE_KEY = TYPE>
TYPE_PTR Gray::cArraySortFacade< TYPE, TYPE_PTR, TYPE_KEY >::FindArgForKey ( TYPE_KEY  key1) const
inlinenoexcept

◆ FindIForAC_BRUTEFORCE()

template<class TYPE , class TYPE_PTR = TYPE, typename TYPE_KEY = TYPE>
ITERATE_t Gray::cArraySortFacade< TYPE, TYPE_PTR, TYPE_KEY >::FindIForAC_BRUTEFORCE ( const TYPE_PTR  pData) const
inline

Find the index of a specified entry. same as FindIFor() but arg is const TYPE*. Don't use this brute force version . Use the FindIForAK instead !

Returns
index, -1 = k_ITERATE_BAD = none.

◆ GetAt()

template<class TYPE , class TYPE_PTR = TYPE, typename TYPE_KEY = TYPE>
REF_t Gray::cArraySortFacade< TYPE, TYPE_PTR, TYPE_KEY >::GetAt ( ITERATE_t  index) const
inlinenoexcept
Note
caller should put the result in TYPE (cRefPtr) derived pointer.

◆ GetAtCheck()

template<class TYPE , class TYPE_PTR = TYPE, typename TYPE_KEY = TYPE>
REF_t Gray::cArraySortFacade< TYPE, TYPE_PTR, TYPE_KEY >::GetAtCheck ( ITERATE_t  nIndex) const
inline
Note
we should put the result in TYPE derived pointer.

◆ IsValidIndex()

template<class TYPE , class TYPE_PTR = TYPE, typename TYPE_KEY = TYPE>
bool Gray::cArraySortFacade< TYPE, TYPE_PTR, TYPE_KEY >::IsValidIndex ( ITERATE_t  i) const
inlinenoexcept
Todo:
RENAME THIS. Don't overload IsValidIndex. Make IsValidAt() ?

◆ PopHead()

template<class TYPE , class TYPE_PTR = TYPE, typename TYPE_KEY = TYPE>
ELEM_t Gray::cArraySortFacade< TYPE, TYPE_PTR, TYPE_KEY >::PopHead ( )
inline

◆ PopTail()

template<class TYPE , class TYPE_PTR = TYPE, typename TYPE_KEY = TYPE>
ELEM_t Gray::cArraySortFacade< TYPE, TYPE_PTR, TYPE_KEY >::PopTail ( )
inline

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