00001 /********************************************************************** 00002 Copyright (C) 2007 by Chris Morley 00003 00004 This program is free software; you can redistribute it and/or modify 00005 it under the terms of the GNU General Public License as published by 00006 the Free Software Foundation version 2 of the License. 00007 00008 This program is distributed in the hope that it will be useful, 00009 but WITHOUT ANY WARRANTY; without even the implied warranty of 00010 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00011 GNU General Public License for more details. 00012 ***********************************************************************/ 00013 00014 #ifndef OB_ATOMCLASS_H 00015 #define OB_ATOMCLASS_H 00016 00017 #include <openbabel/babelconfig.h> 00018 00019 #include <vector> 00020 #include <sstream> 00021 #include <openbabel/base.h> 00022 00023 namespace OpenBabel 00024 { 00025 // This macro is used in DLL builds. If it has not 00026 // been set in babelconfig.h, define it as nothing. 00027 #ifndef OBAPI 00028 #define OBAPI 00029 #endif 00030 00040 class OBAPI OBAtomClassData : public OBGenericData 00041 { 00042 protected: 00043 std::map<int,int> _map; //index is atom index; value is class 00044 public: 00045 OBAtomClassData(): OBGenericData("Atom Class", 0x7882){ } 00046 virtual OBGenericData* Clone(OBBase* /*parent*/) const{return new OBAtomClassData(*this);} 00047 00049 void Clear(){ _map.clear(); } 00050 00052 void Add(int indx, int cl) { _map[indx] = cl;} 00053 00055 bool HasClass(int indx)const { return _map.find(indx)!=_map.end(); } 00057 int GetClass(int indx)const 00058 { 00059 std::map<int,int>::const_iterator pos = _map.find(indx); 00060 if(pos!=_map.end()) 00061 return pos->second; 00062 return -9999; 00063 } 00064 00067 std::string GetClassString(int indx) 00068 { 00069 std::stringstream ss; 00070 std::map<int,int>::const_iterator pos = _map.find(indx); 00071 if(pos!=_map.end()) 00072 ss << ':' << pos->second; 00073 return ss.str(); 00074 } 00075 int size(){ return _map.size(); } 00076 00077 }; 00078 } //namespace 00079 00080 #endif // OB_ATOMCLASS_H 00081
This file is part of the documentation for Open Babel, version 2.3.