Files correlati : ba0 Ricompilazione Demo : [ ] Commento : Aggiunto supporto per interlinea git-svn-id: svn://10.65.10.50/trunk@19736 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			81 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| #ifndef __SCANNER_H
 | |
| #define __SCANNER_H
 | |
| 
 | |
| #ifndef INCSTR_H
 | |
| #include <incstr.h>
 | |
| #endif
 | |
| 
 | |
| #ifndef __STRINGS_H
 | |
| #include <strings.h>
 | |
| #endif
 | |
| 
 | |
| // @doc EXTERNAL
 | |
| 
 | |
| // @class TScanner | Classe per le lettura e la traduzione dei file
 | |
| //
 | |
| // @base private | ifstream
 | |
| class TScanner : public ifstream
 | |
| // @author:(INTERNAL) Guido
 | |
| {
 | |
|   // @access:(INTERNAL) Private Member
 | |
|   
 | |
|   // @cmember:(INTERNAL) Prossimo token
 | |
|   TString _token;
 | |
|   // @cmember:(INTERNAL) Chiave del token (prime due lettere)
 | |
|   TString _key;
 | |
|   // @cmember:(INTERNAL) Buffer utilizzato per la lettura della riga da file
 | |
|   TString _tmp;
 | |
|   // @cmember:(INTERNAL) Indica se il token e' stato ritornato al file
 | |
|   bool _pushed;
 | |
|   // @cmember:(INTERNAL) Numero della linea in corso di lettura
 | |
|   size_t _line;
 | |
| 
 | |
|   // @access Public Member
 | |
| public:
 | |
|   // @cmember Costruttore
 | |
|   TScanner(const char* filename);
 | |
|   // @cmember Distruttore
 | |
|   virtual ~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 di un rettangolo
 | |
|   void rectangle(short& left, short& top, short& right, short& bottom);
 | |
|   // @cmember Ritorna un intero letto dal file
 | |
|   int integer();
 | |
|   // @cmember Ritorna un double 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
 | |
|   virtual bool ok() const
 | |
|   { return good() != 0; }
 | |
| 
 | |
|   // @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
 | |
|   size_t linenum()
 | |
|   { return _line; }
 | |
| };
 | |
| 
 | |
| 
 | |
| #endif // __SCANNER_H
 |