conditionalpdf.h
Go to the documentation of this file.
1 // $Id$
2 // Copyright (C) 2002 Klaas Gadeyne <first dot last at gmail dot com>
3  /***************************************************************************
4  * This library is free software; you can redistribute it and/or *
5  * modify it under the terms of the GNU General Public *
6  * License as published by the Free Software Foundation; *
7  * version 2 of the License. *
8  * *
9  * As a special exception, you may use this file as part of a free *
10  * software library without restriction. Specifically, if other files *
11  * instantiate templates or use macros or inline functions from this *
12  * file, or you compile this file and link it with other files to *
13  * produce an executable, this file does not by itself cause the *
14  * resulting executable to be covered by the GNU General Public *
15  * License. This exception does not however invalidate any other *
16  * reasons why the executable file might be covered by the GNU General *
17  * Public License. *
18  * *
19  * This library is distributed in the hope that it will be useful, *
20  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
21  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
22  * Lesser General Public License for more details. *
23  * *
24  * You should have received a copy of the GNU General Public *
25  * License along with this library; if not, write to the Free Software *
26  * Foundation, Inc., 59 Temple Place, *
27  * Suite 330, Boston, MA 02111-1307 USA *
28  * *
29  ***************************************************************************/
30 #ifndef __CONDITIONAL_PDF__
31 #define __CONDITIONAL_PDF__
32 
33 #include "pdf.h"
34 #include <vector>
35 #include <cassert>
36 namespace BFL
37 {
38 
40 
49  template <typename Var, typename CondArg> class ConditionalPdf : public Pdf<Var>
50  {
51  public:
53 
58  ConditionalPdf(int dimension=0, unsigned int num_conditional_arguments=0);
59 
60  // Default copy constructor will do
61 
63  virtual ~ConditionalPdf();
64 
66  virtual ConditionalPdf<Var,CondArg>* Clone() const;
67 
69 
71  unsigned int NumConditionalArgumentsGet() const;
72 
74 
79  virtual void NumConditionalArgumentsSet(unsigned int numconditionalarguments);
80 
82 
85  const std::vector<CondArg>& ConditionalArgumentsGet() const;
86 
88 
91  virtual void ConditionalArgumentsSet(std::vector<CondArg> ConditionalArguments);
92 
94 
97  const CondArg& ConditionalArgumentGet(unsigned int n_argument) const;
98 
100 
104  virtual void ConditionalArgumentSet(unsigned int n_argument, const CondArg& argument);
105 
106  private:
110  std::vector<CondArg> _ConditionalArguments;
111  };
112 
113 
114  // constructor
115  template<typename Var, typename CondArg>
116  ConditionalPdf<Var,CondArg>::ConditionalPdf(int dim, unsigned int num_args)
117  : Pdf<Var>(dim)
118  , _NumConditionalArguments(num_args)
119  , _ConditionalArguments(num_args)
120  {}
121 
122  // destructor
123  template<typename Var, typename CondArg>
125  {}
126 
127  //Clone function
128  template<typename Var, typename CondArg>
130  {
131  return new ConditionalPdf(*this);
132  }
133 
134  template<typename Var, typename CondArg> inline unsigned int
136  {
137  return _NumConditionalArguments;
138  }
139 
140  template<typename Var, typename CondArg> inline void
141  ConditionalPdf<Var,CondArg>::NumConditionalArgumentsSet(unsigned int numconditionalarguments)
142  {
143  if (numconditionalarguments != _NumConditionalArguments)
144  {
145  _NumConditionalArguments = numconditionalarguments;
146  this->_ConditionalArguments.resize(_NumConditionalArguments);
147  }
148  }
149 
150 
151  template<typename Var, typename CondArg> const std::vector<CondArg>&
153  {
154  return _ConditionalArguments;
155  }
156 
157  template<typename Var, typename CondArg> void
159  {
160  assert (condargs.size() == _NumConditionalArguments);
161  this->_ConditionalArguments = condargs;
162  }
163 
164  template<typename Var, typename CondArg> const CondArg&
166  {
167  assert( n_argument < _NumConditionalArguments );
168  // index of conditional arguments of ConditionalPdf out of range
169  return _ConditionalArguments[n_argument];
170  }
171 
172  template<typename Var, typename CondArg> void
174  const CondArg& argument)
175  {
176  assert ( n_argument < _NumConditionalArguments );
177  // index of conditional arguments of ConditionalPdf out of range
178  this->_ConditionalArguments[n_argument]= argument;
179  }
180 
181 } // End namespace
182 #endif // __CONDITIONAL_PDF__
virtual void NumConditionalArgumentsSet(unsigned int numconditionalarguments)
Set the Number of conditional arguments.
Class PDF: Virtual Base class representing Probability Density Functions.
Definition: pdf.h:53
std::vector< CondArg > _ConditionalArguments
vector containing the values of the conditional args
const CondArg & ConditionalArgumentGet(unsigned int n_argument) const
Get the n-th argument of the list.
virtual void ConditionalArgumentsSet(std::vector< CondArg > ConditionalArguments)
Set the whole list of conditional arguments.
unsigned int _NumConditionalArguments
of conditional arguments (# of args after the | sign)
virtual void ConditionalArgumentSet(unsigned int n_argument, const CondArg &argument)
Set the n-th argument of the list.
virtual ~ConditionalPdf()
Destructor.
const std::vector< CondArg > & ConditionalArgumentsGet() const
Get the whole list of conditional arguments.
Abstract Class representing conditional Pdfs P(x | ...)
virtual ConditionalPdf< Var, CondArg > * Clone() const
Clone function.
unsigned int NumConditionalArgumentsGet() const
Get the Number of conditional arguments.
ConditionalPdf(int dimension=0, unsigned int num_conditional_arguments=0)
Constructor.


bfl
Author(s): Klaas Gadeyne, Wim Meeussen, Tinne Delaet and many others. See web page for a full contributor list. ROS package maintained by Wim Meeussen.
autogenerated on Mon Feb 28 2022 21:56:33