7 #ifndef CNOID_UTIL_EASYSCANNER_H_INCLUDED
8 #define CNOID_UTIL_EASYSCANNER_H_INCLUDED
13 #include <boost/shared_ptr.hpp>
34 std::string getFullMessage();
38 T_NONE = 0, T_SPACE, T_ALPHABET, T_INTEGER, T_DOUBLE,
T_WORD,
60 SymbolMap::iterator p = symbols->find(symbol);
61 return (p != symbols->end()) ? p->second : 0;
65 void setCommentChar(
char cc);
67 void setLineOriented(
bool on);
68 void setQuoteChar(
char qc);
69 void setWhiteSpaceChar(
char ws);
71 void loadFile(
const std::string& filename);
73 void setText(
const char* text,
int len);
75 void setLineNumberOffset(
int offset);
78 defaultErrorMessage = message;
90 bool readChar(
int chara);
108 return readString0(delimiterChar);
111 bool readString(
const char* str);
114 return readString(str.c_str());
117 bool readQuotedString(
bool allowNoQuotedWord =
false);
119 bool readUnquotedTextBlock();
122 bool readSymbol(
int id);
126 return (*text ==
'\0');
137 return readLF0() ?
true : (*text ==
'\0');
144 bool skipBlankLines();
148 void throwException(
const char* message);
149 void throwException(
const std::string& message);
156 if(!readInt()) throwException(message);
164 if(!readDouble()) throwException(message);
173 throwException(message);
180 if(!readChar(chara)) throwException(message);
187 if(!readWord()) throwException(message);
196 if(!readString()) throwException(message);
201 if(!readQuotedString()) throwException(message);
209 if(!readSymbol()) throwException(message);
216 if(!readLF()) throwException(message);
220 if(!readLFEOF()) throwException(message);
238 bool extractQuotedString();
240 inline void skipToLineEnd();
243 bool readString0(
const int delimiterChar);
248 int lineNumberOffset;
253 std::vector<int> whiteSpaceChars;
CNOID_EXPORT EasyScanner & operator>>(EasyScanner &scanner, double &value)
Definition: EasyScanner.cpp:731
void registerSymbol(int id, const std::string &symbol)
Definition: EasyScanner.h:55
std::string readWordEx(const char *message=0)
Definition: EasyScanner.h:186
bool readWord()
Definition: EasyScanner.h:97
bool readLF()
reading a line feed
Definition: EasyScanner.h:130
Endl endl
Definition: EasyScanner.h:46
void setDefaultErrorMessage(const std::string &message)
Definition: EasyScanner.h:77
void readCharEx(int chara, const char *message=0)
Definition: EasyScanner.h:179
std::pair< std::string, int > SymbolPair
Definition: EasyScanner.h:43
int intValue
Definition: EasyScanner.h:223
char charValue
Definition: EasyScanner.h:226
std::map< std::string, int > SymbolMap
Definition: EasyScanner.h:42
double doubleValue
Definition: EasyScanner.h:224
int readCharEx(const char *message=0)
Definition: EasyScanner.h:171
int symbolValue
Definition: EasyScanner.h:227
void readLFEOFex(const char *message=0)
Definition: EasyScanner.h:219
bool isEOF()
Definition: EasyScanner.h:124
boost::shared_ptr< SymbolMap > SymbolMapPtr
Definition: EasyScanner.h:44
std::string filename
Definition: EasyScanner.h:234
Definition: EasyScanner.h:38
std::string readStringEx(const char *message=0)
Definition: EasyScanner.h:195
std::string defaultErrorMessage
Definition: EasyScanner.h:229
int lineNumber
Definition: EasyScanner.h:230
std::string message
Definition: EasyScanner.h:31
std::string stringValue
Definition: EasyScanner.h:225
int readSymbolEx(const char *message=0)
Definition: EasyScanner.h:208
Definition: EasyScanner.h:25
Definition: EasyScanner.h:29
double readDoubleEx(const char *message=0)
Definition: EasyScanner.h:163
int getSymbolID(const std::string &symbol)
Definition: EasyScanner.h:59
bool readString(const int delimiterChar= ',')
Definition: EasyScanner.h:106
bool readString(const std::string &str)
Definition: EasyScanner.h:113
bool readLFEOF()
Definition: EasyScanner.h:135
Definition: EasyScanner.h:39
std::string readQuotedStringEx(const char *message=0)
Definition: EasyScanner.h:200
boost::shared_ptr< EasyScanner > EasyScannerPtr
Definition: EasyScanner.h:274
#define CNOID_EXPORT
Definition: Util/exportdecl.h:13
std::string filename
Definition: EasyScanner.h:32
TokenType
Definition: EasyScanner.h:37
int readIntEx(const char *message=0)
Definition: EasyScanner.h:155
char * text
Definition: EasyScanner.h:232
Definition: EasyScanner.h:21
void readLFex(const char *message=0)
Definition: EasyScanner.h:215
int lineNumber
Definition: EasyScanner.h:33