51 lines
1.6 KiB
C
51 lines
1.6 KiB
C
|
#ifndef NULLOSFT_MEDIALIBRARY_STRINGVECTOR_HEADER
|
||
|
#define NULLOSFT_MEDIALIBRARY_STRINGVECTOR_HEADER
|
||
|
|
||
|
|
||
|
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
// Manages strings as array. Strings a copied to the continues buffer which make it fast to access data
|
||
|
|
||
|
#include <windows.h>
|
||
|
|
||
|
class StringVector
|
||
|
{
|
||
|
|
||
|
public:
|
||
|
StringVector(size_t cchAllocate = 0, int cchAllocateStep = 32);
|
||
|
virtual ~StringVector(void);
|
||
|
|
||
|
public:
|
||
|
|
||
|
size_t Add(const wchar_t *entry, int cchLen); // returns index of a new created string object;
|
||
|
size_t Add(const wchar_t *entry) { return Add(entry, -1); }
|
||
|
|
||
|
BOOL Remove(size_t index);
|
||
|
size_t Count(void); // returns count;
|
||
|
|
||
|
void TrimCount(size_t newCount);
|
||
|
void Clear(void); // makes it empty;
|
||
|
// void Vacuum(void); // compact space;
|
||
|
LPCWSTR GetString(size_t index); // returns string from index;
|
||
|
int GetStringLength(size_t index); // returns string length;
|
||
|
size_t FindString(LCID lcid, LPCWSTR string, int cchLen = -1, BOOL igonreCase = FALSE); // returns index of the string if found or -1 if no string. (uses CompareString() function)
|
||
|
int SetAllocateStep(int cchNewStep); // Sets new allocate step and returns previous one (if newStep < 1 then just return current one).
|
||
|
size_t GetCbAllocated(void); // returns amount of allocated memory
|
||
|
size_t GetCchAllocated(void); // returns amount of allocated memory
|
||
|
|
||
|
private:
|
||
|
typedef struct _RECORD { size_t offset; int length; } RECORD, *HRECORD;
|
||
|
|
||
|
protected:
|
||
|
HRECORD pointers;
|
||
|
size_t ptCount;
|
||
|
size_t ptAllocated;
|
||
|
LPWSTR buffer;
|
||
|
size_t cchBuffer;
|
||
|
LPWSTR tail;
|
||
|
int allocateStep;
|
||
|
};
|
||
|
|
||
|
#endif //NULLOSFT_MEDIALIBRARY_STRINGVECTOR_HEADER
|