CCCC - C and C++ Code Counter  9999-git
CCCC Development version (post-3.1.4)
cccc_itm.cc
Go to the documentation of this file.
1 // cccc_itm.cc
2 
3 #include "cccc.h"
4 #include <fstream>
5 
6 #include "cccc_itm.h"
7 #include <cstdio>
8 #include <cmath>
9 
10 CCCC_Item::CCCC_Item(const string& s, char c)
11 {
12  buffer=s;
13  delimiter=c;
14  good=true;
15 }
16 
17 CCCC_Item::CCCC_Item(const string& s)
18 {
19  buffer=s;
20  delimiter='@';
21  good=true;
22 }
23 
25 {
26  buffer="";
27  delimiter='@';
28  good=true;
29 }
30 
31 bool CCCC_Item::Insert(const string& s)
32 {
33  buffer+=s;
35 #if 0
36  cerr << buffer << endl;
37 #endif
38  return good;
39 }
40 
41 bool CCCC_Item::Insert(const char* cptr)
42 {
43  string s(cptr);
44  return Insert(s);
45 }
46 
47 bool CCCC_Item::Extract(string& s)
48 {
49  size_t delimiter_position=buffer.find(delimiter);
50  if(delimiter_position!=string::npos)
51  {
52  good=true;
53  s=buffer.substr(0,delimiter_position);
54  string tempBuffer=buffer.substr(delimiter_position+1);
55  buffer=tempBuffer;
56  }
57  else
58  {
59  good=false;
60  }
61  return good;
62 }
63 
64 bool CCCC_Item::Insert(int n)
65 {
66  char numbuf[64];
67  sprintf(numbuf,"%d",n);
68  return Insert(numbuf);
69 }
70 
71 bool CCCC_Item::Extract(int& n)
72 {
73  string numstr;
74  bool retval=Extract(numstr);
75  n=atoi(numstr.c_str());
76  return retval;
77 }
78 
79 bool CCCC_Item::Insert(char c)
80 {
81  char charbuf[2];
82  sprintf(charbuf,"%c",c);
83  return Insert(charbuf);
84 }
85 
86 bool CCCC_Item::Extract(char& c)
87 {
88  string charstr;
89  bool retval=Extract(charstr);
90  if(charstr.size()==1)
91  {
92  c=charstr[0];
93  }
94  return retval;
95 }
96 
97 bool CCCC_Item::Insert(float f)
98 {
99  char numbuf[64];
100  sprintf(numbuf,"%f",f);
101  return Insert(numbuf);
102 }
103 
104 bool CCCC_Item::Extract(float& f)
105 {
106  string numstr;
107  bool retval=Extract(numstr);
108  f=atof(numstr.c_str());
109  return retval;
110 }
111 
112 bool CCCC_Item::ToFile(ofstream& ofstr)
113 {
114  ofstr << buffer << endl;
115  good=ofstr.good();
116  return good;
117 }
118 
119 bool CCCC_Item::FromFile(ifstream& ifstr)
120 {
121  good=false;
122  char line_buffer[1024];
123  ifstr.getline(line_buffer,1023);
124  buffer=line_buffer;
125  if(ifstr.good() && buffer.size()>0 && buffer.size()<1023)
126  {
127  delimiter=buffer[buffer.size()-1];
128  good=true;
129 #if 0
130  cerr << "Delimiter is " << delimiter << endl;
131 #endif
132  }
133  return good;
134 }
135 
136 
137 
138 
string buffer
Definition: cccc_itm.h:19
bool Insert(const string &s)
Definition: cccc_itm.cc:31
bool Extract(string &s)
Definition: cccc_itm.cc:47
bool FromFile(ifstream &ifstr)
Definition: cccc_itm.cc:119
CCCC_Item()
Definition: cccc_itm.cc:24
bool good
Definition: cccc_itm.h:20
char delimiter
Definition: cccc_itm.h:18
bool ToFile(ofstream &ofstr)
Definition: cccc_itm.cc:112