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
 |