Protium
Math and Design Features
 All Classes Namespaces Files Functions Variables Typedefs Enumerator Friends Macros Pages
Chunk.h
Go to the documentation of this file.
1 
5 #ifndef Protium_Chunk_h_
6 #define Protium_Chunk_h_
7 
8 #include <cstddef>
9 
10 namespace Protium{
11 
12  namespace Allocation{
13 
15 
16  class Chunk{
17 
19  unsigned char* fData;
20 
22  unsigned char fFirstAvailable;
23 
25  unsigned char fNAvail;
26 
28  friend class FixedAllocator;
32  bool Init( std::size_t size, unsigned char n );
34  void Reset( std::size_t blockSize, unsigned char blocks );
36  void Release();
38  void* Allocate( std::size_t blocks );
40  void Deallocate( void * p, std::size_t blocks );
50  bool IsCorrupt( unsigned char numBlocks, std::size_t blockSize, bool checkIndexes ) const;
52  bool IsBlockAvailable( void* p, unsigned char numBlocks, std::size_t blockSize ) const;
54  inline bool HasBlock( void* p, std::size_t chunkLength ) const {
55  unsigned char * pc = static_cast< unsigned char * >( p );
56  return ( fData <= pc ) && ( pc < fData + chunkLength );
57  }
59  inline bool HasAvailable( unsigned char numBlocks ) const {
60  return ( fNAvail == numBlocks );
61  }
63  inline bool IsFilled( void ) const {
64  return ( 0 == fNAvail );
65  }
66  };//end Chunk class
67  }//End Allocation Namespace
68 }//End Protium Namespace
69 
70 
71 
72 #endif //File Guardian
bool IsFilled(void) const
Checks to see if this is filled.
Definition: Chunk.h:63
Pool of allocation chunks.
unsigned char fFirstAvailable
First Available block.
Definition: Chunk.h:22
bool IsCorrupt(unsigned char numBlocks, std::size_t blockSize, bool checkIndexes) const
Definition: Chunk.cxx:61
bool HasBlock(void *p, std::size_t chunkLength) const
Checks if this block belongs to this chunk.
Definition: Chunk.h:54
bool HasAvailable(unsigned char numBlocks) const
Checks to see if this number of blocks is available in this chunk.
Definition: Chunk.h:59
unsigned char * fData
Definition: Chunk.h:19
void * Allocate(std::size_t blocks)
Allocates out a number of additional blocks.
Definition: Chunk.cxx:30
void Reset(std::size_t blockSize, unsigned char blocks)
Each time a chunk is reused, it needs to be reset.
Definition: Chunk.cxx:15
Represents a fixed number of blocks.
Definition: Chunk.h:16
bool Init(std::size_t size, unsigned char n)
Definition: Chunk.cxx:6
unsigned char fNAvail
Number of available blocks.
Definition: Chunk.h:25
void Deallocate(void *p, std::size_t blocks)
DeAllocates a number of blocks starting at pointer.
Definition: Chunk.cxx:43
void Release()
Deallocates all blocks in chunck.
Definition: Chunk.cxx:24
bool IsBlockAvailable(void *p, unsigned char numBlocks, std::size_t blockSize) const
Checks the block starting at p and for p+numBlocks*blockSize checks to see if they're used...
Definition: Chunk.cxx:160