** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: plotfile.cpp,v 1.6 2000/12/27 03:16:02 kevin Exp $
+** $Id: plotfile.cpp,v 1.8 2001/01/02 05:34:57 kevin Exp $
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License (version 2) as
PlotFile::PlotFile (int nCurves, int nRecords)
{
initHeaders ();
- setCurveSize (nCurves, nRecords);
+ setCurveSize (nCurves, nRecords);\r
}
PlotFile::PlotFile ()
{
m_iNumColumns = 0;
m_iNumRecords = 0;
- m_strDate = "";
+ time_t currentTime = time (NULL);\r
+ m_strDate = ctime (¤tTime);\r
m_vecStrDescriptions.clear();\r
m_vecStrEzsetCommands.clear();
}
sys_error (ERR_WARNING, "iStartingCol >= iNumColumns");\r
return false;\r
}\r
- \r
- int iOffset = iStartingCol * m_iNumRecords;\r
+ \r
int iNPoints = (m_iNumColumns - iStartingCol) * m_iNumRecords;\r
std::vector<double> vec;\r
vec.resize (iNPoints);\r
fs.seekg (0);\r
bool bFinishedHeaders = false;\r
\r
+ fs >> m_iNumColumns;\r
+ fs >> m_iNumRecords;\r
+\r
+ if (fs.fail() || m_iNumColumns == 0 || m_iNumRecords == 0)\r
+ return false;\r
+\r
while (! bFinishedHeaders && ! fs.eof() && ! fs.fail()) {\r
char line[1024];\r
fs.getline (line, sizeof(line));\r
- if (strstr (line, "<datapoints>") != NULL)\r
+ int iSP = 0;\r
+ while (line[iSP] == ' ')\r
+ iSP++;\r
+ if (line[iSP] == '\n' || ! line[iSP])\r
+ ;\r
+ else if (line[iSP] == '#') {\r
+ iSP++;\r
+ while (line[iSP] == ' ')\r
+ iSP++;\r
+ if (line[iSP] == '\n' || ! line[iSP])\r
+ ;\r
+ else\r
+ addDescription (&line[iSP]);\r
+ } else if (strstr (&line[iSP], "<datapoints>") != NULL) {\r
bFinishedHeaders = true;\r
+ } else\r
+ addEzsetCommand (&line[iSP]);\r
}\r
return ! fs.fail();
}
fs.seekp (0);
- fs << "<plotfile " << m_iNumColumns << " " << m_iNumRecords << " >\n";\r
-
- int iNEzset = m_vecStrEzsetCommands.size();\r
- if (iNEzset > 0) {\r
- fs << "<ezset>\n";\r
- for (int i = 0; i < iNEzset; i++)\r
+ fs << m_iNumColumns << " " << m_iNumRecords << "\n";\r
+\r
+ int i;
+ for (i = 0; i < m_vecStrEzsetCommands.size(); i++)\r
fs << m_vecStrEzsetCommands[i] << "\n";\r
- fs << "</ezset>\n";\r
- }\r
+ \r
+ for (i = 0; i < m_vecStrDescriptions.size(); i++)\r
+ fs << "# " << m_vecStrDescriptions[i] << "\n";\r
\r
if (! m_strDate.empty())
- fs << "<date>" << m_strDate << "</date>\n";
-
- int iNDesc = m_vecStrDescriptions.size();\r
- if (iNDesc > 0) {\r
- fs << "<description>\n";
- for (int i = 0; i < iNDesc; i++)
- fs << m_vecStrDescriptions[i] << "\n";\r
- fs << "</description>\n";\r
- }
-
+ fs << "# Date: " << m_strDate << "\n";
+
return ! fs.fail();
}
return false;
}
- return ! fs.fail();
-
if (m_iNumColumns == 0 || m_iNumRecords == 0) {
sys_error (ERR_WARNING, "Called PlotFile::columnsRead with 0 columns or records");
return false;
void
PlotFile::printHeaders (std::ostream& os) const
-{
+{\r
+ os << "EZSet Commands\n";\r
+ for (unsigned int iEZ = 0; iEZ < m_vecStrEzsetCommands.size(); iEZ++)\r
+ os << m_vecStrEzsetCommands[iEZ] << "\n";\r
+\r
+ os << "Descriptions\n";\r
+ for (unsigned int iDesc = 0; iDesc < m_vecStrDescriptions.size(); iDesc++)\r
+ os << m_vecStrDescriptions[iDesc] << "\n";
}