| // FILE: BufFileInput.h |
| // AUTHOR: Alexey Demakov (AVD) demakov@kazbek.ispras.ru |
| // CREATION: 26-JAN-1998 |
| // DESCRIPTION: File Input Stream with lookahead for Scanner |
| // Tested under Win32 with ANTLR 1.33 MR10 and MSVC 5.0 |
| |
| // Change History: |
| // |
| // 28-May-1998 Add virtual destructor to release buffer |
| // Manfred Kogler (km@cast.uni-linz.ac.at) |
| // (1.33MR14) |
| |
| #ifndef BufFileInput_h |
| #define BufFileInput_h |
| |
| #include "pcctscfg.h" |
| |
| #include "pccts_stdio.h" |
| |
| PCCTS_NAMESPACE_STD |
| |
| #include "DLexerBase.h" |
| |
| class DllExportPCCTS BufFileInput : public DLGInputStream |
| { |
| public: |
| // constructor |
| // f - input stream |
| // buf_size - size of buffer (maximal length for string in is_in) |
| |
| BufFileInput(FILE *f, int buf_size = 8 ); |
| |
| virtual ~BufFileInput(); |
| |
| // gets next char from stream |
| |
| virtual int nextChar( void ); |
| |
| // looks in stream and compares next l characters with s |
| // returns the result of comparision |
| |
| int lookahead( char* s ); |
| |
| private: |
| FILE *input; // input stream; |
| int* buf; // buffer |
| int size; // size of buffer |
| int start; // position of the first symbol in buffer |
| int len; // count of characters in buffers |
| }; |
| |
| #endif |
| // end of file BufFileInput.h |