36 #ifndef IFSTREAMASCII_OBJECT_H
37 #define IFSTREAMASCII_OBJECT_H
117 int strTotlLinesRead;
119 int strDataLinesRead;
121 int strBlankLinesRead;
123 int strCommentLinesRead;
125 int strBlkCommentLinesRead;
133 bool strBlkCommntSet;
154 vector<string> strTokens;
161 void getLine(
string& buf);
167 void getline(
string& s) { std::getline(ifs, s); };
173 strDataLinesRead(0), strBlankLinesRead(0),
174 strCommentLinesRead(0), strBlkCommentLinesRead(0),
175 strBytesRead(0), strBlkCommntSet(false),
177 {setDefaultDelimiters(); setCommentDelimiter(
"#"); };
187 void openForRead(
const string& fn);
188 void openForWrite(
const string& fn);
193 bool isOpen() {
return (ifs.is_open() || ofs.is_open()) ?
true :
false; }
202 else if (ofs.is_open())
219 bool read(
string& token);
225 bool readLine(
string& ln);
231 void tokenize(
const string& str, vector<string>& tokens);
241 void setDefaultDelimiters();
253 const string& strgDelim,
254 const string& cmntDelim,
255 const string& begBlk,
256 const string& endBlk)
258 strDelim[0] = wspcDelims;
259 strDelim[1] = strgDelim;
260 strDelim[2] = cmntDelim;
261 strDelim[3] = begBlk;
262 strDelim[4] = endBlk;
269 { strDelim[0] = wsDelims; };
275 {
return strDelim[0]; };
281 { strDelim[1] = strgDelim; };
287 {
return strDelim[1]; };
293 { strDelim[2] = cmntDelim; };
299 {
return strDelim[2]; };
306 const string& endBlk)
308 strDelim[3] = begBlk;
309 strDelim[4] = endBlk;
316 { strDelim[3] = begBlkCmntDelim; };
322 {
return strDelim[3]; };
328 { strDelim[4] = endBlkCmntDelim; };
334 {
return strDelim[4]; };
340 {
return strTotlLinesRead; };
346 {
return strDataLinesRead; };
352 {
return strBlankLinesRead; };
358 {
return strCommentLinesRead; };
364 {
return strBlkCommentLinesRead; };
370 {
return strBytesRead; };
390 bool readString(
string& s);
405 bool readByte(
byte& b);
420 bool readShort(
short& s);
435 bool readInteger(
int& i);
465 bool readFloat(
float& f);
475 bool readType(
double& d) {
return readDouble(d); };
480 bool readDouble(
double& d);
526 inline bool IFStreamAscii::read(
string& token)
532 if (strTokenPtr >= (
int) strTokens.size())
542 if (!readLine(ln))
return false;
546 tokenize(ln, strTokens);
551 token = strTokens[strTokenPtr++];
558 inline bool IFStreamAscii::isEOF()
const
560 return (ifs.eof() && (strTokenPtr >= (int) strTokens.size()));
566 inline string IFStreamAscii::readString()
576 inline bool IFStreamAscii::readString(
string& s)
584 inline bool IFStreamAscii::next()
593 inline byte IFStreamAscii::readByte()
603 inline bool IFStreamAscii::readByte(
byte& b)
609 if (!read(sb))
return false;
613 if (sscanf(sb.c_str(),
"%hhd", &b) != 1)
616 os << endl <<
"ERROR in IFStreamAscii::readByte" << endl
617 <<
" Could Not Scan Byte From Token = " << sb << endl
618 <<
" On File Line: " << strTotlLinesRead <<
" ..." << endl;
630 inline short IFStreamAscii::readShort()
640 inline bool IFStreamAscii::readShort(
short& s)
646 if (!read(ss))
return false;
650 if (sscanf(ss.c_str(),
"%hd", &s) != 1)
653 os << endl <<
"ERROR in IFStreamAscii::readShort" << endl
654 <<
" Could Not Scan Short From Token = " << ss << endl
655 <<
" On File Line: " << strTotlLinesRead <<
" ..." << endl;
667 inline int IFStreamAscii::readInteger()
677 inline bool IFStreamAscii::readInteger(
int& i)
683 if (!read(si))
return false;
687 if (sscanf(si.c_str(),
"%d", &i) != 1)
690 os << endl <<
"ERROR in IFStreamAscii::readInteger" << endl
691 <<
" Could Not Scan Integer From Token = " << si << endl
692 <<
" On File Line: " << strTotlLinesRead <<
" ..." << endl;
720 if (!read(sl))
return false;
727 os << endl <<
"ERROR in IFStreamAscii::readLong" << endl
728 <<
" Could Not Scan Long From Token = " << sl << endl
729 <<
" On File Line: " << strTotlLinesRead <<
" ..." << endl;
741 inline float IFStreamAscii::readFloat()
751 inline bool IFStreamAscii::readFloat(
float& f)
757 if (!read(sf))
return false;
761 if (sscanf(sf.c_str(),
"%f", &f) != 1)
764 os << endl <<
"ERROR in IFStreamAscii::readFloat" << endl
765 <<
" Could Not Scan Float From Token = " << sf << endl
766 <<
" On File Line: " << strTotlLinesRead <<
" ..." << endl;
778 inline double IFStreamAscii::readDouble()
788 inline bool IFStreamAscii::readDouble(
double& d)
794 if (!read(sd))
return false;
798 if (sscanf(sd.c_str(),
"%lf", &d) != 1)
801 os << endl <<
"ERROR in IFStreamAscii::readDouble" << endl
802 <<
" Could Not Scan Double From Token = " << sd << endl
803 <<
" On File Line: " << strTotlLinesRead <<
" ..." << endl;
814 #endif // INTERPOLATOR_OBJECT_H
void writeBool(bool b)
Definition: IFStreamAscii.h:488
bool readType(byte &b)
Definition: IFStreamAscii.h:400
int getDataLinesRead() const
Definition: IFStreamAscii.h:345
void writeTypeNL(bool b)
Definition: IFStreamAscii.h:491
void writeNL()
Definition: IFStreamAscii.h:516
void writeTypeNL(byte b)
Definition: IFStreamAscii.h:495
void writeTypeNL(float f)
Definition: IFStreamAscii.h:511
void writeType(float f)
Definition: IFStreamAscii.h:510
const string & getEndBlockCommentDelimiter() const
Definition: IFStreamAscii.h:333
void writeDoubleNL(double d)
Definition: IFStreamAscii.h:513
const string & getFileName() const
Definition: IFStreamAscii.h:236
void writeTypeNL(int i)
Definition: IFStreamAscii.h:503
int getBlockCommentLinesRead() const
Definition: IFStreamAscii.h:363
void writeTypeNL(short s)
Definition: IFStreamAscii.h:499
void writeLongNL(LONG_INT l)
Definition: IFStreamAscii.h:505
void setWhitespaceDelimiters(const string &wsDelims)
Definition: IFStreamAscii.h:268
int getBlankLinesRead() const
Definition: IFStreamAscii.h:351
void close()
Definition: IFStreamAscii.h:198
const string & getWhitespaceDelimiters() const
Definition: IFStreamAscii.h:274
void writeType(const string &s)
Definition: IFStreamAscii.h:486
bool isOpen()
Definition: IFStreamAscii.h:193
void writeFloatNL(float f)
Definition: IFStreamAscii.h:509
void writeType(double d)
Definition: IFStreamAscii.h:514
int getBytesRead() const
Definition: IFStreamAscii.h:369
const string & getCommentDelimiter() const
Definition: IFStreamAscii.h:298
An exception class for all GeoTess objects.
Definition: GeoTessException.h:65
void writeInt(int i)
Definition: IFStreamAscii.h:500
int getTotalLinesRead() const
Definition: IFStreamAscii.h:339
void setEndBlockCommentDelimiter(const string &endBlkCmntDelim)
Definition: IFStreamAscii.h:327
void writeTypeNL(const string &s)
Definition: IFStreamAscii.h:487
void writeShortNL(short s)
Definition: IFStreamAscii.h:497
void writeShort(short s)
Definition: IFStreamAscii.h:496
#define byte
signed-byte typedef
Definition: CPPGlobals.h:94
Opens ascii file for read and write access.
Definition: IFStreamAscii.h:80
void setCommentDelimiter(const string &cmntDelim)
Definition: IFStreamAscii.h:292
void writeTypeNL(double d)
Definition: IFStreamAscii.h:515
void writeType(byte b)
Definition: IFStreamAscii.h:494
void writeType(bool b)
Definition: IFStreamAscii.h:490
void writeDouble(double d)
Definition: IFStreamAscii.h:512
int getCommentLinesRead() const
Definition: IFStreamAscii.h:357
#define LONG_INT
Definition: CPPGlobals.h:111
void writeLong(LONG_INT l)
Definition: IFStreamAscii.h:504
void writeFloat(float f)
Definition: IFStreamAscii.h:508
const string & getStringDelimiter() const
Definition: IFStreamAscii.h:286
void setStringDelimiter(const string &strgDelim)
Definition: IFStreamAscii.h:280
void setBlockCommentDelimiters(const string &begBlk, const string &endBlk)
Definition: IFStreamAscii.h:305
const string & getBeginBlockCommentDelimiter() const
Definition: IFStreamAscii.h:321
IFStreamAscii()
Definition: IFStreamAscii.h:172
void writeByte(byte b)
Definition: IFStreamAscii.h:492
void writeType(short s)
Definition: IFStreamAscii.h:498
bool readType(double &d)
Definition: IFStreamAscii.h:475
void writeIntNL(int i)
Definition: IFStreamAscii.h:501
bool readType(int &i)
Definition: IFStreamAscii.h:430
void writeType(LONG_INT l)
Definition: IFStreamAscii.h:506
bool readType(float &f)
Definition: IFStreamAscii.h:460
void writeTypeNL(LONG_INT l)
Definition: IFStreamAscii.h:507
bool readType(short &s)
Definition: IFStreamAscii.h:415
void setDelimiters(const string &wspcDelims, const string &strgDelim, const string &cmntDelim, const string &begBlk, const string &endBlk)
Definition: IFStreamAscii.h:252
virtual ~IFStreamAscii()
Definition: IFStreamAscii.h:182
#define GEOTESS_EXP_IMP
Definition: CPPGlobals.h:71
#define LONG_INT_F
Definition: CPPGlobals.h:112
void writeBoolNL(bool b)
Definition: IFStreamAscii.h:489
void writeByteNL(byte b)
Definition: IFStreamAscii.h:493
bool readType(LONG_INT &l)
Definition: IFStreamAscii.h:445
void getline(string &s)
Definition: IFStreamAscii.h:167
void writeString(const string &s)
Definition: IFStreamAscii.h:484
void writeStringNL(const string &s)
Definition: IFStreamAscii.h:485
void setBeginBlockCommentDelimiter(const string &begBlkCmntDelim)
Definition: IFStreamAscii.h:315
void writeType(int i)
Definition: IFStreamAscii.h:502
void flush()
Definition: IFStreamAscii.h:209