1994-09-19 09:50:07 +00:00
|
|
|
#ifndef __SCANNER_H
|
|
|
|
#define __SCANNER_H
|
|
|
|
|
2004-03-12 16:01:27 +00:00
|
|
|
#ifndef INCSTR_H
|
|
|
|
#include <incstr.h>
|
1994-09-19 09:50:07 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef __STRINGS_H
|
|
|
|
#include <strings.h>
|
|
|
|
#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
|
1996-05-08 11:09:13 +00:00
|
|
|
class TScanner : public ifstream
|
1995-06-27 10:18:49 +00:00
|
|
|
// @author:(INTERNAL) Guido
|
1994-09-19 09:50:07 +00:00
|
|
|
{
|
1996-02-05 19:00:53 +00:00
|
|
|
// @access:(INTERNAL) Private Member
|
|
|
|
|
1998-05-04 08:07:27 +00:00
|
|
|
// @cmember:(INTERNAL) Prossimo token
|
1995-06-27 10:18:49 +00:00
|
|
|
TString _token;
|
1996-02-05 19:00:53 +00:00
|
|
|
// @cmember:(INTERNAL) Chiave del token (prime due lettere)
|
1995-06-27 10:18:49 +00:00
|
|
|
TString _key;
|
1998-02-24 10:37:28 +00:00
|
|
|
// @cmember:(INTERNAL) Buffer utilizzato per la lettura della riga da file
|
|
|
|
TString _tmp;
|
1996-02-05 19:00:53 +00:00
|
|
|
// @cmember:(INTERNAL) Indica se il token e' stato ritornato al file
|
1994-09-19 09:50:07 +00:00
|
|
|
bool _pushed;
|
1996-02-05 19:00:53 +00:00
|
|
|
// @cmember:(INTERNAL) Numero della linea in corso di lettura
|
2009-12-09 11:19:59 +00:00
|
|
|
size_t _line;
|
1994-09-19 09:50:07 +00:00
|
|
|
|
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
|
1998-03-05 13:54:51 +00:00
|
|
|
virtual ~TScanner();
|
1995-06-27 10:18:49 +00:00
|
|
|
// @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('='); }
|
1996-01-12 17:46:11 +00:00
|
|
|
// @cmember Legge le coordinate di un rettangolo
|
1998-01-28 09:09:57 +00:00
|
|
|
void rectangle(short& left, short& top, short& right, short& bottom);
|
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();
|
1996-01-12 17:46:11 +00:00
|
|
|
// @cmember Ritorna un double 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
|
1998-03-05 13:54:51 +00:00
|
|
|
virtual bool ok() const
|
|
|
|
{ return good() != 0; }
|
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
|
2009-12-09 11:19:59 +00:00
|
|
|
size_t linenum()
|
1995-06-27 10:18:49 +00:00
|
|
|
{ return _line; }
|
1994-09-19 09:50:07 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#endif // __SCANNER_H
|