66 lines
1.5 KiB
C++
Executable File
66 lines
1.5 KiB
C++
Executable File
#ifndef __SCANNER_H
|
|
#define __SCANNER_H
|
|
|
|
#ifndef __FSTREAM_H
|
|
#include <fstream.h>
|
|
#endif
|
|
|
|
#ifndef __STRINGS_H
|
|
#include <strings.h>
|
|
#endif
|
|
|
|
#ifndef XVT_R3_API
|
|
#ifndef XVT_INCL_TYPE
|
|
// @T
|
|
typedef struct s_rct { /* mathematical rectangle */
|
|
short top; /* top coordinate */
|
|
short left; /* left coordinate */
|
|
short bottom; /* bottom coordinate */
|
|
short right; /* right coordinate */
|
|
} RCT;
|
|
#endif
|
|
#else
|
|
#ifndef XVT_INCL_XVTTYPE
|
|
typedef struct s_rct { /* mathematical rectangle */
|
|
short top; /* top coordinate */
|
|
short left; /* left coordinate */
|
|
short bottom; /* bottom coordinate */
|
|
short right; /* right coordinate */
|
|
} RCT;
|
|
#endif
|
|
|
|
#endif
|
|
|
|
// @C
|
|
class TScanner : private ifstream
|
|
{
|
|
// @DPRIV
|
|
TString _token, _key;
|
|
bool _pushed;
|
|
word _line;
|
|
|
|
public:
|
|
// @FPUB
|
|
TScanner(const char* filename);
|
|
const TString& pop();
|
|
const TString& key() const { return _key; }
|
|
const TString& popkey() { pop(); return key(); }
|
|
const TString& string();
|
|
TString& line(char eol = '\n');
|
|
const TString& equal() { return line('='); }
|
|
void rectangle(RCT& rect);
|
|
int integer();
|
|
double number();
|
|
const TString& operand();
|
|
bool paragraph(const char* name);
|
|
|
|
bool ok() { return good(); }
|
|
|
|
void push(const char* tok = NULL);
|
|
const TString& token() const { return _token; }
|
|
word linenum() { return _line; }
|
|
};
|
|
|
|
|
|
#endif // __SCANNER_H
|