home *** CD-ROM | disk | FTP | other *** search
/ Game Audio Programming / GameAudioProgramming.iso / Game_Audio / audio_sdk / src / AudioLib / MemBlock.h < prev    next >
Encoding:
C/C++ Source or Header  |  2002-07-28  |  868 b   |  60 lines

  1. #ifndef MEMBLOCK_H__
  2. #define MEMBLOCK_H__
  3.  
  4. #include "Audio.h"
  5.  
  6. namespace Audio
  7. {
  8.  
  9. class MemBlock;
  10.  
  11. typedef std::vector<MemBlock*> MemBlockVector;
  12.  
  13. class MemBlock
  14. {
  15. public:
  16.     unsigned char* GetData()        {  return m_pData;  }
  17.     unsigned int GetSize()  const    {  return m_nSize;  }
  18.  
  19.     friend class MemBlockManager;
  20.  
  21. private:
  22.     MemBlock();
  23.     ~MemBlock();
  24.     void Clear();
  25.  
  26.     uint8*    m_pData;
  27.     uint32    m_nSize;
  28.  
  29. };
  30.  
  31.  
  32. class MemBlockManager
  33. {
  34. public:
  35.     MemBlockManager();
  36.     ~MemBlockManager();
  37.     void Clear();
  38.  
  39.     bool Init(uint32 nBufferMax = 0xFFFFFFFF);
  40.     bool Term();
  41.  
  42.     bool GetMemBlock(uint32 nSize, MemBlock*& pMemBlock);
  43.     void ReleaseMemBlock(MemBlock* pMemBlock);
  44.  
  45. private:
  46.  
  47.     MemBlockVector    m_Free;
  48.     MemBlockVector    m_Used;
  49.  
  50.     uint32            m_nTotalMemory;
  51.     uint32            m_nBufferMax;
  52. };
  53.  
  54.  
  55. }; // namespace Audio
  56.  
  57.  
  58. #endif // MEMBLOCK_H__
  59.  
  60.