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 
49 public:
50  AtomBase();
51  AtomBase(const impl::AtomImplPtr& impl);
52 public:
54 
55 
56 
57 
58 
59 
60 
61  operator bool() const { return this->IsValid(); }
64  bool IsValid() const { return Impl().get()!=0; }
70  const String& GetName() const;
71 
81  void SetName(const String& atom_name);
82 
84  const geom::Vec3& GetPos() const;
85 
87  const geom::Vec3& GetOriginalPos() const;
89  geom::Vec3 GetAltPos(const String& alt_group) const;
90  Real GetAltBFactor(const String& alt_group) const;
91  Real GetAltOcc(const String& alt_group) const;
92 
93  std::vector<String> GetAltGroupNames() const;
94 
96 
102  String GetQualifiedName() const;
103 
105  String GetStringProperty(Prop::ID prop_id) const;
106 
108  Real GetFloatProperty(Prop::ID prop_id) const;
109 
111  int GetIntProperty(Prop::ID prop_id) const;
112 
114  unsigned long GetIndex() const;
115 
117  Real GetRadius() const;
118 
120  const String& GetElement() const;
121 
123  bool IsHetAtom() const;
124 
128  Real GetBFactor() const;
129 
130 
131  void SetBFactor(Real factor);
132 
133  void SetOccupancy(Real occ);
134 
135 
136  void SetCharge(Real charge);
137 
138  void SetMass(Real mass);
139 
140  void SetHetAtom(bool het);
141 
142  void SetRadius(Real radius);
143 
144 
145  const geom::Mat3& GetAnisou() const;
146 
147  void SetAnisou(const geom::Mat3& anisou);
151  Real GetMass() const;
152 
154  Real GetCharge() const;
155 
157  Real GetOccupancy() const;
158 
162  const impl::AtomImplPtr& Impl() const;
163 
165  impl::AtomImplPtr& Impl();
166 
167 
168  void SetElement(const String& element);
169 protected:
170 
171  GenericPropContainerImpl* GpImpl();
172 
173  const GenericPropContainerImpl* GpImpl() const;
174 
175  void CheckValidity() const;
177 };
178 
179 DLLEXPORT_OST_MOL std::ostream& operator<<(std::ostream& os,
180  const AtomBase& atom);
181 }} // ns
182 
183 #endif // OST_ATOM_BASE_HH
184