Data Structures | |
| struct | TRecord |
Typedefs | |
| typedef std::vector< int > | TListOfId |
| typedef int | TGroupId |
| typedef std::map< TGroupId, TRecord > | TDataSet |
Functions | |
| void | Read (std::ifstream &in_stream, TDataSet &theDataSet) |
| void | ReadGroup (const std::string &myGroupLabel, std::ifstream &in_stream, TDataSet &theDataSet) |
| void | Write (std::ofstream &out_stream, const TDataSet &theDataSet) |
| typedef std::map<TGroupId, TRecord> UNV2417.TDataSet |
Definition at line 43 of file UNV2417_Structure.hxx.
| typedef int UNV2417.TGroupId |
Definition at line 42 of file UNV2417_Structure.hxx.
| typedef std::vector<int> UNV2417.TListOfId |
Definition at line 34 of file UNV2417_Structure.hxx.
| void UNV2417::Read | ( | std::ifstream & | in_stream, |
| TDataSet & | theDataSet | ||
| ) |
Definition at line 39 of file UNV2417_Structure.cxx.
References _group_labels, EXCEPTION, NBGROUP, and ReadGroup().
{
if(!in_stream.good())
EXCEPTION(runtime_error,"ERROR: Input file not good.");
std::string olds, news;
while(true){
in_stream >> olds >> news;
/*
* a "-1" followed by a number means the beginning of a dataset
* stop combing at the end of the file
*/
while( ((olds != "-1") || (news == "-1") ) && !in_stream.eof() ){
olds = news;
in_stream >> news;
}
if(in_stream.eof())
return;
for (int i = 0; i < NBGROUP; i++) {
if (news == _group_labels[i]) {
ReadGroup(news, in_stream, theDataSet);
}
}
}
}
| void UNV2417::ReadGroup | ( | const std::string & | myGroupLabel, |
| std::ifstream & | in_stream, | ||
| TDataSet & | theDataSet | ||
| ) |
Definition at line 68 of file UNV2417_Structure.cxx.
References UNV2417.TRecord.ElementList, UNV2417.TRecord.GroupName, and UNV2417.TRecord.NodeList.
Referenced by Read().
{
TGroupId aId;
for(; !in_stream.eof();){
in_stream >> aId ;
if(aId == -1){
// end of dataset is reached
break;
}
int n_nodes;
TRecord aRec;
int aTmp;
in_stream>>aTmp; // miss not necessary values
in_stream>>aTmp;
in_stream>>aTmp;
in_stream>>aTmp;
in_stream>>aTmp;
in_stream>>aTmp;
in_stream>>n_nodes;
std::getline(in_stream, aRec.GroupName, '\n'); // Finalise previous reading
std::getline(in_stream, aRec.GroupName, '\n');
int aElType;
int aElId;
int aNum;
for(int j=0; j < n_nodes; j++){
in_stream>>aElType;
in_stream>>aElId;
if ((myGroupLabel.compare("2435") == 0) ||
(myGroupLabel.compare("2452") == 0) ||
(myGroupLabel.compare("2467") == 0) ||
(myGroupLabel.compare("2477") == 0)) {
in_stream>>aTmp;
in_stream>>aTmp;
}
switch (aElType) {
case 7: // Nodes
aNum = aRec.NodeList.size();
aRec.NodeList.resize(aNum + 1);
aRec.NodeList[aNum] = aElId;
break;
case 8: // Elements
aNum = aRec.ElementList.size();
aRec.ElementList.resize(aNum + 1);
aRec.ElementList[aNum] = aElId;
break;
}
}
theDataSet.insert(TDataSet::value_type(aId,aRec));
}
}
| void UNV2417::Write | ( | std::ofstream & | out_stream, |
| const TDataSet & | theDataSet | ||
| ) |
Definition at line 124 of file UNV2417_Structure.cxx.
References _label_dataset, UNV2417.TRecord.ElementList, EXCEPTION, UNV2417.TRecord.GroupName, and UNV2417.TRecord.NodeList.
{
if(!out_stream.good())
EXCEPTION(runtime_error,"ERROR: Output file not good.");
/*
* Write beginning of dataset
*/
out_stream<<" -1\n";
out_stream<<" "<<_label_dataset<<"\n";
TDataSet::const_iterator anIter = theDataSet.begin();
for(; anIter != theDataSet.end(); anIter++){
const TGroupId& aLabel = anIter->first;
const TRecord& aRec = anIter->second;
int aNbNodes = aRec.NodeList.size();
int aNbElements = aRec.ElementList.size();
int aNbRecords = aNbNodes + aNbElements;
out_stream<<std::setw(10)<<aLabel; /* group ID */
out_stream<<std::setw(10)<<0;
out_stream<<std::setw(10)<<0;
out_stream<<std::setw(10)<<0;
out_stream<<std::setw(10)<<0;
out_stream<<std::setw(10)<<0;
out_stream<<std::setw(10)<<0;
out_stream<<std::setw(10)<<aNbRecords<<std::endl;
out_stream<<aRec.GroupName<<std::endl;
int aRow = 0;
int i;
for (i = 0; i < aNbNodes; i++) {
if (aRow == 2) {
out_stream<<std::endl;
aRow = 0;
}
out_stream<<std::setw(10)<<7;
out_stream<<std::setw(10)<<aRec.NodeList[i];
out_stream<<std::setw(10)<<0;
out_stream<<std::setw(10)<<0;
aRow++;
}
for (i = 0; i < aNbElements; i++) {
if (aRow == 2) {
out_stream<<std::endl;
aRow = 0;
}
out_stream<<std::setw(10)<<8;
out_stream<<std::setw(10)<<aRec.ElementList[i];
out_stream<<std::setw(10)<<0;
out_stream<<std::setw(10)<<0;
aRow++;
}
out_stream<<std::endl;
}
/*
* Write end of dataset
*/
out_stream<<" -1\n";
}