2
2
Copyright (c) 1993-2008, Cognitive Technologies
5
����������� ��������� ��������������� � ������������� ��� � ���� ��������� ����,
6
��� � � �������� �����, � ����������� ��� ���, ��� ���������� ��������� �������:
8
* ��� ��������� ��������������� ��������� ���� ������ ���������� ���������
9
���� ����������� �� ��������� �����, ���� ������ ������� � �����������
11
* ��� ��������� ��������������� ��������� ���� � ������������ �/��� �
12
������ ����������, ������������ ��� ���������������, ������ �����������
13
��������� ���� ���������� �� ��������� �����, ���� ������ ������� �
14
����������� ����� �� ��������.
15
* �� �������� Cognitive Technologies, �� ����� �� ����������� �� �����
16
���� ������������ � �������� �������� ��������� �/��� �����������
17
���������, ���������� �� ���� ��, ��� ���������������� �����������
20
��� ��������� ������������� ����������� ��������� ���� �/��� ������� ������ "���
21
��� ����" ��� ������-���� ���� ��������, ���������� ���� ��� ���������������,
22
������� �������� ������������ �������� � ����������� ��� ���������� ����, �� ��
23
������������� ���. �� �������� ��������� ���� � �� ���� ������ ����, �������
24
����� �������� �/��� �������� �������������� ���������, �� � ���� ������ ��
25
��Ѩ� ���������������, ������� ����� �����, ���������, ����������� ���
26
������������� ������, ��������� � �������������� ��� ���������� ����������
27
������������� ������������� ��������� (������� ������ ������, ��� ������,
28
������� ���������, ��� ������ �/��� ������ �������, ���������� ��-�� ��������
29
������� ��� �/��� ������ ��������� �������� ��������� � ������� �����������,
30
�� �� ������������� ����� ��������), �� �� ������������� ���, ���� ���� �����
31
�������� ��� ������ ���� ���� �������� � ����������� ����� ������� � ������.
5
Разрешается повторное распространение и использование как в виде исходного кода,
6
так и в двоичной форме, с изменениями или без, при соблюдении следующих условий:
8
* При повторном распространении исходного кода должны оставаться указанное
9
выше уведомление об авторском праве, этот список условий и последующий
11
* При повторном распространении двоичного кода в документации и/или в
12
других материалах, поставляемых при распространении, должны сохраняться
13
указанная выше информация об авторском праве, этот список условий и
14
последующий отказ от гарантий.
15
* Ни название Cognitive Technologies, ни имена ее сотрудников не могут
16
быть использованы в качестве средства поддержки и/или продвижения
17
продуктов, основанных на этом ПО, без предварительного письменного
20
ЭТА ПРОГРАММА ПРЕДОСТАВЛЕНА ВЛАДЕЛЬЦАМИ АВТОРСКИХ ПРАВ И/ИЛИ ДРУГИМИ ЛИЦАМИ "КАК
21
ОНА ЕСТЬ" БЕЗ КАКОГО-ЛИБО ВИДА ГАРАНТИЙ, ВЫРАЖЕННЫХ ЯВНО ИЛИ ПОДРАЗУМЕВАЕМЫХ,
22
ВКЛЮЧАЯ ГАРАНТИИ КОММЕРЧЕСКОЙ ЦЕННОСТИ И ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ, НО НЕ
23
ОГРАНИЧИВАЯСЬ ИМИ. НИ ВЛАДЕЛЕЦ АВТОРСКИХ ПРАВ И НИ ОДНО ДРУГОЕ ЛИЦО, КОТОРОЕ
24
МОЖЕТ ИЗМЕНЯТЬ И/ИЛИ ПОВТОРНО РАСПРОСТРАНЯТЬ ПРОГРАММУ, НИ В КОЕМ СЛУЧАЕ НЕ
25
НЕСЁТ ОТВЕТСТВЕННОСТИ, ВКЛЮЧАЯ ЛЮБЫЕ ОБЩИЕ, СЛУЧАЙНЫЕ, СПЕЦИАЛЬНЫЕ ИЛИ
26
ПОСЛЕДОВАВШИЕ УБЫТКИ, СВЯЗАННЫЕ С ИСПОЛЬЗОВАНИЕМ ИЛИ ПОНЕСЕННЫЕ ВСЛЕДСТВИЕ
27
НЕВОЗМОЖНОСТИ ИСПОЛЬЗОВАНИЯ ПРОГРАММЫ (ВКЛЮЧАЯ ПОТЕРИ ДАННЫХ, ИЛИ ДАННЫЕ,
28
СТАВШИЕ НЕГОДНЫМИ, ИЛИ УБЫТКИ И/ИЛИ ПОТЕРИ ДОХОДОВ, ПОНЕСЕННЫЕ ИЗ-ЗА ДЕЙСТВИЙ
29
ТРЕТЬИХ ЛИЦ И/ИЛИ ОТКАЗА ПРОГРАММЫ РАБОТАТЬ СОВМЕСТНО С ДРУГИМИ ПРОГРАММАМИ,
30
НО НЕ ОГРАНИЧИВАЯСЬ ЭТИМИ СЛУЧАЯМИ), НО НЕ ОГРАНИЧИВАЯСЬ ИМИ, ДАЖЕ ЕСЛИ ТАКОЙ
31
ВЛАДЕЛЕЦ ИЛИ ДРУГОЕ ЛИЦО БЫЛИ ИЗВЕЩЕНЫ О ВОЗМОЖНОСТИ ТАКИХ УБЫТКОВ И ПОТЕРЬ.
33
33
Redistribution and use in source and binary forms, with or without modification,
34
34
are permitted provided that the following conditions are met:
95
CTCMemoryHeader(Handle hMemory, Word32 wBlockSize);
95
CTCMemoryHeader(Handle hMemory, uint32_t wBlockSize);
96
96
~CTCMemoryHeader();
97
PChar8 GetOwner(void) { return mcOwner; };
98
PChar8 GetComment(void) { return mcComment; };
97
char* GetOwner(void) { return mcOwner; };
98
char* GetComment(void) { return mcComment; };
101
CTCMemoryHeader(Handle hMemory, Word32 wBlockSize, const char *OwnerName, const char *Commentary);
101
CTCMemoryHeader(Handle hMemory, uint32_t wBlockSize, const char *OwnerName, const char *Commentary);
102
102
CTCMemoryHeader * GetNext() { return (CTCMemoryHeader *)(CTCGlobalHeader::GetNext()); };
104
Char8 mcComment[CFIO_MAX_COMMENT];
105
Char8 mcOwner[CFIO_MAX_OWNER];
104
char mcComment[CFIO_MAX_COMMENT];
105
char mcOwner[CFIO_MAX_OWNER];
108
108
typedef CTCMemoryHeader *PCTCMemoryHeader, **PPCTCMemoryHeader;
158
158
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
159
// ������ ����� ������ ��� ����������� ������ ���������� � ���������
160
// ������. � �������� ������������ ��� ������ ���������, ��� ��������
161
// ���������� ��������� � ����� ������ � ��� ��������� � �������������!
159
// Данный класс служит для составления списка сохраненых в хранилище
160
// файлов. в основном используется при записи хранилища, при открытии
161
// созданного хранилища к концу работы с ним нуждается в корректировке!
163
163
class CTCStorageContents
166
Word32 wContentsSize;
166
uint32_t wContentsSize;
167
167
CTCStorageContents * pNext;
173
173
CTCStorageContents():wItemID(3),wItemSize(0),wContentsSize( sizeof ( class CTCStorageContents))
174
174
{pNext = NULL; hItem = NULL;};
175
CTCStorageContents(Handle H, Word32 ID = 0, Word32 Size = 0, CTCStorageContents * Next = NULL): wItemID(ID),wItemSize(Size),wContentsSize( sizeof ( class CTCStorageContents) )
175
CTCStorageContents(Handle H, uint32_t ID = 0, uint32_t Size = 0, CTCStorageContents * Next = NULL): wItemID(ID),wItemSize(Size),wContentsSize( sizeof ( class CTCStorageContents) )
176
176
{ hItem = H; pNext = Next;};
177
177
~CTCStorageContents() {};
180
180
Handle GetHandle() { return hItem; };
181
Word32 GetID() { return wItemID; };
182
Word32 GetSize() { return wItemSize; };
183
Word32 GetContentsSize() { return wContentsSize; };
181
uint32_t GetID() { return wItemID; };
182
uint32_t GetSize() { return wItemSize; };
183
uint32_t GetContentsSize() { return wContentsSize; };
184
184
CTCStorageContents * GetNext() { return pNext; };
187
187
Bool32 DeleteItemFromStorage(Handle Item);
188
188
void SetHandle(Handle Item) { hItem = Item; };
189
void SetID(Word32 ID) { wItemID = ID; };
190
void SetSize(Word32 Size) { wItemSize = Size; };
189
void SetID(uint32_t ID) { wItemID = ID; };
190
void SetSize(uint32_t Size) { wItemSize = Size; };
191
191
void SetNext(CTCStorageContents * Next) { pNext = Next; };
196
uint32_t siHeaderSize;
199
199
char siName[CFIO_MAX_PATH];
201
201
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
207
207
char pcName[CFIO_MAX_PATH];
208
208
char pcFolder[CFIO_MAX_PATH];
209
209
// CTCStorageContents Contents;
210
Word32 wContensCounter;
210
uint32_t wContensCounter;
215
215
CTCStorageHeader();
216
216
CTCStorageHeader( CTCGlobalFile * pNewStorage,
217
Word32 Flag = CFIO_FILE_READ|CFIO_FILE_WRITE,
217
uint32_t Flag = CFIO_FILE_READ|CFIO_FILE_WRITE,
218
218
const char* pcNewStorageFolder = NULL );
219
219
~CTCStorageHeader();
222
222
CTCStorageHeader * GetNext(void) { return (CTCStorageHeader *)(CTCGlobalHeader::GetNext()); };
223
223
CTCGlobalFile * GetStorageFile(void) { return pStorageFile; };
224
Word32 IncreaseContentsCounter() { return ++wContensCounter; };
225
Word32 DecreaseContentsCounter() { return --wContensCounter; };
224
uint32_t IncreaseContentsCounter() { return ++wContensCounter; };
225
uint32_t DecreaseContentsCounter() { return --wContensCounter; };
226
226
CTCGlobalFile * GetStorage() { return pStorageFile; };
227
PChar8 GetStorageFolder() { return pcFolder; };
227
char* GetStorageFolder() { return pcFolder; };
228
228
// Handle EnumItemContents(Handle Item = NULL);
229
229
// Bool32 DeleteItemFromStorage(Handle Item);
230
// Bool32 AddItemToStorage(Handle hNewItem, Word32 wID = 0, Word32 wNewSize = 0);
230
// Bool32 AddItemToStorage(Handle hNewItem, uint32_t wID = 0, uint32_t wNewSize = 0);
233
233
Handle AcceptFile(CTCGlobalFile * File) { return (pStorageFile = File)->GetFileHandle(); };
241
241
class CTCMemoryList
245
245
CTCMemoryHeader mhFirstItem;
246
246
CTCMemoryHeader mhLastItem;
247
Word32 wMemoryCounter;
247
uint32_t wMemoryCounter;
248
uint32_t wItemCounter;
252
252
~CTCMemoryList();
255
Bool32 AddItem(Handle hMemory, Word32 wSize, Word32 wIsGlobal, const char *cOwner, const char *Coment);
255
Bool32 AddItem(Handle hMemory, uint32_t wSize, uint32_t wIsGlobal, const char *cOwner, const char *Coment);
256
256
CTCMemoryHeader * GetItem(Handle hMemory);
257
257
Bool32 LockUnlockItem(Handle hMemory, Bool32 bLock);
258
Bool32 TakeItem(Handle hMemory, Word32 * wSize, Word32 * wFlag);
259
Bool32 DeleteItem(Handle hMemory, Word32 wParam = 0x0);
258
Bool32 TakeItem(Handle hMemory, uint32_t * wSize, uint32_t * wFlag);
259
Bool32 DeleteItem(Handle hMemory, uint32_t wParam = 0x0);
262
262
Bool32 KillItem(PCTCMemoryHeader pItem, PCTCMemoryHeader pPrevItem);
263
263
CTCMemoryHeader * pFirst();
264
264
CTCMemoryHeader * pLast();
265
Word32 IncreaseMemoryCounter(Word32 wSize);
266
Word32 DecreaseMemoryCounter(Word32 wSize);
265
uint32_t IncreaseMemoryCounter(uint32_t wSize);
266
uint32_t DecreaseMemoryCounter(uint32_t wSize);
268
268
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
270
270
class CTCFileList
274
274
CTCStorageHeader * pList;
276
Word32 wSpaceCounter;
275
uint32_t wFileCounter;
276
uint32_t wSpaceCounter;
277
277
CTCFileHeader mfFirstItem;
278
278
CTCFileHeader mfLastItem;
281
Handle FindFile(PChar8 lpFileName);
281
Handle FindFile(char* lpFileName);
286
Handle AddItem(CTCGlobalFile * pNewFile, Word32 wNewFlag, Handle Storage);
287
Bool32 DeleteItem(Handle File, Word32 Flag = 0);
286
Handle AddItem(CTCGlobalFile * pNewFile, uint32_t wNewFlag, Handle Storage);
287
Bool32 DeleteItem(Handle File, uint32_t Flag = 0);
288
288
Handle GetAttachedFileHeader(Handle Storage, CTCFileHeader * File = NULL);
289
289
CTCFileHeader * GetItemHeader(Handle File);
290
290
CTCGlobalFile * GetItem(Handle File);
293
293
CTCFileHeader * pLast() { return &mfLastItem; };
294
294
CTCFileHeader * pFirst() { return &mfFirstItem; };
295
Word32 IncreaseFileCounter(void) { return ++wFileCounter; }
296
Word32 DecreaseFileCounter(void) { return --wFileCounter; }
297
Word32 IncreaseSpaceCounter(void) { return ++wSpaceCounter; }
298
Word32 DecreaseSpaceCounter(void) { return --wSpaceCounter; }
295
uint32_t IncreaseFileCounter(void) { return ++wFileCounter; }
296
uint32_t DecreaseFileCounter(void) { return --wFileCounter; }
297
uint32_t IncreaseSpaceCounter(void) { return ++wSpaceCounter; }
298
uint32_t DecreaseSpaceCounter(void) { return --wSpaceCounter; }
300
300
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
302
302
class CTCStorageList
305
uint32_t wHeaderSize;
306
306
CTCStorageHeader msFirstItem;
307
307
CTCStorageHeader msLastItem;
308
308
CTCStorageHeader * pList;
309
uint32_t wItemCounter;
312
Handle FindStorage(PChar8 lpName);
312
Handle FindStorage(char* lpName);
313
313
CTCStorageList();
314
314
~CTCStorageList();
317
Handle AddItem(CTCGlobalFile * NewStorage, Word32 wParametr);
318
Bool32 DeleteItem(Handle Storage, Word32 Flag = 0);
317
Handle AddItem(CTCGlobalFile * NewStorage, uint32_t wParametr);
318
Bool32 DeleteItem(Handle Storage, uint32_t Flag = 0);
319
319
CTCGlobalFile * GetItem(Handle Storage);
320
320
CTCStorageHeader * GetFirstItemHeader() { return pFirst()->GetNext(); };
321
321
CTCStorageHeader * GetItemHeader(Handle Storage);