Main Page   Packages   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Search  

BoundedBuffer Class Reference

#include <BoundedBuffer.hpp>

List of all members.

Public Methods

 BoundedBuffer (size_t sz=10)
void enqueue (char item)
char dequeue ()
__inline long getCount ()
__inline size_t getSize ()
__inline bool isEmpty ()
 BoundedBuffer (size_t sz=10)
void enqueue (char item)
char dequeue ()
__inline long getCount ()
__inline size_t getSize ()
__inline bool isEmpty ()

Private Attributes

size_t size
size_t front
size_t rear
long count
char * buffer
bool * empty
char * buffer
bool * empty


Constructor & Destructor Documentation

BoundedBuffer::BoundedBuffer size_t    sz = 10
 

Definition at line 6 of file BoundedBuffer.cpp.

00007    : front( 0 ), rear( 0 ), count( 0 )
00008   {
00009     size    = sz + 1;
00010     buffer  = new char[  size ];
00011     empty   = new BOOL[ size ];
00012 
00013     memset( buffer, 0, size );  // Clear buffers
00014     memset( empty,  0, size );
00015   }

BoundedBuffer::BoundedBuffer size_t    sz = 10
 


Member Function Documentation

char BoundedBuffer::dequeue  
 

char BoundedBuffer::dequeue  
 

Definition at line 39 of file BoundedBuffer.cpp.

00039                               {
00040     if ( front != rear ) {
00041        front = ( front+1 ) % size;
00042     }
00043 
00044     --count;
00045     register char value = buffer[ front ];
00046     
00047     // Delete the data
00048     buffer[ front ] = 0;
00049     empty[  front ] = FALSE;
00050 
00051     // Return the copied value
00052     return value;
00053   }

void BoundedBuffer::enqueue char    item
 

void BoundedBuffer::enqueue char    item
 

Definition at line 17 of file BoundedBuffer.cpp.

00018   {
00019     register size_t r = ( rear + 1 ) % size;
00020     
00021     if ( r != front )
00022     {
00023       rear = r;
00024 
00025       if ( empty[ rear ] == FALSE )
00026       {
00027         ++count;
00028         buffer[ rear ] = item;
00029 
00030       } else {
00031 
00032         // Trying to overwrite
00033         fprintf( stderr, "\nCannot overwrite the data[%d].\n", rear );
00034         exit( 1 );
00035       }
00036     }
00037   }

__inline long BoundedBuffer::getCount   [inline]
 

Definition at line 25 of file BoundedBuffer.hpp.

00025 { return count; }

__inline long BoundedBuffer::getCount   [inline]
 

Definition at line 25 of file BoundedBuffer.hpp.

00025 { return count; }

__inline size_t BoundedBuffer::getSize   [inline]
 

Definition at line 26 of file BoundedBuffer.hpp.

00026 { return size;  }

__inline size_t BoundedBuffer::getSize   [inline]
 

Definition at line 26 of file BoundedBuffer.hpp.

00026 { return size;  }

__inline bool BoundedBuffer::isEmpty   [inline]
 

Definition at line 27 of file BoundedBuffer.hpp.

00027 { return (count == 0); }

__inline bool BoundedBuffer::isEmpty   [inline]
 

Definition at line 27 of file BoundedBuffer.hpp.

00027 { return (count == 0); }


Member Data Documentation

char* BoundedBuffer::buffer [private]
 

Definition at line 16 of file BoundedBuffer.hpp.

char* BoundedBuffer::buffer [private]
 

Definition at line 16 of file BoundedBuffer.hpp.

long BoundedBuffer::count [private]
 

Definition at line 15 of file BoundedBuffer.hpp.

bool* BoundedBuffer::empty [private]
 

Definition at line 17 of file BoundedBuffer.hpp.

bool* BoundedBuffer::empty [private]
 

Definition at line 17 of file BoundedBuffer.hpp.

size_t BoundedBuffer::front [private]
 

Definition at line 13 of file BoundedBuffer.hpp.

size_t BoundedBuffer::rear [private]
 

Definition at line 14 of file BoundedBuffer.hpp.

size_t BoundedBuffer::size [private]
 

Definition at line 12 of file BoundedBuffer.hpp.


The documentation for this class was generated from the following files:
Generated on Sun Oct 14 18:48:28 2001 for Standard J2K Library by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001