00001
00002
00003
00004
00005
00006 #ifndef __FEATUREPARSER_H_02122004_1810__
00007 #define __FEATUREPARSER_H_02122004_1810__
00008
00009 #include <iostream>
00010 #include <string>
00011 #include <map>
00012 #include "MolChemicalFeatureDef.h"
00013
00014 namespace RDKit{
00015
00016
00017 class FeatureFileParseException : public std::exception {
00018 public:
00019 FeatureFileParseException(unsigned int lineNo,std::string line,std::string msg) :
00020 d_lineNo(lineNo), d_line(line), d_msg(msg) {};
00021 unsigned int lineNo () const { return d_lineNo; };
00022 std::string line () const { return d_line; };
00023 std::string message () const { return d_msg; };
00024 ~FeatureFileParseException () throw () {};
00025 private:
00026 unsigned int d_lineNo;
00027 std::string d_line,d_msg;
00028 };
00029
00030 int parseFeatureData(const std::string &defnText,
00031 MolChemicalFeatureDef::CollectionType &featDefs);
00032 int parseFeatureData(std::istream &istream,
00033 MolChemicalFeatureDef::CollectionType &featDefs);
00034 int parseFeatureFile(const std::string &fileName,
00035 MolChemicalFeatureDef::CollectionType &featDefs);
00036
00037
00038 namespace Local {
00039
00040 void parseAtomType(const std::string &inLine,
00041 std::map<std::string,std::string> &atomTypeDefs,
00042 const unsigned int &lineNo);
00043 MolChemicalFeatureDef *parseFeatureDef(std::istream &inStream,
00044 const std::string &inLine,
00045 unsigned int &lineNo,
00046 const std::map<std::string,std::string> &atomTypeDefs);
00047 }
00048 }
00049 #endif