OpenStructure
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
atom_base.hh
Go to the documentation of this file.
1 //------------------------------------------------------------------------------
2 // This file is part of the OpenStructure project <www.openstructure.org>
3 //
4 // Copyright (C) 2008-2011 by the OpenStructure authors
5 //
6 // This library is free software; you can redistribute it and/or modify it under
7 // the terms of the GNU Lesser General Public License as published by the Free
8 // Software Foundation; either version 3.0 of the License, or (at your option)
9 // any later version.
10 // This library is distributed in the hope that it will be useful, but WITHOUT
11 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12 // FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
13 // details.
14 //
15 // You should have received a copy of the GNU Lesser General Public License
16 // along with this library; if not, write to the Free Software Foundation, Inc.,
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 //------------------------------------------------------------------------------
19 #ifndef OST_ATOM_BASE_HH
20 #define OST_ATOM_BASE_HH
21 
22 #include <ost/geom/vec3.hh>
23 
24 #include <ost/mol/module_config.hh>
26 #include <ost/generic_property.hh>
27 
28 #include "property_id.hh"
29 
30 namespace ost { namespace mol {
31 
45 public:
46  AtomBase();
47  AtomBase(const impl::AtomImplPtr& impl);
48 public:
50 
51  operator bool() const { return this->IsValid(); }
60  bool IsValid() const { return Impl().get()!=0; }
66  const String& GetName() const;
67 
77  void SetName(const String& atom_name);
78 
80  const geom::Vec3& GetPos() const;
81 
83  const geom::Vec3& GetOriginalPos() const;
85  geom::Vec3 GetAltPos(const String& alt_group) const;
86  Real GetAltBFactor(const String& alt_group) const;
87  Real GetAltOcc(const String& alt_group) const;
88 
89  std::vector<String> GetAltGroupNames() const;
90 
92 
98  String GetQualifiedName() const;
99 
101  String GetStringProperty(Prop::ID prop_id) const;
102 
104  Real GetFloatProperty(Prop::ID prop_id) const;
105 
107  int GetIntProperty(Prop::ID prop_id) const;
108 
110  unsigned long GetIndex() const;
111 
113  Real GetRadius() const;
114 
116  const String& GetElement() const;
117 
119  bool IsHetAtom() const;
120 
124  Real GetBFactor() const;
125 
126 
127  void SetBFactor(Real factor);
128 
129  void SetOccupancy(Real occ);
130 
131 
132  void SetCharge(Real charge);
133 
134  void SetMass(Real mass);
135 
136  void SetHetAtom(bool het);
137 
138  void SetRadius(Real radius);
139 
140  void SetIndex (const unsigned long index);
141 
142  const geom::Mat3& GetAnisou() const;
143 
144  void SetAnisou(const geom::Mat3& anisou);
148  Real GetMass() const;
149 
151  Real GetCharge() const;
152 
154  Real GetOccupancy() const;
155 
159  const impl::AtomImplPtr& Impl() const;
160 
162  impl::AtomImplPtr& Impl();
163 
164 
165  void SetElement(const String& element);
166 protected:
167 
168  GenericPropContainerImpl* GpImpl();
169 
170  const GenericPropContainerImpl* GpImpl() const;
171 
172  void CheckValidity() const;
174 };
175 
176 DLLEXPORT_OST_MOL std::ostream& operator<<(std::ostream& os,
177  const AtomBase& atom);
178 }} // ns
179 
180 #endif // OST_ATOM_BASE_HH
181 
impl::AtomImplPtr impl_
Definition: atom_base.hh:173
std::string String
Definition: base.hh:54
float Real
Definition: base.hh:44
ID
Defined properties.
Definition: property_id.hh:41
DLLEXPORT_OST_MOL std::ostream & operator<<(std::ostream &os, const AtomBase &atom)
base class for AtomHandle and AtomView
Definition: atom_base.hh:44
boost::shared_ptr< AtomImpl > AtomImplPtr
Definition: atom_impl_fw.hh:33
Three dimensional vector class, using Real precision.
Definition: vec3.hh:42
#define DLLEXPORT_OST_MOL
base class for the implementation
bool IsValid() const
check validity of handle
Definition: atom_base.hh:60
base class for the handler classes