librcsb-core-wrapper  1.005
CifParserBase.h
Go to the documentation of this file.
1 //$$FILE$$
2 //$$VERSION$$
3 //$$DATE$$
4 //$$LICENSE$$
5 
6 
14 #ifndef CIF_PARSER_BASE_H
15 #define CIF_PARSER_BASE_H
16 
17 
18 #include <iostream>
19 #include <stdio.h>
20 #include <stdlib.h>
21 #include <string.h>
22 #include <rcsb/ISTable.h>
23 #include <rcsb/CifFile.h>
24 #include <rcsb/CifScannerBase.h>
25 #include <rcsb/CifParserInt.h>
26 #include <rcsb/CifFileReadDef.h>
27 
28 
29 #define DATA_TAG "data_"
30 
31 
41 class CifParser : public CifScanner
42 {
43  public:
61  CifParser(CifFile* cifFileP, bool verbose = false);
62 
67  CifParser(CifFile* cifFileP, CifFileReadDef readDef,
68  bool verbose = false);
69 
91  void Parse(const string& fileName, string& diagnostics,
92  const std::string& parseLogFileName = std::string());
93 
111  void ParseString(const string& cifString, string& diagnostics);
112 
126  virtual ~CifParser();
127 
132  void Error(const char*);
133 
138  void Clear();
139 
144  void Reset();
145 
151 
157 
162  int ProcessValueList(void);
163 
169 
174  void ProcessAssignments(void);
175 
180  void ProcessLoop(void);
181 
186  void ProcessItemName(void);
187 
192  void ProcessItemValue(void);
193 
198  void ProcessLsItemValue(void);
199 
205 
211 
217 
218  private:
219  CifFile *_fobj;
220  CifFileReadDef _readDef;
221  ISTable *_tbl;
222  int _afterLoop;
223  int _nTablesInBlock;
224  int _curItemNo, _curValueNo, _numDataBlocks, _fieldListAlloc, _curRow;
225  vector<string> _fieldList;
226  string _pBufValue;
227  string _tBufKeyword;
228  string _curCategoryName;
229  string _curDataBlockName;
230  string _prevDataBlockName;
231  void _ComplexWriteTable();
232 
233  int _err, _warn;
234 };
235 
236 #endif /* CIF_PARSER_BASE_H */
Header file for CifFile class.
Header file for CifFileReadDef class.
Header file for bison interfacing to CifParser class.
Header file for CifScanner class.
Header file for ISTable class.
Public class that represents a CIF file, composed of blocks with tables.
Definition: CifFile.h:48
Private class that represents a CIF parser controller.
Definition: CifFileReadDef.h:39
Public class that respresents a CIF parser.
Definition: CifParserBase.h:42
int ProcessValueList(void)
int ProcessLoopDeclaration(void)
CifParser(CifFile *cifFileP, bool verbose=false)
void Parse(const string &fileName, string &diagnostics, const std::string &parseLogFileName=std::string())
int ProcessItemValuePair(void)
void Clear()
void ProcessAssignments(void)
CifParser(CifFile *cifFileP, CifFileReadDef readDef, bool verbose=false)
void Reset()
void ProcessItemValue(void)
void ProcessLsItemValue(void)
void ProcessLoop(void)
virtual ~CifParser()
int ProcessItemNameList(void)
void ProcessItemName(void)
void ProcessMissingValue(void)
void Error(const char *)
void ProcessUnknownValue(void)
void ParseString(const string &cifString, string &diagnostics)
void ProcessDataBlockName(void)
Private class that represents a CIF scanner.
Definition: CifScannerBase.h:49
Public class that respresents a two-dimensional table of strings.
Definition: ISTable.h:54