00001 // This is core/vpdl/vpdt/vpdt_dist_traits.h 00002 #ifndef vpdt_dist_traits_h_ 00003 #define vpdt_dist_traits_h_ 00004 //: 00005 // \file 00006 // \author Matthew Leotta 00007 // \brief specialized template trait classes for properties of a distribution type 00008 // \date March 5, 2009 00009 // 00010 // Provides a short cut to vpdt_field_traits<typename dist::vector>::* 00011 // 00012 // \verbatim 00013 // Modifications 00014 // None 00015 // \endverbatim 00016 00017 #include <vpdl/vpdt/vpdt_field_traits.h> 00018 00019 00020 00021 //: The distribution traits class 00022 // traits are taken from vpdt_field_traits 00023 template <class dist> 00024 struct vpdt_dist_traits 00025 { 00026 //: the data type to represent a point in the field 00027 typedef typename vpdt_field_traits<typename dist::field_type>::field_type field_type; 00028 //: The compile time dimension of the distribution 00029 static const unsigned int dimension = vpdt_field_traits<field_type>::dimension; 00030 //: The type used for scalar operations 00031 typedef typename vpdt_field_traits<field_type>::scalar_type scalar_type; 00032 //: the data type used for vectors (difference between points) 00033 typedef typename vpdt_field_traits<field_type>::vector_type vector_type; 00034 //: the data type used for square matrices 00035 typedef typename vpdt_field_traits<field_type>::matrix_type matrix_type; 00036 00037 }; 00038 00039 00040 template <class dist> 00041 struct vpdt_is_mixture 00042 { 00043 static const bool value = false; 00044 }; 00045 00046 00047 #endif // vpdt_dist_traits_h_