aGrUM  0.21.0
a C++ library for (probabilistic) graphical models
LpInterface_inl.h
Go to the documentation of this file.
1 /**
2  *
3  * Copyright (c) 2005-2021 by Pierre-Henri WUILLEMIN(@LIP6) & Christophe GONZALES(@AMU)
4  * info_at_agrum_dot_org
5  *
6  * This library is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU Lesser General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with this library. If not, see <http://www.gnu.org/licenses/>.
18  *
19  */
20 
21 
22 /**
23  * @file
24  * @brief Class to include at least once this header
25  *
26  * @author Pierre-Henri WUILLEMIN(@LIP6) & Christophe GONZALES(@AMU)
27  */
28 
29 #include <agrum/CN/polytope/LpInterface.h>
30 
31 #ifndef DOXYGEN_SHOULD_SKIP_THIS
32 
33 namespace gum {
34 
35  INLINE Size HashFunc< credal::lp::LpCol >::castToSize(const credal::lp::LpCol& key) {
36  return Size(key.id());
37  }
38 
39  INLINE Size HashFunc< credal::lp::LpCol >::operator()(const credal::lp::LpCol& key) const {
40  return (castToSize(key) * gum::HashFuncConst::gold) & this->hash_mask_;
41  }
42 
43 
44  namespace credal {
45  namespace lp {
46  /**
47  * class LpCol
48  */
49 
50  INLINE unsigned int LpCol::id() const { return _id_; }
51 
52  INLINE bool LpCol::operator<(const LpCol& col) const { return (_id_ < col.id()); }
53 
54  INLINE bool LpCol::operator==(const LpCol& col) const { return (_id_ == col.id()); }
55 
56  INLINE bool LpCol::operator!=(const LpCol& col) const { return (_id_ != col.id()); }
57 
58  INLINE LpCol& LpCol::operator=(const LpCol& col) {
59  _id_ = col._id_;
60 
61  return *this;
62  }
63 
64  INLINE std::ostream& operator<<(std::ostream& out, const LpCol& col) {
65  out << col.toString();
66  return out;
67  }
68 
69  INLINE std::string LpCol::toString() const { return "V" + std::to_string(_id_); }
70 
71 
72  INLINE void swap(HashTable< LpCol, double >*& a, HashTable< LpCol, double >*& b) {
73  HashTable< LpCol, double >* tmp(a);
74  a = b;
75  b = tmp;
76  }
77 
78 
80  out << expr.toString();
81  return out;
82  }
83  } // namespace lp
84 
85  } // namespace credal
86 
87 } /* namespace gum */
88 
89 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
INLINE void emplace(Args &&... args)
Definition: set_tpl.h:643