atomclass.h
Go to the documentation of this file.
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 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines