home *** CD-ROM | disk | FTP | other *** search
/ Windows Graphics Programming / Feng_Yuan_Win32_GDI_DirectX.iso / Samples / Chapt_16 / EMF / Cache.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-16  |  1.7 KB  |  64 lines

  1. #pragma once
  2.  
  3. //-----------------------------------------------------------------------------------//
  4. //              Windows Graphics Programming: Win32 GDI and DirectDraw               //
  5. //                             ISBN  0-13-086985-6                                   //
  6. //                                                                                   //
  7. //  Written            by  Yuan, Feng                             www.fengyuan.com   //
  8. //  Copyright (c) 2000 by  Hewlett-Packard Company                www.hp.com         //
  9. //  Published          by  Prentice Hall PTR, Prentice-Hall, Inc. www.phptr.com      //
  10. //                                                                                   //
  11. //  FileName   : cache.h                                                             //
  12. //  Description: KCache class: remove duplication                                     //
  13. //  Version    : 1.00.000, May 31, 2000                                              //
  14. //-----------------------------------------------------------------------------------//
  15.  
  16. class KSignature
  17. {
  18.     long         m_size;
  19.     const void * m_data;
  20.     long         m_seq;
  21.  
  22. public:
  23.  
  24.     KSignature()
  25.     {
  26.         m_size = 0;
  27.         m_data = NULL;
  28.         m_seq  = 0;
  29.     }
  30.  
  31.     long Match(long size, const void * data)
  32.     {
  33.         if ( (m_size==size) && (memcmp(m_data, data, size)==0) )
  34.             return m_seq;
  35.         else
  36.             return -1;
  37.     }
  38.  
  39.     void Set(long size, const void * data, long seq)
  40.     {
  41.         m_size = size;
  42.         m_data = data;
  43.         m_seq  = seq;
  44.     }
  45. };
  46.  
  47.  
  48. class KCache  
  49. {
  50.     typedef enum { CacheSize = 64 };
  51.  
  52.     KSignature m_Cache[CacheSize];
  53.     long       m_total;
  54.  
  55. public:
  56.     KCache()
  57.     {
  58.         m_total = 0;
  59.     }
  60.  
  61.     bool Match(long size, const void * data, long & rslt);
  62. };
  63.  
  64.