1994-09-19 09:50:07 +00:00
|
|
|
#ifndef __SCANNER_H
|
|
|
|
#define __SCANNER_H
|
|
|
|
|
|
|
|
#ifndef __FSTREAM_H
|
|
|
|
#include <fstream.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef __STRINGS_H
|
|
|
|
#include <strings.h>
|
|
|
|
#endif
|
|
|
|
|
1994-11-24 14:01:20 +00:00
|
|
|
#ifndef INCL_XVTH
|
|
|
|
#include <xvt.h>
|
1994-09-19 09:50:07 +00:00
|
|
|
#endif
|
|
|
|
|
1995-06-27 10:18:49 +00:00
|
|
|
// @doc EXTERNAL
|
|
|
|
|
|
|
|
// @class TScanner | Classe per le lettura e la traduzione dei file
|
|
|
|
//
|
|
|
|
// @base private | ifstream
|
1994-09-19 09:50:07 +00:00
|
|
|
class TScanner : private ifstream
|
1995-06-27 10:18:49 +00:00
|
|
|
// @author:(INTERNAL) Guido
|
1994-09-19 09:50:07 +00:00
|
|
|
{
|
1995-06-27 10:18:49 +00:00
|
|
|
// @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
|
1994-09-19 09:50:07 +00:00
|
|
|
bool _pushed;
|
1995-06-27 10:18:49 +00:00
|
|
|
// @cmember Numero della linea in corso di lettura
|
1994-09-19 09:50:07 +00:00
|
|
|
word _line;
|
|
|
|
|
1995-06-27 10:18:49 +00:00
|
|
|
// @access Public Member
|
1994-09-19 09:50:07 +00:00
|
|
|
public:
|
1995-06-27 10:18:49 +00:00
|
|
|
// @cmember Costruttore
|
|
|
|
TScanner(const char* filename);
|
|
|
|
// @cmember Distruttore
|
|
|
|
~TScanner()
|
|
|
|
{}
|
|
|
|
// @cmember Legge il token dal file e lo ritorna
|
1994-09-19 09:50:07 +00:00
|
|
|
const TString& pop();
|
1995-06-27 10:18:49 +00:00
|
|
|
// @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
|
1994-09-19 09:50:07 +00:00
|
|
|
const TString& string();
|
1995-06-27 10:18:49 +00:00
|
|
|
// @cmember Ritorna la linea letta dal file
|
1994-09-19 09:50:07 +00:00
|
|
|
TString& line(char eol = '\n');
|
1995-06-27 10:18:49 +00:00
|
|
|
// @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
|
1994-09-19 09:50:07 +00:00
|
|
|
void rectangle(RCT& rect);
|
1995-06-27 10:18:49 +00:00
|
|
|
// @cmember Ritorna un intero letto dal file
|
1994-09-19 09:50:07 +00:00
|
|
|
int integer();
|
1995-06-27 10:18:49 +00:00
|
|
|
// @cmember Ritorna un float letto dal file
|
1994-09-19 09:50:07 +00:00
|
|
|
double number();
|
1995-06-27 10:18:49 +00:00
|
|
|
// @cmember Ritorna un operando letto dal file
|
1994-09-19 09:50:07 +00:00
|
|
|
const TString& operand();
|
1995-06-27 10:18:49 +00:00
|
|
|
// @cmember Cerca il paragrafo specificato e ci si posiziona sopra
|
1994-09-28 10:36:08 +00:00
|
|
|
bool paragraph(const char* name);
|
1994-09-19 09:50:07 +00:00
|
|
|
|
1995-06-27 10:18:49 +00:00
|
|
|
// @cmember Ritorno TRUE se il file non e' in nessun stato di errore
|
|
|
|
bool ok()
|
|
|
|
{ return good(); }
|
1994-09-19 09:50:07 +00:00
|
|
|
|
1995-06-27 10:18:49 +00:00
|
|
|
// @cmember Mette nel file l'ultima stringa letta o quella specificata
|
1994-09-19 09:50:07 +00:00
|
|
|
void push(const char* tok = NULL);
|
1995-06-27 10:18:49 +00:00
|
|
|
// @cmember Ritorna il token letto
|
|
|
|
const TString& token() const
|
|
|
|
{ return _token; }
|
|
|
|
// @cmember Ritorna il numero di linea corrente
|
|
|
|
word linenum()
|
|
|
|
{ return _line; }
|
1994-09-19 09:50:07 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#endif // __SCANNER_H
|