catchrobo2022 / Mbed 2 deprecated catchrobo2022_mbed

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers ClassificationResult.h Source File

ClassificationResult.h

00001 #ifndef _ROS_jsk_recognition_msgs_ClassificationResult_h
00002 #define _ROS_jsk_recognition_msgs_ClassificationResult_h
00003 
00004 #include <stdint.h>
00005 #include <string.h>
00006 #include <stdlib.h>
00007 #include "ros/msg.h"
00008 #include "std_msgs/Header.h"
00009 
00010 namespace jsk_recognition_msgs
00011 {
00012 
00013   class ClassificationResult : public ros::Msg
00014   {
00015     public:
00016       typedef std_msgs::Header _header_type;
00017       _header_type header;
00018       uint32_t labels_length;
00019       typedef uint32_t _labels_type;
00020       _labels_type st_labels;
00021       _labels_type * labels;
00022       uint32_t label_names_length;
00023       typedef char* _label_names_type;
00024       _label_names_type st_label_names;
00025       _label_names_type * label_names;
00026       uint32_t label_proba_length;
00027       typedef double _label_proba_type;
00028       _label_proba_type st_label_proba;
00029       _label_proba_type * label_proba;
00030       uint32_t probabilities_length;
00031       typedef double _probabilities_type;
00032       _probabilities_type st_probabilities;
00033       _probabilities_type * probabilities;
00034       typedef const char* _classifier_type;
00035       _classifier_type classifier;
00036       uint32_t target_names_length;
00037       typedef char* _target_names_type;
00038       _target_names_type st_target_names;
00039       _target_names_type * target_names;
00040 
00041     ClassificationResult():
00042       header(),
00043       labels_length(0), labels(NULL),
00044       label_names_length(0), label_names(NULL),
00045       label_proba_length(0), label_proba(NULL),
00046       probabilities_length(0), probabilities(NULL),
00047       classifier(""),
00048       target_names_length(0), target_names(NULL)
00049     {
00050     }
00051 
00052     virtual int serialize(unsigned char *outbuffer) const
00053     {
00054       int offset = 0;
00055       offset += this->header.serialize(outbuffer + offset);
00056       *(outbuffer + offset + 0) = (this->labels_length >> (8 * 0)) & 0xFF;
00057       *(outbuffer + offset + 1) = (this->labels_length >> (8 * 1)) & 0xFF;
00058       *(outbuffer + offset + 2) = (this->labels_length >> (8 * 2)) & 0xFF;
00059       *(outbuffer + offset + 3) = (this->labels_length >> (8 * 3)) & 0xFF;
00060       offset += sizeof(this->labels_length);
00061       for( uint32_t i = 0; i < labels_length; i++){
00062       *(outbuffer + offset + 0) = (this->labels[i] >> (8 * 0)) & 0xFF;
00063       *(outbuffer + offset + 1) = (this->labels[i] >> (8 * 1)) & 0xFF;
00064       *(outbuffer + offset + 2) = (this->labels[i] >> (8 * 2)) & 0xFF;
00065       *(outbuffer + offset + 3) = (this->labels[i] >> (8 * 3)) & 0xFF;
00066       offset += sizeof(this->labels[i]);
00067       }
00068       *(outbuffer + offset + 0) = (this->label_names_length >> (8 * 0)) & 0xFF;
00069       *(outbuffer + offset + 1) = (this->label_names_length >> (8 * 1)) & 0xFF;
00070       *(outbuffer + offset + 2) = (this->label_names_length >> (8 * 2)) & 0xFF;
00071       *(outbuffer + offset + 3) = (this->label_names_length >> (8 * 3)) & 0xFF;
00072       offset += sizeof(this->label_names_length);
00073       for( uint32_t i = 0; i < label_names_length; i++){
00074       uint32_t length_label_namesi = strlen(this->label_names[i]);
00075       varToArr(outbuffer + offset, length_label_namesi);
00076       offset += 4;
00077       memcpy(outbuffer + offset, this->label_names[i], length_label_namesi);
00078       offset += length_label_namesi;
00079       }
00080       *(outbuffer + offset + 0) = (this->label_proba_length >> (8 * 0)) & 0xFF;
00081       *(outbuffer + offset + 1) = (this->label_proba_length >> (8 * 1)) & 0xFF;
00082       *(outbuffer + offset + 2) = (this->label_proba_length >> (8 * 2)) & 0xFF;
00083       *(outbuffer + offset + 3) = (this->label_proba_length >> (8 * 3)) & 0xFF;
00084       offset += sizeof(this->label_proba_length);
00085       for( uint32_t i = 0; i < label_proba_length; i++){
00086       union {
00087         double real;
00088         uint64_t base;
00089       } u_label_probai;
00090       u_label_probai.real = this->label_proba[i];
00091       *(outbuffer + offset + 0) = (u_label_probai.base >> (8 * 0)) & 0xFF;
00092       *(outbuffer + offset + 1) = (u_label_probai.base >> (8 * 1)) & 0xFF;
00093       *(outbuffer + offset + 2) = (u_label_probai.base >> (8 * 2)) & 0xFF;
00094       *(outbuffer + offset + 3) = (u_label_probai.base >> (8 * 3)) & 0xFF;
00095       *(outbuffer + offset + 4) = (u_label_probai.base >> (8 * 4)) & 0xFF;
00096       *(outbuffer + offset + 5) = (u_label_probai.base >> (8 * 5)) & 0xFF;
00097       *(outbuffer + offset + 6) = (u_label_probai.base >> (8 * 6)) & 0xFF;
00098       *(outbuffer + offset + 7) = (u_label_probai.base >> (8 * 7)) & 0xFF;
00099       offset += sizeof(this->label_proba[i]);
00100       }
00101       *(outbuffer + offset + 0) = (this->probabilities_length >> (8 * 0)) & 0xFF;
00102       *(outbuffer + offset + 1) = (this->probabilities_length >> (8 * 1)) & 0xFF;
00103       *(outbuffer + offset + 2) = (this->probabilities_length >> (8 * 2)) & 0xFF;
00104       *(outbuffer + offset + 3) = (this->probabilities_length >> (8 * 3)) & 0xFF;
00105       offset += sizeof(this->probabilities_length);
00106       for( uint32_t i = 0; i < probabilities_length; i++){
00107       union {
00108         double real;
00109         uint64_t base;
00110       } u_probabilitiesi;
00111       u_probabilitiesi.real = this->probabilities[i];
00112       *(outbuffer + offset + 0) = (u_probabilitiesi.base >> (8 * 0)) & 0xFF;
00113       *(outbuffer + offset + 1) = (u_probabilitiesi.base >> (8 * 1)) & 0xFF;
00114       *(outbuffer + offset + 2) = (u_probabilitiesi.base >> (8 * 2)) & 0xFF;
00115       *(outbuffer + offset + 3) = (u_probabilitiesi.base >> (8 * 3)) & 0xFF;
00116       *(outbuffer + offset + 4) = (u_probabilitiesi.base >> (8 * 4)) & 0xFF;
00117       *(outbuffer + offset + 5) = (u_probabilitiesi.base >> (8 * 5)) & 0xFF;
00118       *(outbuffer + offset + 6) = (u_probabilitiesi.base >> (8 * 6)) & 0xFF;
00119       *(outbuffer + offset + 7) = (u_probabilitiesi.base >> (8 * 7)) & 0xFF;
00120       offset += sizeof(this->probabilities[i]);
00121       }
00122       uint32_t length_classifier = strlen(this->classifier);
00123       varToArr(outbuffer + offset, length_classifier);
00124       offset += 4;
00125       memcpy(outbuffer + offset, this->classifier, length_classifier);
00126       offset += length_classifier;
00127       *(outbuffer + offset + 0) = (this->target_names_length >> (8 * 0)) & 0xFF;
00128       *(outbuffer + offset + 1) = (this->target_names_length >> (8 * 1)) & 0xFF;
00129       *(outbuffer + offset + 2) = (this->target_names_length >> (8 * 2)) & 0xFF;
00130       *(outbuffer + offset + 3) = (this->target_names_length >> (8 * 3)) & 0xFF;
00131       offset += sizeof(this->target_names_length);
00132       for( uint32_t i = 0; i < target_names_length; i++){
00133       uint32_t length_target_namesi = strlen(this->target_names[i]);
00134       varToArr(outbuffer + offset, length_target_namesi);
00135       offset += 4;
00136       memcpy(outbuffer + offset, this->target_names[i], length_target_namesi);
00137       offset += length_target_namesi;
00138       }
00139       return offset;
00140     }
00141 
00142     virtual int deserialize(unsigned char *inbuffer)
00143     {
00144       int offset = 0;
00145       offset += this->header.deserialize(inbuffer + offset);
00146       uint32_t labels_lengthT = ((uint32_t) (*(inbuffer + offset))); 
00147       labels_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
00148       labels_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
00149       labels_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
00150       offset += sizeof(this->labels_length);
00151       if(labels_lengthT > labels_length)
00152         this->labels = (uint32_t*)realloc(this->labels, labels_lengthT * sizeof(uint32_t));
00153       labels_length = labels_lengthT;
00154       for( uint32_t i = 0; i < labels_length; i++){
00155       this->st_labels =  ((uint32_t) (*(inbuffer + offset)));
00156       this->st_labels |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
00157       this->st_labels |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
00158       this->st_labels |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
00159       offset += sizeof(this->st_labels);
00160         memcpy( &(this->labels[i]), &(this->st_labels), sizeof(uint32_t));
00161       }
00162       uint32_t label_names_lengthT = ((uint32_t) (*(inbuffer + offset))); 
00163       label_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
00164       label_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
00165       label_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
00166       offset += sizeof(this->label_names_length);
00167       if(label_names_lengthT > label_names_length)
00168         this->label_names = (char**)realloc(this->label_names, label_names_lengthT * sizeof(char*));
00169       label_names_length = label_names_lengthT;
00170       for( uint32_t i = 0; i < label_names_length; i++){
00171       uint32_t length_st_label_names;
00172       arrToVar(length_st_label_names, (inbuffer + offset));
00173       offset += 4;
00174       for(unsigned int k= offset; k< offset+length_st_label_names; ++k){
00175           inbuffer[k-1]=inbuffer[k];
00176       }
00177       inbuffer[offset+length_st_label_names-1]=0;
00178       this->st_label_names = (char *)(inbuffer + offset-1);
00179       offset += length_st_label_names;
00180         memcpy( &(this->label_names[i]), &(this->st_label_names), sizeof(char*));
00181       }
00182       uint32_t label_proba_lengthT = ((uint32_t) (*(inbuffer + offset))); 
00183       label_proba_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
00184       label_proba_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
00185       label_proba_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
00186       offset += sizeof(this->label_proba_length);
00187       if(label_proba_lengthT > label_proba_length)
00188         this->label_proba = (double*)realloc(this->label_proba, label_proba_lengthT * sizeof(double));
00189       label_proba_length = label_proba_lengthT;
00190       for( uint32_t i = 0; i < label_proba_length; i++){
00191       union {
00192         double real;
00193         uint64_t base;
00194       } u_st_label_proba;
00195       u_st_label_proba.base = 0;
00196       u_st_label_proba.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
00197       u_st_label_proba.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
00198       u_st_label_proba.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
00199       u_st_label_proba.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
00200       u_st_label_proba.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
00201       u_st_label_proba.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
00202       u_st_label_proba.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
00203       u_st_label_proba.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
00204       this->st_label_proba = u_st_label_proba.real;
00205       offset += sizeof(this->st_label_proba);
00206         memcpy( &(this->label_proba[i]), &(this->st_label_proba), sizeof(double));
00207       }
00208       uint32_t probabilities_lengthT = ((uint32_t) (*(inbuffer + offset))); 
00209       probabilities_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
00210       probabilities_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
00211       probabilities_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
00212       offset += sizeof(this->probabilities_length);
00213       if(probabilities_lengthT > probabilities_length)
00214         this->probabilities = (double*)realloc(this->probabilities, probabilities_lengthT * sizeof(double));
00215       probabilities_length = probabilities_lengthT;
00216       for( uint32_t i = 0; i < probabilities_length; i++){
00217       union {
00218         double real;
00219         uint64_t base;
00220       } u_st_probabilities;
00221       u_st_probabilities.base = 0;
00222       u_st_probabilities.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
00223       u_st_probabilities.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
00224       u_st_probabilities.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
00225       u_st_probabilities.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
00226       u_st_probabilities.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
00227       u_st_probabilities.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
00228       u_st_probabilities.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
00229       u_st_probabilities.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
00230       this->st_probabilities = u_st_probabilities.real;
00231       offset += sizeof(this->st_probabilities);
00232         memcpy( &(this->probabilities[i]), &(this->st_probabilities), sizeof(double));
00233       }
00234       uint32_t length_classifier;
00235       arrToVar(length_classifier, (inbuffer + offset));
00236       offset += 4;
00237       for(unsigned int k= offset; k< offset+length_classifier; ++k){
00238           inbuffer[k-1]=inbuffer[k];
00239       }
00240       inbuffer[offset+length_classifier-1]=0;
00241       this->classifier = (char *)(inbuffer + offset-1);
00242       offset += length_classifier;
00243       uint32_t target_names_lengthT = ((uint32_t) (*(inbuffer + offset))); 
00244       target_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
00245       target_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
00246       target_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
00247       offset += sizeof(this->target_names_length);
00248       if(target_names_lengthT > target_names_length)
00249         this->target_names = (char**)realloc(this->target_names, target_names_lengthT * sizeof(char*));
00250       target_names_length = target_names_lengthT;
00251       for( uint32_t i = 0; i < target_names_length; i++){
00252       uint32_t length_st_target_names;
00253       arrToVar(length_st_target_names, (inbuffer + offset));
00254       offset += 4;
00255       for(unsigned int k= offset; k< offset+length_st_target_names; ++k){
00256           inbuffer[k-1]=inbuffer[k];
00257       }
00258       inbuffer[offset+length_st_target_names-1]=0;
00259       this->st_target_names = (char *)(inbuffer + offset-1);
00260       offset += length_st_target_names;
00261         memcpy( &(this->target_names[i]), &(this->st_target_names), sizeof(char*));
00262       }
00263      return offset;
00264     }
00265 
00266     virtual const char * getType(){ return "jsk_recognition_msgs/ClassificationResult"; };
00267     virtual const char * getMD5(){ return "cce1f8edabff85a20e9cc013e319497c"; };
00268 
00269   };
00270 
00271 }
00272 #endif