00001
00002 #ifndef PROBLIB_MESSAGE_PDFIMPL_H
00003 #define PROBLIB_MESSAGE_PDFIMPL_H
00004 #include <string>
00005 #include <vector>
00006 #include <map>
00007 #include <ostream>
00008 #include "ros/serialization.h"
00009 #include "ros/builtin_message_traits.h"
00010 #include "ros/message_operations.h"
00011 #include "ros/time.h"
00012
00013 #include "ros/macros.h"
00014
00015 #include "ros/assert.h"
00016
00017 #include "problib/DimensionDescription.h"
00018
00019 namespace problib
00020 {
00021 template <class ContainerAllocator>
00022 struct PDFImpl_ {
00023 typedef PDFImpl_<ContainerAllocator> Type;
00024
00025 PDFImpl_()
00026 : type(0)
00027 , num_dimensions(0)
00028 , dimensions()
00029 , mean()
00030 , covariance()
00031 , density(0.0)
00032 , probabilities()
00033 , sub_pdf_ptrs()
00034 , domain_size(0)
00035 , values_float()
00036 , values_string()
00037 {
00038 }
00039
00040 PDFImpl_(const ContainerAllocator& _alloc)
00041 : type(0)
00042 , num_dimensions(0)
00043 , dimensions(_alloc)
00044 , mean(_alloc)
00045 , covariance(_alloc)
00046 , density(0.0)
00047 , probabilities(_alloc)
00048 , sub_pdf_ptrs(_alloc)
00049 , domain_size(0)
00050 , values_float(_alloc)
00051 , values_string(_alloc)
00052 {
00053 }
00054
00055 typedef uint8_t _type_type;
00056 uint8_t type;
00057
00058 typedef uint32_t _num_dimensions_type;
00059 uint32_t num_dimensions;
00060
00061 typedef std::vector< ::problib::DimensionDescription_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::problib::DimensionDescription_<ContainerAllocator> >::other > _dimensions_type;
00062 std::vector< ::problib::DimensionDescription_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::problib::DimensionDescription_<ContainerAllocator> >::other > dimensions;
00063
00064 typedef std::vector<double, typename ContainerAllocator::template rebind<double>::other > _mean_type;
00065 std::vector<double, typename ContainerAllocator::template rebind<double>::other > mean;
00066
00067 typedef std::vector<double, typename ContainerAllocator::template rebind<double>::other > _covariance_type;
00068 std::vector<double, typename ContainerAllocator::template rebind<double>::other > covariance;
00069
00070 typedef double _density_type;
00071 double density;
00072
00073 typedef std::vector<double, typename ContainerAllocator::template rebind<double>::other > _probabilities_type;
00074 std::vector<double, typename ContainerAllocator::template rebind<double>::other > probabilities;
00075
00076 typedef std::vector<uint32_t, typename ContainerAllocator::template rebind<uint32_t>::other > _sub_pdf_ptrs_type;
00077 std::vector<uint32_t, typename ContainerAllocator::template rebind<uint32_t>::other > sub_pdf_ptrs;
00078
00079 typedef int32_t _domain_size_type;
00080 int32_t domain_size;
00081
00082 typedef std::vector<double, typename ContainerAllocator::template rebind<double>::other > _values_float_type;
00083 std::vector<double, typename ContainerAllocator::template rebind<double>::other > values_float;
00084
00085 typedef std::vector<std::basic_string<char, std::char_traits<char>, typename ContainerAllocator::template rebind<char>::other > , typename ContainerAllocator::template rebind<std::basic_string<char, std::char_traits<char>, typename ContainerAllocator::template rebind<char>::other > >::other > _values_string_type;
00086 std::vector<std::basic_string<char, std::char_traits<char>, typename ContainerAllocator::template rebind<char>::other > , typename ContainerAllocator::template rebind<std::basic_string<char, std::char_traits<char>, typename ContainerAllocator::template rebind<char>::other > >::other > values_string;
00087
00088 enum { GAUSSIAN = 1 };
00089 enum { UNIFORM = 2 };
00090 enum { DISJUNCTION_STRING = 3 };
00091 enum { DISJUNCTION_FLOAT = 4 };
00092 enum { DISJUNCTION_PDF = 5 };
00093 enum { CONJUNCTION = 6 };
00094
00095 typedef boost::shared_ptr< ::problib::PDFImpl_<ContainerAllocator> > Ptr;
00096 typedef boost::shared_ptr< ::problib::PDFImpl_<ContainerAllocator> const> ConstPtr;
00097 boost::shared_ptr<std::map<std::string, std::string> > __connection_header;
00098 };
00099 typedef ::problib::PDFImpl_<std::allocator<void> > PDFImpl;
00100
00101 typedef boost::shared_ptr< ::problib::PDFImpl> PDFImplPtr;
00102 typedef boost::shared_ptr< ::problib::PDFImpl const> PDFImplConstPtr;
00103
00104
00105 template<typename ContainerAllocator>
00106 std::ostream& operator<<(std::ostream& s, const ::problib::PDFImpl_<ContainerAllocator> & v)
00107 {
00108 ros::message_operations::Printer< ::problib::PDFImpl_<ContainerAllocator> >::stream(s, "", v);
00109 return s;}
00110
00111 }
00112
00113 namespace ros
00114 {
00115 namespace message_traits
00116 {
00117 template<class ContainerAllocator> struct IsMessage< ::problib::PDFImpl_<ContainerAllocator> > : public TrueType {};
00118 template<class ContainerAllocator> struct IsMessage< ::problib::PDFImpl_<ContainerAllocator> const> : public TrueType {};
00119 template<class ContainerAllocator>
00120 struct MD5Sum< ::problib::PDFImpl_<ContainerAllocator> > {
00121 static const char* value()
00122 {
00123 return "fb6528e73eebd5785d5111d28934c039";
00124 }
00125
00126 static const char* value(const ::problib::PDFImpl_<ContainerAllocator> &) { return value(); }
00127 static const uint64_t static_value1 = 0xfb6528e73eebd578ULL;
00128 static const uint64_t static_value2 = 0x5d5111d28934c039ULL;
00129 };
00130
00131 template<class ContainerAllocator>
00132 struct DataType< ::problib::PDFImpl_<ContainerAllocator> > {
00133 static const char* value()
00134 {
00135 return "problib/PDFImpl";
00136 }
00137
00138 static const char* value(const ::problib::PDFImpl_<ContainerAllocator> &) { return value(); }
00139 };
00140
00141 template<class ContainerAllocator>
00142 struct Definition< ::problib::PDFImpl_<ContainerAllocator> > {
00143 static const char* value()
00144 {
00145 return "uint8 GAUSSIAN=1\n\
00146 uint8 UNIFORM=2\n\
00147 uint8 DISJUNCTION_STRING = 3 # PMF\n\
00148 uint8 DISJUNCTION_FLOAT = 4 # PMF\n\
00149 uint8 DISJUNCTION_PDF = 5 # Mixture\n\
00150 uint8 CONJUNCTION = 6\n\
00151 \n\
00152 uint8 type\n\
00153 uint32 num_dimensions\n\
00154 DimensionDescription[] dimensions\n\
00155 \n\
00156 # Gaussian\n\
00157 float64[] mean\n\
00158 float64[] covariance\n\
00159 \n\
00160 # Uniform\n\
00161 float64 density\n\
00162 \n\
00163 # For both mixture and discrete \n\
00164 float64[] probabilities\n\
00165 \n\
00166 # mixture of PFDs (conjunction or disjunction)\n\
00167 uint32[] sub_pdf_ptrs\n\
00168 \n\
00169 # discrete\n\
00170 int32 domain_size\n\
00171 float64[] values_float\n\
00172 string[] values_string\n\
00173 \n\
00174 \n\
00175 ================================================================================\n\
00176 MSG: problib/DimensionDescription\n\
00177 # example: object1.pos_x = [\"object1\", \"pos_x\"]\n\
00178 string[] fields\n\
00179 \n\
00180 ";
00181 }
00182
00183 static const char* value(const ::problib::PDFImpl_<ContainerAllocator> &) { return value(); }
00184 };
00185
00186 }
00187 }
00188
00189 namespace ros
00190 {
00191 namespace serialization
00192 {
00193
00194 template<class ContainerAllocator> struct Serializer< ::problib::PDFImpl_<ContainerAllocator> >
00195 {
00196 template<typename Stream, typename T> inline static void allInOne(Stream& stream, T m)
00197 {
00198 stream.next(m.type);
00199 stream.next(m.num_dimensions);
00200 stream.next(m.dimensions);
00201 stream.next(m.mean);
00202 stream.next(m.covariance);
00203 stream.next(m.density);
00204 stream.next(m.probabilities);
00205 stream.next(m.sub_pdf_ptrs);
00206 stream.next(m.domain_size);
00207 stream.next(m.values_float);
00208 stream.next(m.values_string);
00209 }
00210
00211 ROS_DECLARE_ALLINONE_SERIALIZER;
00212 };
00213 }
00214 }
00215
00216 namespace ros
00217 {
00218 namespace message_operations
00219 {
00220
00221 template<class ContainerAllocator>
00222 struct Printer< ::problib::PDFImpl_<ContainerAllocator> >
00223 {
00224 template<typename Stream> static void stream(Stream& s, const std::string& indent, const ::problib::PDFImpl_<ContainerAllocator> & v)
00225 {
00226 s << indent << "type: ";
00227 Printer<uint8_t>::stream(s, indent + " ", v.type);
00228 s << indent << "num_dimensions: ";
00229 Printer<uint32_t>::stream(s, indent + " ", v.num_dimensions);
00230 s << indent << "dimensions[]" << std::endl;
00231 for (size_t i = 0; i < v.dimensions.size(); ++i)
00232 {
00233 s << indent << " dimensions[" << i << "]: ";
00234 s << std::endl;
00235 s << indent;
00236 Printer< ::problib::DimensionDescription_<ContainerAllocator> >::stream(s, indent + " ", v.dimensions[i]);
00237 }
00238 s << indent << "mean[]" << std::endl;
00239 for (size_t i = 0; i < v.mean.size(); ++i)
00240 {
00241 s << indent << " mean[" << i << "]: ";
00242 Printer<double>::stream(s, indent + " ", v.mean[i]);
00243 }
00244 s << indent << "covariance[]" << std::endl;
00245 for (size_t i = 0; i < v.covariance.size(); ++i)
00246 {
00247 s << indent << " covariance[" << i << "]: ";
00248 Printer<double>::stream(s, indent + " ", v.covariance[i]);
00249 }
00250 s << indent << "density: ";
00251 Printer<double>::stream(s, indent + " ", v.density);
00252 s << indent << "probabilities[]" << std::endl;
00253 for (size_t i = 0; i < v.probabilities.size(); ++i)
00254 {
00255 s << indent << " probabilities[" << i << "]: ";
00256 Printer<double>::stream(s, indent + " ", v.probabilities[i]);
00257 }
00258 s << indent << "sub_pdf_ptrs[]" << std::endl;
00259 for (size_t i = 0; i < v.sub_pdf_ptrs.size(); ++i)
00260 {
00261 s << indent << " sub_pdf_ptrs[" << i << "]: ";
00262 Printer<uint32_t>::stream(s, indent + " ", v.sub_pdf_ptrs[i]);
00263 }
00264 s << indent << "domain_size: ";
00265 Printer<int32_t>::stream(s, indent + " ", v.domain_size);
00266 s << indent << "values_float[]" << std::endl;
00267 for (size_t i = 0; i < v.values_float.size(); ++i)
00268 {
00269 s << indent << " values_float[" << i << "]: ";
00270 Printer<double>::stream(s, indent + " ", v.values_float[i]);
00271 }
00272 s << indent << "values_string[]" << std::endl;
00273 for (size_t i = 0; i < v.values_string.size(); ++i)
00274 {
00275 s << indent << " values_string[" << i << "]: ";
00276 Printer<std::basic_string<char, std::char_traits<char>, typename ContainerAllocator::template rebind<char>::other > >::stream(s, indent + " ", v.values_string[i]);
00277 }
00278 }
00279 };
00280
00281
00282 }
00283 }
00284
00285 #endif // PROBLIB_MESSAGE_PDFIMPL_H
00286