aGrUM  0.20.2
a C++ library for (probabilistic) graphical models
discreteVariable_inl.h
Go to the documentation of this file.
1 /**
2  *
3  * Copyright 2005-2020 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 #ifndef DOXYGEN_SHOULD_SKIP_THIS
23 
24 // to ease parsers in IDE
25 # include <agrum/tools/variables/discreteVariable.h>
26 
27 namespace gum {
28  /* =========================================================================*/
29  /* =========================================================================*/
30  /* === GUM_DISCRETE_VARIABLE === */
31  /* =========================================================================*/
32  /* =========================================================================*/
33 
34  // Default constructor
36  const std::string& aDesc) :
37  Variable(aName, aDesc) {
39  }
40 
41  // Copy constructor
43  Variable(aDRV) {
45  }
46 
47  // destructor
50  }
51 
52  // Copy operator
53  INLINE DiscreteVariable&
55  if (&aRV != this) { Variable::operator=(aRV); }
56 
57  return *this;
58  }
59 
60  // equality operator
61  INLINE bool DiscreteVariable::operator==(const DiscreteVariable& aRV) const {
62  return (Variable::operator==(aRV) && (domainSize() == aRV.domainSize()));
63  }
64 
65  // inequality operator
66  INLINE bool DiscreteVariable::operator!=(const DiscreteVariable& aRV) const {
67  return (!operator==(aRV));
68  }
69 
70  // empty() <==> domainSize()<2
71  INLINE bool DiscreteVariable::empty() const { return domainSize() < 2; }
72 
73  // vector of labels
75  std::vector< std::string > v;
76  for (Idx i = 0; i < domainSize(); i++)
77  v.push_back(label(i));
78  return v;
79  }
80 } /* namespace gum */
81 
82 #endif // DOXYGEN_SHOULD_SKIP_THIS
INLINE void emplace(Args &&... args)
Definition: set_tpl.h:669