/*@@@ File: dft.cxx Version: 1.00 Description: Class DFT - Data Field Table Author: Nassib Nassar, nrn@cnidr.org @@@*/ #include "defs.hxx" #include "string.hxx" #include "vlist.hxx" #include "fc.hxx" #include "fct.hxx" #include "df.hxx" #include "dft.hxx" DFT::DFT() { Init(); } void DFT::Init() { Table = new DF[100]; TotalEntries = 0; MaxEntries = 100; } DFT& DFT::operator=(const DFT& OtherDft) { if (Table) { delete [] Table; } Init(); INT y = OtherDft.GetTotalEntries(); INT x; DF df; for (x=1; x<=y; x++) { OtherDft.GetEntry(x, &df); AddEntry(df); } return *this; } void DFT::AddEntry(const DF& DfRecord) { if (TotalEntries == MaxEntries) { Expand(); } Table[TotalEntries] = DfRecord; TotalEntries++; } void DFT::GetEntry(const INT Index, PDF DfRecord) const { if ( (Index > 0) && (Index <= TotalEntries) ) { *DfRecord = Table[Index-1]; } } void DFT::Expand() { Resize(TotalEntries+100); } void DFT::CleanUp() { Resize(TotalEntries); } void DFT::Resize(const INT Entries) { PDF Temp = new DF[Entries]; INT RecsToCopy; INT x; if (Entries >= TotalEntries) { RecsToCopy = TotalEntries; } else { RecsToCopy = Entries; TotalEntries = Entries; } for (x=0; x