campo-sirio/include/scanner.h

86 lines
2.3 KiB
C
Raw Normal View History

#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:(INTERNAL) Private Member
// @cmember:(INTERNAL) Prossimo teoken
TString _token;
// @cmember:(INTERNAL) Chiave del token (prime due lettere)
TString _key;
// @cmember:(INTERNAL) Buffer utilizzato per la lettura della riga da file
TString _buffer;
// @cmember:(INTERNAL) Indica se il token e' stato ritornato al file
bool _pushed;
// @cmember:(INTERNAL) 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 di un rettangolo
void rectangle(RCT& rect);
// @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
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