07f592bd22
git-svn-id: svn://10.65.10.50/branches/R_10_00@23139 c028cbd2-c16b-5b4b-a496-9718f37d4682
77 lines
2.3 KiB
C++
Executable File
77 lines
2.3 KiB
C++
Executable File
#ifndef __SCANNER_H
|
|
#define __SCANNER_H
|
|
|
|
#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
|