66 lines
1.5 KiB
C
66 lines
1.5 KiB
C
|
#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
|