1 /*****************************************************************************
2  * Copyright (c) 2019 FrontISTR Commons
3  * This software is released under the MIT License, see LICENSE.txt
4  *****************************************************************************/
5 /*
6   CFSTRDB_Fixtemp Ver.1.0
7 */
8 
9 #include "CFSTRDB.h"
10 #include "CHECData.h"
11 
12 using namespace std;
13 
CFSTRDB_Fixtemp()14 CFSTRDB_Fixtemp::CFSTRDB_Fixtemp()
15     : CFSTRDataBlock(FSTRDB_FIXTEMP), ItemList() {
16   amp[0] = 0;
17 }
18 
~CFSTRDB_Fixtemp()19 CFSTRDB_Fixtemp::~CFSTRDB_Fixtemp() { Clear(); }
20 
Clear()21 void CFSTRDB_Fixtemp::Clear() {
22   ItemList.clear();
23   amp[0] = 0;
24 }
25 
Write(CHECData * hecd)26 void CFSTRDB_Fixtemp::Write(CHECData *hecd) {
27   if (ItemList.size() == 0) return;
28 
29   if (amp[0] == 0) {
30     hecd->WriteHeader("!FIXTEMP");
31 
32   } else {
33     hecd->WriteHeader("!FIXTEMP", "S", "AMP", amp);
34   }
35 
36   vector<CItem>::iterator iter;
37 
38   for (iter = ItemList.begin(); iter != ItemList.end(); iter++) {
39     hecd->WriteData("SF", iter->ngrp, iter->value);
40   }
41 }
42 
Read(CHECData * hecd,char * header_line)43 bool CFSTRDB_Fixtemp::Read(CHECData *hecd, char *header_line) {
44   int rcode[10];
45   amp[0] = 0;
46 
47   if (!hecd->ParseHeader(header_line, rcode, "S", "AMP", amp)) return false;
48 
49   while (1) {
50     CItem item;
51 
52     if (!hecd->ReadData(rcode, "SF", item.ngrp, &item.value)) break;
53 
54     ItemList.push_back(item);
55   }
56 
57   return true;
58 }
59