1 // FILE: BufFileInput.h 2 // AUTHOR: Alexey Demakov (AVD) demakov (at) kazbek.ispras.ru 3 // CREATION: 26-JAN-1998 4 // DESCRIPTION: File Input Stream with lookahead for Scanner 5 // Tested under Win32 with ANTLR 1.33 MR10 and MSVC 5.0 6 7 // Change History: 8 // 9 // 28-May-1998 Add virtual destructor to release buffer 10 // Manfred Kogler (km (at) cast.uni-linz.ac.at) 11 // (1.33MR14) 12 13 #ifndef BufFileInput_h 14 #define BufFileInput_h 15 16 #include "pcctscfg.h" 17 18 #include "pccts_stdio.h" 19 20 PCCTS_NAMESPACE_STD 21 22 #include "DLexerBase.h" 23 24 class DllExportPCCTS BufFileInput : public DLGInputStream 25 { 26 public: 27 // constructor 28 // f - input stream 29 // buf_size - size of buffer (maximal length for string in is_in) 30 31 BufFileInput(FILE *f, int buf_size = 8 ); 32 33 virtual ~BufFileInput(); 34 35 // gets next char from stream 36 37 virtual int nextChar( void ); 38 39 // looks in stream and compares next l characters with s 40 // returns the result of comparision 41 42 int lookahead( char* s ); 43 44 private: 45 FILE *input; // input stream; 46 int* buf; // buffer 47 int size; // size of buffer 48 int start; // position of the first symbol in buffer 49 int len; // count of characters in buffers 50 }; 51 52 #endif 53 // end of file BufFileInput.h 54