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