00001 // This is core/vpdl/vpdl_multi_cmp_dist.h 00002 #ifndef vpdl_multi_cmp_dist_h_ 00003 #define vpdl_multi_cmp_dist_h_ 00004 //: 00005 // \file 00006 // \author Matthew Leotta 00007 // \date February 18, 2009 00008 // \brief base class for multiple component distributions 00009 // 00010 // \verbatim 00011 // Modifications 00012 // None 00013 // \endverbatim 00014 00015 #include <vpdl/vpdl_distribution.h> 00016 00017 //: The base class for all multiple component probability distributions. 00018 template<class T, unsigned int n=0> 00019 class vpdl_multi_cmp_dist : public vpdl_distribution<T,n> 00020 { 00021 public: 00022 //: the data type used for vectors 00023 typedef typename vpdt_field_default<T,n>::type vector; 00024 //: the data type used for matrices 00025 typedef typename vpdt_field_traits<vector>::matrix_type matrix; 00026 00027 00028 //: Destructor 00029 virtual ~vpdl_multi_cmp_dist() {} 00030 00031 //: The number of components 00032 virtual unsigned int num_components() const = 0; 00033 00034 }; 00035 00036 00037 00038 00039 #endif // vpdl_multi_cmp_dist_h_