Main Page | Class Hierarchy | Alphabetical List | Data Structures | File List | Data Fields | Globals

BufferfstreamManager.cpp

Go to the documentation of this file.
00001 // BufferfstreamManager.cpp
00002 //////////////////////////////////////////////////////////////////////
00003 //          (c) Copyright 2002 Brown Deer Technology, LLC.
00004 //                        All rights reserved.
00005 //////////////////////////////////////////////////////////////////////
00006 
00007 #ifdef USE_STD
00008 #include <iostream>
00009 using namespace std;
00010 #else
00011 #include <iostream.h>
00012 #endif
00013 
00014 #include "utility.h"
00015 #include "BufferfstreamManager.h"
00016 
00017 BufferfstreamManager* BufferfstreamManager::_ptinstance = 0;
00018 
00019 bool* BufferfstreamManager::_freetable=new bool[BUFFERFSTREAMMANAGER_SIZEMAX];
00020 
00021 int BufferfstreamManager::_begin = 1;
00022 
00023 BufferfstreamManager* BufferfstreamManager::Instance()
00024 {
00025    if ( _ptinstance == 0 ) _ptinstance = new BufferfstreamManager;
00026    return _ptinstance;
00027 }
00028 
00029 void BufferfstreamManager::clear()
00030 {
00031    _begin = 1;
00032    _freetable[0] = false;
00033    for(int i = 1; i < BUFFERFSTREAMMANAGER_SIZEMAX; ++i) _freetable[i] = true;
00034 }
00035 
00036 int BufferfstreamManager::get_handle()
00037 {
00038    int handle = _begin;
00039    while ( ( !_freetable[handle] ) 
00040      && ( handle++ < BUFFERFSTREAMMANAGER_SIZEMAX ) ) {}
00041    _freetable[handle] = false;
00042    _begin = handle;
00043    return handle;
00044 }
00045 
00046 void BufferfstreamManager::free_handle( int handle )
00047 {
00048    _freetable[handle] = true;
00049    if ( handle < _begin ) _begin = handle;
00050 }
00051 
00052 BufferfstreamManager::BufferfstreamManager()
00053 {
00054    _freetable[0] = false;
00055    for(int i = 1; i < BUFFERFSTREAMMANAGER_SIZEMAX; ++i) _freetable[i] = true;
00056 }
00057 
00058 BufferfstreamManager::BufferfstreamManager( const BufferfstreamManager& rhs )
00059 {
00060    _begin = rhs._begin;
00061    for(int i = 0; i < BUFFERFSTREAMMANAGER_SIZEMAX; ++i) {
00062       _freetable[i] = rhs._freetable[i];
00063    }
00064 }
00065 
00066 BufferfstreamManager::~BufferfstreamManager()
00067 {
00068    if ( _freetable != 0 ) { delete [] _freetable; _freetable = 0; }
00069    if ( _ptinstance != 0 ) { delete _ptinstance; _ptinstance = 0; }
00070 }
00071 
00072 BufferfstreamManager& BufferfstreamManager::operator = ( 
00073   const BufferfstreamManager& rhs
00074 )
00075 {
00076    _begin = rhs._begin;
00077    for(int i = 0; i < BUFFERFSTREAMMANAGER_SIZEMAX; ++i) {
00078       _freetable[i] = rhs._freetable[i];
00079    }
00080    return *this;
00081 }
00082 

Generated on Mon May 31 21:38:43 2004 for SR2k4 Assembler by doxygen 1.3.6