00001 //$$FILE$$ 00002 //$$VERSION$$ 00003 //$$DATE$$ 00004 //$$LICENSE$$ 00005 00006 00014 /* 00015 PURPOSE: DDL 2.1 compliant CIF file lexer ... 00016 */ 00017 00018 00019 #ifndef CIFSCANNERBASE_H 00020 #define CIFSCANNERBASE_H 00021 00022 00023 /* 00024 #if !defined(FLEX_LEXER_INCLUDED) 00025 #undef yyFlexLexer 00026 #define yyFlexLexer CifFlexLexer 00027 #include "FlexLexer.h" 00028 #endif 00029 */ 00030 00031 #include <string> 00032 00033 using namespace std; 00034 00035 #include <fstream> 00036 #include <stdio.h> 00037 #include <string.h> 00038 00039 #ifndef DEBUG 00040 #define DEBUG 0 00041 #endif 00042 00043 00049 class CifScanner // : public CifFlexLexer 00050 { 00051 protected: 00052 00053 string *_tBuf; 00054 int _isText; 00055 int _i, _j, _len; 00056 00057 protected: 00058 ofstream log; 00059 bool _verbose; 00060 void alt_yymore(void); 00061 void OpenLog(const string& logName, bool verboseLevel); 00062 00063 public: 00064 int NDBlineNo; 00065 CifScanner(istream *yyin); 00066 CifScanner(); 00067 int ProcessNone(); 00068 void ProcessWhiteSpace(); 00069 int ProcessData(); 00070 int ProcessLoopScanner(); 00071 void ProcessStop(); 00072 int ProcessDot(); 00073 int ProcessQuestion(); 00074 void ProcessComment(); 00075 int ProcessUnderscore(); 00076 int ProcessBadStrings(); 00077 int ProcessSQuotedStrings(); 00078 int ProcessDQuotedStrings(); 00079 int ProcessEof(); 00080 void Clear(); 00081 void Reset(); 00082 virtual int yylex(); 00083 virtual ~CifScanner() {Reset();}; 00084 }; 00085 00086 #endif /* CIFSCANNERBASE_H */