85 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.3 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 INCL_XVTH
 | 
						|
#include <xvt.h>
 | 
						|
#endif
 | 
						|
 | 
						|
// @doc EXTERNAL
 | 
						|
 | 
						|
// @class TScanner | Classe per le lettura e la traduzione dei file
 | 
						|
//
 | 
						|
// @base private | ifstream
 | 
						|
class TScanner : private ifstream
 | 
						|
// @author:(INTERNAL) Guido
 | 
						|
{
 | 
						|
  // @access Private Member
 | 
						|
  // @cmember Prossimo teoken
 | 
						|
  TString _token;
 | 
						|
  // @cmember Chiave del token (prime due lettere)
 | 
						|
  TString _key;
 | 
						|
  // @cmember Buffer utilizzato per la lettura della riga da file
 | 
						|
  TString _buffer;
 | 
						|
  // @cmember Indica se il token e' stato ritornato al file
 | 
						|
  bool _pushed;
 | 
						|
  // @cmember Numero della linea in corso di lettura
 | 
						|
  word _line;
 | 
						|
 | 
						|
  // @access Public Member
 | 
						|
public:
 | 
						|
  // @cmember Costruttore
 | 
						|
  TScanner(const char* filename);
 | 
						|
  // @cmember Distruttore
 | 
						|
  ~TScanner()
 | 
						|
  {}
 | 
						|
  // @cmember Legge il token dal file e lo ritorna
 | 
						|
  const TString& pop();
 | 
						|
  // @cmember Ritorna la chiave del token attivo
 | 
						|
  const TString& key() const
 | 
						|
  { return _key; }
 | 
						|
  // @cmember Legge il token dal file e ne ritorna la chiave
 | 
						|
  const TString& popkey()
 | 
						|
  { pop(); return key(); }
 | 
						|
  // @cmember Legge una stringa (la stringa deve essere tra apici) dal file
 | 
						|
  const TString& string();
 | 
						|
  // @cmember Ritorna la linea letta dal file
 | 
						|
  TString& line(char eol = '\n');
 | 
						|
  // @cmember Ritorna il contenuto della linea fino al segno di uguale (chiama <mf TScanner::line>)
 | 
						|
  const TString& equal()
 | 
						|
  { return line('='); }
 | 
						|
  // @cmember Legge le coordinate del campo dal file e ne setta le dimensioni
 | 
						|
  void rectangle(RCT& rect);
 | 
						|
  // @cmember Ritorna un intero letto dal file
 | 
						|
  int integer();
 | 
						|
  // @cmember Ritorna un float letto dal file
 | 
						|
  double number();
 | 
						|
  // @cmember Ritorna un operando letto dal file
 | 
						|
  const TString& operand();
 | 
						|
  // @cmember Cerca il paragrafo specificato e ci si posiziona sopra
 | 
						|
  bool paragraph(const char* name);
 | 
						|
 | 
						|
  // @cmember Ritorno TRUE se il file non e' in nessun stato di errore
 | 
						|
  bool ok()
 | 
						|
  { return good(); }
 | 
						|
 | 
						|
  // @cmember Mette nel file l'ultima stringa letta o quella specificata
 | 
						|
  void push(const char* tok = NULL);
 | 
						|
  // @cmember Ritorna il token letto
 | 
						|
  const TString& token() const
 | 
						|
  { return _token; }
 | 
						|
  // @cmember Ritorna il numero di linea corrente
 | 
						|
  word linenum()
 | 
						|
  { return _line; }
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
#endif // __SCANNER_H
 |