home *** CD-ROM | disk | FTP | other *** search
- /*------------------------------------------------------------------------
- * filename - instdata.h
- *
- * definitions for DLL instance data
- *-----------------------------------------------------------------------*/
-
- /*[]------------------------------------------------------------[]*/
- /*| |*/
- /*| C/C++ Run Time Library - Version 4.0 |*/
- /*| |*/
- /*| |*/
- /*| Copyright (c) 1991 by Borland International |*/
- /*| All Rights Reserved. |*/
- /*| |*/
- /*[]------------------------------------------------------------[]*/
-
- #if !defined(__INSTDATA_H)
- #define __INSTDATA_H
-
- #if !defined( __WINDOWS_H )
- #include <windows.h>
- #endif
-
- #if !defined( __STDLIB_H )
- #include <stdlib.h>
- #endif
-
- const int DEFAULTINSTANCEDATATABLESIZE = 10;
- const unsigned long INSTANCEDATASIGNATURE = 0x4e494246L;
-
- class TInstanceDataBase
- {
- private:
- unsigned long Signature;
- protected:
- TInstanceDataBase() { Signature = INSTANCEDATASIGNATURE; }
- public:
- BOOL Verify() { return (Signature==INSTANCEDATASIGNATURE); }
- };
-
- struct TInstanceDataEntry
- {
- HANDLE hTask;
- TInstanceDataBase far * pInstanceData;
- private:
- TInstanceDataEntry() {}; // forces no inheritance
- };
-
- class TInstanceDataTable
- {
- int NumEntries;
- TInstanceDataEntry * Table;
- public:
- TInstanceDataTable(int InitialCount = DEFAULTINSTANCEDATATABLESIZE);
-
- static TInstanceDataEntry * AllocTable(int Count);
- static void FreeTable(TInstanceDataEntry *pTable);
-
- virtual TInstanceDataBase far *NewEntry() = 0;
-
- BOOL AddEntry(HANDLE hTask, TInstanceDataBase far * pClientData);
- BOOL DeleteEntry(HANDLE hTask, TInstanceDataBase far * pClientData);
-
- TInstanceDataBase far * GetClientData(HANDLE hTask);
- TInstanceDataEntry *GrowTable(int Increment = 10);
-
- };
-
- #endif // __INSTDATA_H
-