48 lines
1.2 KiB
C++
48 lines
1.2 KiB
C++
#include <iostream>
|
|
#include <ctime>
|
|
using namespace std;
|
|
|
|
#include "GdsStructure.h"
|
|
|
|
namespace IO {
|
|
GdsStructure::GdsStructure(string strName)
|
|
: _strName(strName) {}
|
|
|
|
|
|
bool GdsStructure::addElement(GdsElement* gdsElement) {
|
|
if(gdsElement)
|
|
_elements.push_back(gdsElement);
|
|
else {
|
|
cerr << "[GDS DRIVE ERROR]: cannot hold GdsElement." << endl;
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
bool GdsStructure::write(ofstream &file) {
|
|
time_t curtime = time(0);
|
|
tm now = *localtime(&curtime);
|
|
char date[BUFSIZ]={0};
|
|
const char format[]="%y-%m-%d %H:%M:%S";
|
|
if (!strftime(date, sizeof(date)-1, format, &now)>0)
|
|
cerr << "[GDS DRIVE ERROR]: cannot build current date." << endl;
|
|
|
|
// Header
|
|
file << "BGNSTR;" << endl
|
|
<< " CREATION {" << date << "};" << endl
|
|
<< " LASTMOD {" << date << "};" << endl
|
|
<< "STRNAME " << _strName << ";" << endl
|
|
<< endl;
|
|
|
|
// For each Element : write element.
|
|
for ( vector<GdsElement*>::iterator it = _elements.begin() ; it < _elements.end() ; it++ ) {
|
|
(*it)->write(file);
|
|
}
|
|
|
|
// Footer
|
|
file << "ENDSTR;" << endl;
|
|
|
|
return true;
|
|
}
|
|
} // namespace
|