OpenStructure
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
bond_table.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_BOND_TABLE_HH
20 #define OST_BOND_TABLE_HH
21 
22 #include <map>
23 
25 #include <ost/mol/bond_handle.hh>
26 
27 namespace ost { namespace mol {
28 
29 template <typename ATOM>
31  BondTableEntry(const BondHandle& b, const ATOM& atom)
32  : bond(b) {
33  atoms[0]=atom;
34  }
36  ATOM atoms[2];
37  bool IsComplete() const {
38  return atoms[1].IsValid();
39  }
40 };
41 
42 template <typename ATOM>
43 struct BondTable {
45  typedef typename std::map<impl::ConnectorImpl*, EntryType> MapType;
47  void Update(const BondHandle& bond, const ATOM& a) {
48  if(!bond.IsValid()) return;
49  typename MapType::iterator i=bonds.find(bond.Impl().get());
50  if (i!=bonds.end()) {
51  i->second.atoms[1]=a;
52  } else {
53  bonds.insert(std::make_pair(bond.Impl().get(), EntryType(bond, a)));
54  }
55  }
56 
57 };
58 
59 }}
60 #endif