00001
00002
00003
00004
00005 #ifndef BALL_MOLMEC_PARAMETER_ATOMTYPES_H
00006 #define BALL_MOLMEC_PARAMETER_ATOMTYPES_H
00007
00008 #ifndef BALL_FORMAT_PARAMETERSECTION_H
00009 # include <BALL/FORMAT/parameterSection.h>
00010 #endif
00011
00012 #ifndef BALL_KERNEL_ATOM_H
00013 # include <BALL/KERNEL/atom.h>
00014 #endif
00015
00016 #define BALL_ATOM_WILDCARD_NAME "*"
00017 #define BALL_ATOM_UNKNOWN_NAME "?"
00018
00019 namespace BALL
00020 {
00021 class ForceFieldParameters;
00022
00028 class BALL_EXPORT AtomTypes
00029 : public ParameterSection
00030 {
00031 public:
00032
00036
00039 AtomTypes() ;
00040
00043 AtomTypes(const AtomTypes& atom_types) ;
00044
00047 virtual ~AtomTypes() ;
00048
00050
00053
00059 virtual bool extractSection(Parameters& parameters,
00060 const String& section_name = "AtomTypes") ;
00061
00064 Atom::Type getType(const String& name) const ;
00065
00068 bool hasType(const String& name) const ;
00069
00072 String getTypeName(Atom::Type type) const ;
00073
00076 Size getNumberOfTypes() const ;
00077
00079
00082
00085 virtual void clear() ;
00086
00090 AtomTypes& operator = (const AtomTypes& atom_types) ;
00091
00093
00096
00099 bool operator == (const AtomTypes& atom_types) const ;
00100
00102
00103 protected:
00104
00105
00106
00107 StringHashMap<Atom::Type> type_map_;
00108
00109
00110
00111 vector<String> names_;
00112 };
00113 }
00114
00115 #endif // BALL_MOLMEC_PARAMETER_ATOMTYPES_H