Working towards recieving twists
Fork of ros_lib_kinetic by
Embed:
(wiki syntax)
Show/hide line numbers
SolidPrimitive.h
00001 #ifndef _ROS_shape_msgs_SolidPrimitive_h 00002 #define _ROS_shape_msgs_SolidPrimitive_h 00003 00004 #include <stdint.h> 00005 #include <string.h> 00006 #include <stdlib.h> 00007 #include "ros/msg.h" 00008 00009 namespace shape_msgs 00010 { 00011 00012 class SolidPrimitive : public ros::Msg 00013 { 00014 public: 00015 typedef uint8_t _type_type; 00016 _type_type type; 00017 uint32_t dimensions_length; 00018 typedef double _dimensions_type; 00019 _dimensions_type st_dimensions; 00020 _dimensions_type * dimensions; 00021 enum { BOX = 1 }; 00022 enum { SPHERE = 2 }; 00023 enum { CYLINDER = 3 }; 00024 enum { CONE = 4 }; 00025 enum { BOX_X = 0 }; 00026 enum { BOX_Y = 1 }; 00027 enum { BOX_Z = 2 }; 00028 enum { SPHERE_RADIUS = 0 }; 00029 enum { CYLINDER_HEIGHT = 0 }; 00030 enum { CYLINDER_RADIUS = 1 }; 00031 enum { CONE_HEIGHT = 0 }; 00032 enum { CONE_RADIUS = 1 }; 00033 00034 SolidPrimitive(): 00035 type(0), 00036 dimensions_length(0), dimensions(NULL) 00037 { 00038 } 00039 00040 virtual int serialize(unsigned char *outbuffer) const 00041 { 00042 int offset = 0; 00043 *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF; 00044 offset += sizeof(this->type); 00045 *(outbuffer + offset + 0) = (this->dimensions_length >> (8 * 0)) & 0xFF; 00046 *(outbuffer + offset + 1) = (this->dimensions_length >> (8 * 1)) & 0xFF; 00047 *(outbuffer + offset + 2) = (this->dimensions_length >> (8 * 2)) & 0xFF; 00048 *(outbuffer + offset + 3) = (this->dimensions_length >> (8 * 3)) & 0xFF; 00049 offset += sizeof(this->dimensions_length); 00050 for( uint32_t i = 0; i < dimensions_length; i++){ 00051 union { 00052 double real; 00053 uint64_t base; 00054 } u_dimensionsi; 00055 u_dimensionsi.real = this->dimensions[i]; 00056 *(outbuffer + offset + 0) = (u_dimensionsi.base >> (8 * 0)) & 0xFF; 00057 *(outbuffer + offset + 1) = (u_dimensionsi.base >> (8 * 1)) & 0xFF; 00058 *(outbuffer + offset + 2) = (u_dimensionsi.base >> (8 * 2)) & 0xFF; 00059 *(outbuffer + offset + 3) = (u_dimensionsi.base >> (8 * 3)) & 0xFF; 00060 *(outbuffer + offset + 4) = (u_dimensionsi.base >> (8 * 4)) & 0xFF; 00061 *(outbuffer + offset + 5) = (u_dimensionsi.base >> (8 * 5)) & 0xFF; 00062 *(outbuffer + offset + 6) = (u_dimensionsi.base >> (8 * 6)) & 0xFF; 00063 *(outbuffer + offset + 7) = (u_dimensionsi.base >> (8 * 7)) & 0xFF; 00064 offset += sizeof(this->dimensions[i]); 00065 } 00066 return offset; 00067 } 00068 00069 virtual int deserialize(unsigned char *inbuffer) 00070 { 00071 int offset = 0; 00072 this->type = ((uint8_t) (*(inbuffer + offset))); 00073 offset += sizeof(this->type); 00074 uint32_t dimensions_lengthT = ((uint32_t) (*(inbuffer + offset))); 00075 dimensions_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 00076 dimensions_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 00077 dimensions_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 00078 offset += sizeof(this->dimensions_length); 00079 if(dimensions_lengthT > dimensions_length) 00080 this->dimensions = (double*)realloc(this->dimensions, dimensions_lengthT * sizeof(double)); 00081 dimensions_length = dimensions_lengthT; 00082 for( uint32_t i = 0; i < dimensions_length; i++){ 00083 union { 00084 double real; 00085 uint64_t base; 00086 } u_st_dimensions; 00087 u_st_dimensions.base = 0; 00088 u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); 00089 u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); 00090 u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); 00091 u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); 00092 u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); 00093 u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); 00094 u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); 00095 u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); 00096 this->st_dimensions = u_st_dimensions.real; 00097 offset += sizeof(this->st_dimensions); 00098 memcpy( &(this->dimensions[i]), &(this->st_dimensions), sizeof(double)); 00099 } 00100 return offset; 00101 } 00102 00103 const char * getType(){ return "shape_msgs/SolidPrimitive"; }; 00104 const char * getMD5(){ return "d8f8cbc74c5ff283fca29569ccefb45d"; }; 00105 00106 }; 00107 00108 } 00109 #endif
Generated on Tue Jul 12 2022 21:32:17 by 1.7.2