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

C:/temp/src/j2k/Deprecated/old_18mar_diff/nto/BoundedBuffer.cpp

Go to the documentation of this file.
00001 #ifndef BoundedBuffer_CPP
00002 #define BoundedBuffer_CPP
00003 
00004 #include "BoundedBuffer.hpp"
00005 
00006 BoundedBuffer::BoundedBuffer( size_t sz = BBSIZE ) 
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   }
00016 
00017   void BoundedBuffer::enqueue( char item )
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   }
00038 
00039   char BoundedBuffer::dequeue() {
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   }
00054 
00055 #endif

Generated on Sun Oct 14 18:46:22 2001 for Standard J2K Library by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001