00001 #ifndef _ARRAYHELPER_H_
00002 #define _ARRAYHELPER_H_
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifdef _WIN32
00023 #pragma once
00024 #endif
00025
00026
00027
00028
00029
00030
00031 class FdoArrayHelper
00032 {
00033 public:
00034
00035 struct Metadata
00036 {
00037
00038 FdoInt32 refCount;
00039
00040 FdoInt32 size;
00041
00042 FdoInt32 alloc;
00043 void SetSizes(FdoInt32 rc, FdoInt32 s, FdoInt32 a) { refCount=rc; size=s; alloc=a; }
00044 };
00045
00046
00047
00048 struct GenericArray
00049 {
00050 Metadata m_metadata;
00051 FdoByte* GetData() { return (m_metadata.alloc<=0) ? 0 : (((FdoByte*)this) + sizeof(Metadata)); }
00052 };
00053
00054 FDO_API_COMMON static GenericArray* Append(GenericArray* array, FdoInt32 numElements, FdoByte* elements, FdoInt32 elementSize);
00055
00056 FDO_API_COMMON static GenericArray* SetSize(GenericArray* array, FdoInt32 numElements, FdoInt32 elementSize);
00057
00058 FDO_API_COMMON static GenericArray* SetAlloc(GenericArray* array, FdoInt32 numElements, FdoInt32 elementSize);
00059
00060 FDO_API_COMMON static GenericArray* AllocMore(GenericArray* array, FdoInt32 atLeastThisMuch, bool exactly, FdoInt32 elementSize);
00061
00062 FDO_API_COMMON static void DisposeOfArray(GenericArray* array, FdoInt32 elementSize);
00063
00064 protected:
00065
00066
00067 FDO_API_COMMON FdoArrayHelper() {};
00068 };
00069 #endif
00070
00071