home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c082_122 / 2.ddi / RTLINSRC.ZIP / INSTDATA.H < prev    next >
Encoding:
C/C++ Source or Header  |  1992-06-10  |  2.1 KB  |  70 lines

  1. /*------------------------------------------------------------------------
  2.  * filename - instdata.h
  3.  *
  4.  *        definitions for DLL instance data
  5.  *-----------------------------------------------------------------------*/
  6.  
  7. /*[]------------------------------------------------------------[]*/
  8. /*|                                                              |*/
  9. /*|     C/C++ Run Time Library - Version 4.0                     |*/
  10. /*|                                                              |*/
  11. /*|                                                              |*/
  12. /*|     Copyright (c) 1991 by Borland International              |*/
  13. /*|     All Rights Reserved.                                     |*/
  14. /*|                                                              |*/
  15. /*[]------------------------------------------------------------[]*/
  16.  
  17. #if !defined(__INSTDATA_H)
  18. #define __INSTDATA_H
  19.  
  20. #if !defined( __WINDOWS_H )
  21. #include <windows.h>
  22. #endif
  23.  
  24. #if !defined( __STDLIB_H )
  25. #include <stdlib.h>
  26. #endif
  27.  
  28. const int DEFAULTINSTANCEDATATABLESIZE = 10;
  29. const unsigned long INSTANCEDATASIGNATURE = 0x4e494246L;
  30.  
  31. class TInstanceDataBase
  32. {
  33. private:
  34.     unsigned long Signature;
  35. protected:    
  36.     TInstanceDataBase() { Signature = INSTANCEDATASIGNATURE; }
  37. public:
  38.     BOOL Verify() { return (Signature==INSTANCEDATASIGNATURE); }
  39. };
  40.  
  41. struct TInstanceDataEntry
  42. {
  43.     HANDLE hTask;
  44.     TInstanceDataBase far * pInstanceData;
  45. private:
  46.     TInstanceDataEntry() {};    // forces no inheritance
  47. };
  48.  
  49. class TInstanceDataTable
  50. {
  51.     int NumEntries;
  52.     TInstanceDataEntry * Table;
  53. public:
  54.     TInstanceDataTable(int InitialCount = DEFAULTINSTANCEDATATABLESIZE);
  55.  
  56.     static TInstanceDataEntry * AllocTable(int Count);
  57.     static void FreeTable(TInstanceDataEntry *pTable);
  58.  
  59.     virtual TInstanceDataBase far *NewEntry() = 0;
  60.  
  61.     BOOL AddEntry(HANDLE hTask, TInstanceDataBase far * pClientData);
  62.     BOOL DeleteEntry(HANDLE hTask, TInstanceDataBase far * pClientData);
  63.  
  64.     TInstanceDataBase far * GetClientData(HANDLE hTask);
  65.     TInstanceDataEntry *GrowTable(int Increment = 10);
  66.  
  67. };
  68.  
  69. #endif // __INSTDATA_H
  70.