|
PLearn 0.1
|
#include <MRUFileList.h>

Public Types | |
| typedef list< pair< string, ofstream * > > | list_typ |
Public Member Functions | |
| MRUFileList (int _max_opened_files=1000, ios_base::openmode _mode=ios_base::out|ios_base::app) | |
| ~MRUFileList () | |
| ofstream * | getFile (string fname) |
| string | errorMsg () |
| void | clearError () |
| float | misses () |
Protected Attributes | |
| int | max_opened_files |
| string | error |
| list_typ | mru_list |
| int | tot_miss |
| int | tot_access |
| ios_base::openmode | mode |
Definition at line 59 of file MRUFileList.h.
| typedef list<pair<string,ofstream*> > PLearn::MRUFileList::list_typ |
Definition at line 63 of file MRUFileList.h.
| PLearn::MRUFileList::MRUFileList | ( | int | _max_opened_files = 1000, |
| ios_base::openmode | _mode = ios_base::out | ios_base::app |
||
| ) |
Definition at line 42 of file MRUFileList.cc.
:max_opened_files(_max_opened_files),tot_miss(0),tot_access(0),mode(_mode) {}
| PLearn::MRUFileList::~MRUFileList | ( | ) |
Definition at line 90 of file MRUFileList.cc.
References mru_list.
| void PLearn::MRUFileList::clearError | ( | ) | [inline] |
Definition at line 71 of file MRUFileList.h.
{error="";}
| string PLearn::MRUFileList::errorMsg | ( | ) | [inline] |
Definition at line 70 of file MRUFileList.h.
{return error;}
| ofstream * PLearn::MRUFileList::getFile | ( | string | fname | ) |
Definition at line 46 of file MRUFileList.cc.
References error, max_opened_files, mode, mru_list, tot_access, and tot_miss.
{
tot_access++;
list_typ::iterator it = mru_list.end();
ofstream * ofile;
// search for the wanted file in the MRU list
for(list_typ::iterator it2 = mru_list.begin(); it2 != mru_list.end(); ++it2)
if(it2->first == fname)
{
it=it2;
break;
}
// the file is not currently opened.
if(it == mru_list.end())
{
tot_miss++;
// If we have already the max of opened files, we close the least recently used
if((signed)mru_list.size() >= max_opened_files)
{
(mru_list.back().second)->close();
delete (mru_list.back().second);
mru_list.pop_back();
}
ofile = new ofstream(fname.c_str(),mode);
if(ofile->bad())
{
error="Could not open/create file "+fname+".";
return NULL;
}
mru_list.push_front(make_pair(fname,ofile));
return ofile;
}
// else, we move the file to the top of the list and return the associated ofstream ptr
ofile=it->second;
mru_list.erase(it);
mru_list.push_front(make_pair(fname,ofile));
return ofile;
}
| float PLearn::MRUFileList::misses | ( | ) | [inline] |
Definition at line 74 of file MRUFileList.h.
{return 100.0f * (float)tot_miss/(float)tot_access;}
string PLearn::MRUFileList::error [protected] |
Definition at line 78 of file MRUFileList.h.
Referenced by getFile().
int PLearn::MRUFileList::max_opened_files [protected] |
Definition at line 77 of file MRUFileList.h.
Referenced by getFile().
ios_base::openmode PLearn::MRUFileList::mode [protected] |
Definition at line 81 of file MRUFileList.h.
Referenced by getFile().
list_typ PLearn::MRUFileList::mru_list [protected] |
Definition at line 79 of file MRUFileList.h.
Referenced by getFile(), and ~MRUFileList().
int PLearn::MRUFileList::tot_access [protected] |
Definition at line 80 of file MRUFileList.h.
Referenced by getFile().
int PLearn::MRUFileList::tot_miss [protected] |
Definition at line 80 of file MRUFileList.h.
Referenced by getFile().
1.7.4