6#ifndef _ZFI_ZFCoreArray_h_
7#define _ZFI_ZFCoreArray_h_
16template<typename T_Element, bool isPOD = zftIsPOD<T_Element>::Value>
19 static void objCreate(
21 ,
ZF_IN T_Element *pEnd
28 static void objCreate(
30 ,
ZF_IN T_Element *pEnd
31 ,
ZF_IN const T_Element *src
41 ,
ZF_IN const T_Element *src
46 static void objDestroy(
48 ,
ZF_IN T_Element *pEnd
56template<
typename T_Element>
59 static void objCreate(
61 ,
ZF_IN T_Element *pEnd
64 static void objCreate(
66 ,
ZF_IN T_Element *pEnd
67 ,
ZF_IN const T_Element *src
69 zfmemcpy(p, src, (pEnd - p) *
sizeof(T_Element));
73 ,
ZF_IN const T_Element *src
76 zfmemmove(dst, src, count *
sizeof(T_Element));
78 static void objDestroy(
80 ,
ZF_IN T_Element *pEnd
85template<
typename T_Element>
93 _ZFP_ZFCoreArrayPrivate(
void)
100 ~_ZFP_ZFCoreArrayPrivate(
void) {
101 _ZFP_ZFCoreArrayW<T_Element>::objDestroy(this->buf, this->buf + this->count);
113 else if(capacity < 64) {
114 capacity = ((capacity / 16) + 1) * 16;
116 else if(capacity < 256) {
117 capacity = ((capacity / 64) + 1) * 64;
120 capacity = ((capacity / 256) + 1) * 256;
131 else if(capacity < 32) {
132 capacity = ((capacity / 8) + 1) * 8;
134 else if(capacity < 128) {
135 capacity = ((capacity / 32) + 1) * 32;
138 capacity = ((capacity / 64) + 1) * 64;
149 else if(capacity < 32) {
150 capacity = ((capacity / 4) + 1) * 4;
153 capacity = ((capacity / 8) + 1) * 8;
277 return this->
count() != 0;
319 ,
ZF_IN const void *e
343template<typename T_Element>
363 if(d->refCount == 0) {
376 _ZFP_ZFCoreArrayPrivate<T_Element> *dTmp = d;
383 if(dTmp->refCount == 0) {
409 _ZFP_ZFCoreArrayPrivate<T_Element> *dTmp = d;
420 _ZFP_ZFCoreArrayW<T_Element>::objDestroy(d->buf, d->buf + d->count);
424 _capacityRequire(ref.count());
425 _ZFP_ZFCoreArrayW<T_Element>::objCreate(d->buf, d->buf + ref.count(), ref.arrayBuf());
426 d->count = (
zfuint)ref.count();
450 if(this->
count() != ref.count()) {
488 ret += token.tokenLeft;
491 ret += token.tokenSeparator;
493 ret += token.tokenValueLeft;
494 if(infoGetter !=
zfnull) {
500 ret += token.tokenValueRight;
502 if(count < this->
count()) {
504 ret += token.tokenSeparator;
506 ret += token.tokenEtc;
508 ret += token.tokenRight;
524 _capacityRequire(newCapacity);
536 return (
zfindex)(d ? d->capacity : 0);
544 _capacityRequire(this->
count() + 1);
545 _ZFP_ZFCoreArrayW<T_Element>::objCreate(d->buf + d->count, d->buf + d->count + 1, &e);
552 ZF_IN T_Element
const &e
556 index = this->
count();
561 _capacityRequire(this->
count() + 1);
562 _ZFP_ZFCoreArrayW<T_Element>::objCreate(d->buf + d->count, d->buf + d->count + 1);
563 T_Element *pos = d->buf + index;
564 _ZFP_ZFCoreArrayW<T_Element>::objMove(pos + 1, pos, this->
count() - index);
572 ZF_IN const T_Element *src
578 if(d ==
zfnull || src < d->buf || src >= d->buf + d->capacity) {
579 _capacityRequire(this->count() +
count);
580 _ZFP_ZFCoreArrayW<T_Element>::objCreate(d->buf + d->count, d->buf + d->count +
count, src);
596 this->
addFrom(ref.arrayBuf(), ref.count());
604 ZF_IN T_Element
const &e
608 for(T_Element *p = d->buf, *pEnd = d->buf + d->count; p < pEnd; ++p) {
620 ZF_IN T_Element
const &e
624 for(T_Element *p = d->buf + d->count - 1; p >= d->buf; --p) {
635 template<
typename T_Another>
637 ZF_IN T_Another
const &e
641 for(T_Element *p = d->buf, *pEnd = d->buf + d->count; p < pEnd; ++p) {
652 template<
typename T_Another>
654 ZF_IN T_Another
const &e
658 for(T_Element *p = d->buf + d->count - 1; p >= d->buf; --p) {
671 ZF_IN T_Element
const &e
675 for(T_Element *p = d->buf, *pEnd = d->buf + d->count; p < pEnd; ++p) {
687 template<
typename T_Another>
689 ZF_IN T_Another
const &e
693 for(T_Element *p = d->buf, *pEnd = d->buf + d->count; p < pEnd; ++p) {
706 ZF_IN T_Element
const &e
710 for(T_Element *p = d->buf + d->count - 1; p >= d->buf; --p) {
722 template<
typename T_Another>
724 ZF_IN T_Another
const &e
728 for(T_Element *p = d->buf + d->count - 1; p >= d->buf; --p) {
741 ZF_IN T_Element
const &e
746 for(T_Element *p = d->buf, *pEnd = d->buf + d->count; p < pEnd; ++p) {
759 template<
typename T_Another>
761 ZF_IN T_Another
const &e
766 for(T_Element *p = d->buf, *pEnd = d->buf + d->count; p < pEnd; ++p) {
780 _ZFP_ZFCoreArrayW<T_Element>::objMove(d->buf + index, d->buf + index + 1, this->count() - index - 1);
781 _ZFP_ZFCoreArrayW<T_Element>::objDestroy(d->buf + d->count - 1, d->buf + d->count);
790 if(
count > this->count() - index) {
791 count = this->count() - index;
793 _ZFP_ZFCoreArrayW<T_Element>::objMove(d->buf + index, d->buf + index +
count, this->count() - (index +
count));
794 _ZFP_ZFCoreArrayW<T_Element>::objDestroy(d->buf + d->count -
count, d->buf + d->count);
801 T_Element t = this->
get(index);
831 toIndexOrIndexMax = this->
count() - 1;
836 if(fromIndex == toIndexOrIndexMax) {
839 T_Element t = d->buf[fromIndex];
840 if(fromIndex < toIndexOrIndexMax) {
841 _ZFP_ZFCoreArrayW<T_Element>::objMove(d->buf + fromIndex, d->buf + fromIndex + 1, toIndexOrIndexMax - fromIndex);
844 _ZFP_ZFCoreArrayW<T_Element>::objMove(d->buf + toIndexOrIndexMax + 1, d->buf + toIndexOrIndexMax, fromIndex - toIndexOrIndexMax);
846 d->buf[toIndexOrIndexMax] = t;
855 ,
ZF_IN T_Element
const &e
867 return d->buf[index];
874 return d->buf[index];
881 return d->buf[index];
888 return d->buf[index];
902 return *(d->buf + d->count - 1);
923 ZF_IN T_Element
const &e
952 if(!this->
isEmpty() && start + 1 < this->count() &&
count > 1) {
956 , (
count > this->count() - start) ? (this->count() - 1) : (start +
count - 1)
969 if(!this->
isEmpty() && start + 1 < this->count() &&
count > 1) {
973 , (
count > this->count() - start) ? (this->count() - 1) : (start +
count - 1)
994 ) {this->
add(*(
const T_Element *)e, index);}
1000 ,
ZF_IN const void *e
1001 ) {this->
set(index, *(
const T_Element *)e);}
1006 _ZFP_ZFCoreArrayPrivate<T_Element> *d;
1009 _ZFP_ZFCoreArrayCapacity<
1010 sizeof(T_Element) <=
sizeof(
void *)
1012 : (
sizeof(T_Element) <= 4 *
sizeof(
void *)
1016 >::capacityOptimize(capacity);
1019 _capacityOptimize(capacity);
1020 if(capacity > this->capacity()) {
1021 _capacityDoChange(capacity);
1027 _ZFP_ZFCoreArrayW<T_Element>::objDestroy(d->buf, d->buf + d->count);
1036 d =
zfpoolNew(_ZFP_ZFCoreArrayPrivate<T_Element>);
1039 T_Element *oldBuf = d->buf;
1040 zfuint oldCount = d->count;
1042 T_Element *newBuf = (T_Element *)
zfmalloc(capacity *
sizeof(T_Element));
1043 _ZFP_ZFCoreArrayW<T_Element>::objCreate(newBuf, newBuf + oldCount, oldBuf);
1046 d->capacity = (
zfuint)capacity;
1047 d->count = oldCount;
1049 _ZFP_ZFCoreArrayW<T_Element>::objDestroy(oldBuf, oldBuf + oldCount);
1056template<typename T_Element>
1059 inline _ZFP_ZFCoreArrayCreate<T_Element> &add(
ZF_IN T_Element
const &v) {
1067#define _ZFP_ZFCoreArrayCreate_action_expand(value) .add(value)
1068#define _ZFP_ZFCoreArrayCreate_action(CreatorType, values, ...) \
1069 CreatorType() ZFM_FIX_PARAM(_ZFP_ZFCoreArrayCreate_action_expand, ZFM_EMPTY, values, ##__VA_ARGS__) .v
1078#define ZFCoreArrayCreate(ElementType, values, ...) _ZFP_ZFCoreArrayCreate_action(_ZFP_ZFCoreArrayCreate<ElementType>, values, ##__VA_ARGS__)
common comparer for ZFFramework
#define ZFComparerDefault
default comparer for common types, see ZFComparer
Definition ZFComparer.h:250
#define ZFLIB_ZFCore
used to export symbols
Definition ZFCoreEnvDef.h:30
common log messages for ZFFramework
#define ZFCoreAssertIndexRange(index, range)
log that likes "[file function (line)] index i out of range [0, n)"
Definition ZFCoreLog_CommonLog.h:116
#define zffinal
dummy macro shows that a method or class is designed must not to be overrided
Definition ZFCoreTypeDef_ClassType.h:63
#define zfclassLikePOD
shows the class is not a POD type, but you may use it like a POD except memset it to 0
Definition ZFCoreTypeDef_ClassType.h:41
#define zfextend
dummy macro shows class inherit from another
Definition ZFCoreTypeDef_ClassType.h:53
#define zfnewPlacement(buf, Type,...)
placement new defined for future use
Definition ZFCoreTypeDef_ClassType.h:113
#define zfpurevirtual
dummy macro shows that a method is pure virtual method
Definition ZFCoreTypeDef_ClassType.h:68
#define zfoverride
dummy macro shows that method override parent's method
Definition ZFCoreTypeDef_ClassType.h:58
#define zffree(ptr)
same as free defined for future use, do nothing if ptr is NULL
Definition ZFCoreTypeDef_ClassType.h:104
#define ZF_IN
dummy macro that shows the param used as required input
Definition ZFCoreTypeDef_ClassType.h:184
#define ZF_IN_OPT
dummy macro that shows the param used as optional input
Definition ZFCoreTypeDef_ClassType.h:188
void * zfmemmove(void *dst, const void *src, zfindex size)
wrapper to memmove
Definition ZFCoreTypeDef_ClassType.h:146
#define zfdeletePlacement(instance)
placement delete (instance->~Type()) defined for future use
Definition ZFCoreTypeDef_ClassType.h:116
#define zfclassNotPOD
shows the class is not a POD type, you should not memset it or declare it in stack or copy value by c...
Definition ZFCoreTypeDef_ClassType.h:48
#define ZF_IN_OUT
dummy macro that shows the param used as required input and output
Definition ZFCoreTypeDef_ClassType.h:200
T_Element * zfmemmoveObject(T_Element *dst, const T_Element *src, zfindex count)
memmove for common object type, object must support operator =
Definition ZFCoreTypeDef_ClassType.h:156
void * zfmemcpy(void *dst, const void *src, zfindex size)
wrapper to memcpy
Definition ZFCoreTypeDef_ClassType.h:144
#define zfmalloc(size)
same as malloc defined for future use
Definition ZFCoreTypeDef_ClassType.h:90
_ZFT_t_zfbool zfbool
bool type
Definition ZFCoreTypeDef_CoreType.h:103
_ZFT_t_zfindex zfindex
similar to size_t, used for index and size only
Definition ZFCoreTypeDef_CoreType.h:154
#define zftrue
bool true type
Definition ZFCoreTypeDef_CoreType.h:107
#define zfindexMax()
(zfindex)-1, indicate a max index value, see zfindex
Definition ZFCoreTypeDef_CoreType.h:159
#define zffalse
bool false type
Definition ZFCoreTypeDef_CoreType.h:111
#define zfnull
same as NULL, defined for future use
Definition ZFCoreTypeDef_CoreType.h:88
_ZFT_t_zfuint zfuint
same as unsigned int, see zfindex
Definition ZFCoreTypeDef_CoreType.h:169
#define ZFOUTPUT_TYPE(T_Type, outputAction)
declare your custom type conversion to string, convenient for debug
Definition ZFCoreTypeDef_OtherType.h:221
#define ZFOUTPUT_TYPE_TEMPLATE(T_typenameList, T_Type, outputAction)
see ZFOUTPUT_TYPE
Definition ZFCoreTypeDef_OtherType.h:262
ZFCompareResult
compare result of two ZFObjects
Definition ZFCoreTypeDef_OtherType.h:28
@ ZFCompareUncomparable
Definition ZFCoreTypeDef_OtherType.h:29
@ ZFCompareEqual
Definition ZFCoreTypeDef_OtherType.h:31
void zftToStringT(zfstring &s, T_Type const &v)
util function to obtain object info
Definition ZFCoreTypeDef_OtherType.h:182
zft_zfstring< zfchar > zfstring
see zft_zfstring
Definition ZFCoreTypeDef_StringType.h:15
math utilities for ZFFramework
zfbool zfmSortReversely(T_Holder &holder, zfindex left, zfindex right, T_Comparer const &comparer)
sort with custom comparer in range [left, right], holder must support operator []
Definition ZFCoreUtilMath.h:200
zfbool zfmSort(T_Holder &holder, zfindex left, zfindex right, T_Comparer const &comparer)
sort with custom comparer in range [left, right], holder must support operator []
Definition ZFCoreUtilMath.h:174
#define zfpoolDelete(obj)
see zfpoolNew
Definition ZFMemPool.h:38
#define zfpoolNew(T_Type,...)
internal use only, for allocating internal types for performance
Definition ZFMemPool.h:37
#define ZF_NAMESPACE_GLOBAL_BEGIN
begin namespace ZFFramework
Definition ZFNamespace.h:97
#define ZF_NAMESPACE_GLOBAL_END
end namespace ZFFramework
Definition ZFNamespace.h:98
#define ZFTokenForContainerDefault()
see ZFTokenForContainer, modifyable, ZFTokenForContainerTrim by default
Definition ZFToken.h:107
ZFCompareResult(* Comparer)(T_Comparable const &e0, T_Comparable2 const &e1)
see ZFComparer
Definition ZFCoreTypeDef_OtherType.h:130
dummy base for ZFCoreArray
Definition ZFCoreArray.h:162
virtual void objectInfoOfContentT(zfstring &ret, zfindex maxCount=((zfindex) -1), const ZFTokenForContainer &token=_ZFP_ZFTokenForContainerDefault) const =0
return content info
virtual zfstring objectInfo(void) const
return object info
Definition ZFCoreArray.h:185
virtual ZFCoreArrayBase * refNew(void) const =0
new reference
virtual void refDelete(void)
delete reference
Definition ZFCoreArray.h:172
virtual zfindex genericFind(const void *e)=0
generic version
virtual void objectInfoT(zfstring &ret) const
see objectInfo
Definition ZFCoreArray.h:181
virtual void genericCopyFrom(const ZFCoreArrayBase &ref)=0
generic version
virtual void capacityTrim(void)=0
trim current capacity
virtual void genericAdd(const void *e, zfindex index)=0
generic version
virtual void removeFirst(void)
remove first, assert fail if out of range
Definition ZFCoreArray.h:245
virtual void * refImpl(void) const =0
get the impl
virtual void sort(zfindex start=0, zfindex count=((zfindex) -1))=0
sort
virtual void capacity(zfindex newCapacity)=0
change capacity to hold at least newCapacity
virtual void genericSwap(ZFCoreArrayBase &ref)=0
generic version
virtual void genericAdd(const void *e)
generic version
Definition ZFCoreArray.h:306
virtual void sortReversely(zfindex start=0, zfindex count=((zfindex) -1))=0
sort reversely
virtual const void * genericGet(zfindex index) const =0
generic version
virtual zfindex genericRemoveElementAll(const void *e)=0
generic version
virtual void remove(zfindex index)=0
remove element at index with count, assert fail if out of range
virtual void removeLast(void)
remove last, assert fail if out of range
Definition ZFCoreArray.h:251
virtual zfindex genericFindReversely(const void *e)=0
generic version
virtual void genericAddFrom(const ZFCoreArrayBase &ref)=0
generic version
virtual void move(zfindex fromIndex, zfindex toIndexOrIndexMax)=0
move element
virtual zfindex count(void) const =0
element count of this array
virtual zfstring objectInfoOfContent(zfindex maxCount=((zfindex) -1), const ZFTokenForContainer &token=_ZFP_ZFTokenForContainerDefault) const
return content info
Definition ZFCoreArray.h:198
virtual void remove(zfindex index, zfindex count)=0
remove element at index with count, assert fail if out of range
virtual zfbool isEmpty(void) const
true if empty
Definition ZFCoreArray.h:276
virtual void genericSet(zfindex index, const void *e)=0
generic version
virtual void removeAll(void)
remove all content
Definition ZFCoreArray.h:257
virtual zfindex capacity(void) const =0
get capacity
light weight array
Definition ZFCoreArray.h:344
virtual void capacityTrim(void)
trim current capacity
Definition ZFCoreArray.h:527
ZFCoreArray(void)
main constructor
Definition ZFCoreArray.h:349
virtual void capacity(zfindex newCapacity)
change capacity to hold at least newCapacity
Definition ZFCoreArray.h:523
virtual void genericAddFrom(const ZFCoreArrayBase &ref)
generic version
Definition ZFCoreArray.h:996
virtual zfbool isEmpty(void) const
true if empty
Definition ZFCoreArray.h:920
T_Element const & getLast(void) const
try to get first element, assert fail if empty
Definition ZFCoreArray.h:900
virtual void genericAdd(const void *e, zfindex index)
generic version
Definition ZFCoreArray.h:991
zfindex removeElementAll(T_Another const &e, typename ZFComparer< T_Element, T_Another >::Comparer comparer)
remove all matched element, return number of removed element
Definition ZFCoreArray.h:760
T_Element & get(zfindex index)
get element's reference at index
Definition ZFCoreArray.h:865
zfindex objectRetainCount(void) const
get retain count
Definition ZFCoreArray.h:433
virtual void objectInfoOfContentT(zfstring &ret, zfindex maxCount=((zfindex) -1), const ZFTokenForContainer &token=_ZFP_ZFTokenForContainerDefault) const
return content info
Definition ZFCoreArray.h:463
void add(T_Element const &e)
add element
Definition ZFCoreArray.h:543
zfbool removeElementReversely(T_Element const &e, typename ZFComparer< T_Element >::Comparer comparer=_ZFP_ZFComparerDefault)
remove last matched element, return whether the element removed
Definition ZFCoreArray.h:705
virtual zfstring objectInfoOfContent(zfindex maxCount=((zfindex) -1), const ZFTokenForContainer &token=_ZFP_ZFTokenForContainerDefault) const
return content info
Definition ZFCoreArray.h:471
void sortReversely(zfindex start, zfindex count, typename ZFComparer< T_Element >::Comparer comparer)
sort element
Definition ZFCoreArray.h:964
virtual zfbool isContain(T_Element const &e, typename ZFComparer< T_Element >::Comparer comparer=_ZFP_ZFComparerDefault) const
true if contains element
Definition ZFCoreArray.h:922
zfbool removeElementReversely(T_Another const &e, typename ZFComparer< T_Element, T_Another >::Comparer comparer)
remove last matched element, return whether the element removed
Definition ZFCoreArray.h:723
virtual void genericCopyFrom(const ZFCoreArrayBase &ref)
generic version
Definition ZFCoreArray.h:983
void add(T_Element const &e, zfindex index)
add element at index
Definition ZFCoreArray.h:551
zfindex findReversely(T_Another const &e, typename ZFComparer< T_Element, T_Another >::Comparer comparer) const
find element reversely
Definition ZFCoreArray.h:653
virtual void remove(zfindex index)
remove element at index with count, assert fail if out of range
Definition ZFCoreArray.h:778
T_Element const & get(zfindex index) const
get element's const reference at index
Definition ZFCoreArray.h:872
virtual zfindex genericFindReversely(const void *e)
generic version
Definition ZFCoreArray.h:987
zfindex find(T_Element const &e, typename ZFComparer< T_Element >::Comparer comparer=_ZFP_ZFComparerDefault) const
find element
Definition ZFCoreArray.h:603
void addFrom(const ZFCoreArray< T_Element > &ref)
add from another array
Definition ZFCoreArray.h:594
zfstring objectInfoOfContent(zfindex maxCount, const ZFTokenForContainer &token, typename ZFCoreInfoGetter< T_Element >::InfoGetter infoGetter) const
return content info
Definition ZFCoreArray.h:511
zfbool removeElement(T_Another const &e, typename ZFComparer< T_Element, T_Another >::Comparer comparer)
remove first matched element, return whether the element removed
Definition ZFCoreArray.h:688
T_Element removeAndGet(zfindex index)
remove and return the removed value
Definition ZFCoreArray.h:800
T_Element removeLastAndGet(void)
remove last and return the removed value, or assert fail if empty
Definition ZFCoreArray.h:818
virtual zfindex capacity(void) const
get capacity
Definition ZFCoreArray.h:535
T_Element const & getFirst(void) const
try to get first element, assert fail if empty
Definition ZFCoreArray.h:893
virtual const void * genericGet(zfindex index) const
generic version
Definition ZFCoreArray.h:1003
virtual void move(zfindex fromIndex, zfindex toIndexOrIndexMax)
move element
Definition ZFCoreArray.h:825
ZFCoreArray(const ZFCoreArray< T_Element > &ref)
construct from another array
Definition ZFCoreArray.h:353
ZFCompareResult objectCompareValue(const ZFCoreArray< T_Element > &ref, typename ZFComparer< T_Element >::Comparer comparer=_ZFP_ZFComparerDefault) const
compare by content
Definition ZFCoreArray.h:443
void set(zfindex index, T_Element const &e)
set element at index, or assert fail if index out of range
Definition ZFCoreArray.h:853
T_Element removeFirstAndGet(void)
remove first and return the removed value, or assert fail if empty
Definition ZFCoreArray.h:809
zfindex removeElementAll(T_Element const &e, typename ZFComparer< T_Element >::Comparer comparer=_ZFP_ZFComparerDefault)
remove all matched element, return number of removed element
Definition ZFCoreArray.h:740
void swap(ZFCoreArray< T_Element > &ref)
swap internal data
Definition ZFCoreArray.h:408
virtual void genericSet(zfindex index, const void *e)
generic version
Definition ZFCoreArray.h:998
void objectInfoOfContentT(zfstring &ret, zfindex maxCount, const ZFTokenForContainer &token, typename ZFCoreInfoGetter< T_Element >::InfoGetter infoGetter) const
see objectInfoOfContent
Definition ZFCoreArray.h:481
virtual void remove(zfindex index, zfindex count)
remove element at index with count, assert fail if out of range
Definition ZFCoreArray.h:785
void sort(zfindex start, zfindex count, typename ZFComparer< T_Element >::Comparer comparer)
sort element
Definition ZFCoreArray.h:947
virtual zfindex genericFind(const void *e)
generic version
Definition ZFCoreArray.h:985
void addFrom(const T_Element *src, zfindex count)
add elements, src can be part of this array's buffer
Definition ZFCoreArray.h:571
T_Element * arrayBuf(void)
directly access the array
Definition ZFCoreArray.h:911
zfbool removeElement(T_Element const &e, typename ZFComparer< T_Element >::Comparer comparer=_ZFP_ZFComparerDefault)
remove first matched element, return whether the element removed
Definition ZFCoreArray.h:670
void copyFrom(const ZFCoreArray< T_Element > &ref)
copy all settings and contents from another array
Definition ZFCoreArray.h:417
const T_Element * arrayBuf(void) const
see arrayBuf
Definition ZFCoreArray.h:915
zfindex findReversely(T_Element const &e, typename ZFComparer< T_Element >::Comparer comparer=_ZFP_ZFComparerDefault) const
find element reversely
Definition ZFCoreArray.h:619
virtual void genericSwap(ZFCoreArrayBase &ref)
generic version
Definition ZFCoreArray.h:981
virtual void sort(zfindex start=0, zfindex count=((zfindex) -1))
sort
Definition ZFCoreArray.h:931
virtual ZFCoreArrayBase * refNew(void) const
new reference
Definition ZFCoreArray.h:369
ZFCompareResult objectCompare(const ZFCoreArray< T_Element > &ref) const
compare by instance
Definition ZFCoreArray.h:437
virtual zfindex count(void) const
element count of this array
Definition ZFCoreArray.h:918
virtual void sortReversely(zfindex start=0, zfindex count=((zfindex) -1))
sort reversely
Definition ZFCoreArray.h:938
virtual void * refImpl(void) const
get the impl
Definition ZFCoreArray.h:371
zfindex find(T_Another const &e, typename ZFComparer< T_Element, T_Another >::Comparer comparer) const
find element
Definition ZFCoreArray.h:636
virtual zfindex genericRemoveElementAll(const void *e)
generic version
Definition ZFCoreArray.h:989
void(* InfoGetter)(zfstring &ret, T_Type const &v)
proto type for obtain object info, see zftToStringT
Definition ZFCoreTypeDef_OtherType.h:151
util class to hold string tokens
Definition ZFToken.h:17