rosserial for Hydro
Fork of rosserial_mbed_lib by
Diff: sensor_msgs/PointField.h
- Revision:
- 3:1cf99502f396
- Parent:
- 0:77afd7560544
diff -r bb6bb835fde4 -r 1cf99502f396 sensor_msgs/PointField.h --- a/sensor_msgs/PointField.h Sun Oct 16 09:35:11 2011 +0000 +++ b/sensor_msgs/PointField.h Sat Nov 12 23:54:45 2011 +0000 @@ -1,10 +1,10 @@ -#ifndef ros_PointField_h -#define ros_PointField_h +#ifndef _ROS_sensor_msgs_PointField_h +#define _ROS_sensor_msgs_PointField_h #include <stdint.h> #include <string.h> #include <stdlib.h> -#include "../ros/msg.h" +#include "ros/msg.h" namespace sensor_msgs { @@ -13,52 +13,37 @@ { public: char * name; - unsigned long offset; - unsigned char datatype; - unsigned long count; - enum { INT8 = 1 }; - enum { UINT8 = 2 }; - enum { INT16 = 3 }; - enum { UINT16 = 4 }; - enum { INT32 = 5 }; - enum { UINT32 = 6 }; - enum { FLOAT32 = 7 }; - enum { FLOAT64 = 8 }; + uint32_t offset; + uint8_t datatype; + uint32_t count; + enum { INT8 = 1 }; + enum { UINT8 = 2 }; + enum { INT16 = 3 }; + enum { UINT16 = 4 }; + enum { INT32 = 5 }; + enum { UINT32 = 6 }; + enum { FLOAT32 = 7 }; + enum { FLOAT64 = 8 }; - virtual int serialize(unsigned char *outbuffer) + virtual int serialize(unsigned char *outbuffer) const { int offset = 0; - long * length_name = (long *)(outbuffer + offset); + uint32_t * length_name = (uint32_t *)(outbuffer + offset); *length_name = strlen( (const char*) this->name); offset += 4; memcpy(outbuffer + offset, this->name, *length_name); offset += *length_name; - union { - unsigned long real; - unsigned long base; - } u_offset; - u_offset.real = this->offset; - *(outbuffer + offset + 0) = (u_offset.base >> (8 * 0)) & 0xFF; - *(outbuffer + offset + 1) = (u_offset.base >> (8 * 1)) & 0xFF; - *(outbuffer + offset + 2) = (u_offset.base >> (8 * 2)) & 0xFF; - *(outbuffer + offset + 3) = (u_offset.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 0) = (this->offset >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->offset >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->offset >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->offset >> (8 * 3)) & 0xFF; offset += sizeof(this->offset); - union { - unsigned char real; - unsigned char base; - } u_datatype; - u_datatype.real = this->datatype; - *(outbuffer + offset + 0) = (u_datatype.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 0) = (this->datatype >> (8 * 0)) & 0xFF; offset += sizeof(this->datatype); - union { - unsigned long real; - unsigned long base; - } u_count; - u_count.real = this->count; - *(outbuffer + offset + 0) = (u_count.base >> (8 * 0)) & 0xFF; - *(outbuffer + offset + 1) = (u_count.base >> (8 * 1)) & 0xFF; - *(outbuffer + offset + 2) = (u_count.base >> (8 * 2)) & 0xFF; - *(outbuffer + offset + 3) = (u_count.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 0) = (this->count >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->count >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->count >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->count >> (8 * 3)) & 0xFF; offset += sizeof(this->count); return offset; } @@ -70,44 +55,27 @@ offset += 4; for(unsigned int k= offset; k< offset+length_name; ++k){ inbuffer[k-1]=inbuffer[k]; - } + } inbuffer[offset+length_name-1]=0; this->name = (char *)(inbuffer + offset-1); offset += length_name; - union { - unsigned long real; - unsigned long base; - } u_offset; - u_offset.base = 0; - u_offset.base |= ((typeof(u_offset.base)) (*(inbuffer + offset + 0))) << (8 * 0); - u_offset.base |= ((typeof(u_offset.base)) (*(inbuffer + offset + 1))) << (8 * 1); - u_offset.base |= ((typeof(u_offset.base)) (*(inbuffer + offset + 2))) << (8 * 2); - u_offset.base |= ((typeof(u_offset.base)) (*(inbuffer + offset + 3))) << (8 * 3); - this->offset = u_offset.real; + this->offset |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->offset |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->offset |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->offset |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); offset += sizeof(this->offset); - union { - unsigned char real; - unsigned char base; - } u_datatype; - u_datatype.base = 0; - u_datatype.base |= ((typeof(u_datatype.base)) (*(inbuffer + offset + 0))) << (8 * 0); - this->datatype = u_datatype.real; + this->datatype |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); offset += sizeof(this->datatype); - union { - unsigned long real; - unsigned long base; - } u_count; - u_count.base = 0; - u_count.base |= ((typeof(u_count.base)) (*(inbuffer + offset + 0))) << (8 * 0); - u_count.base |= ((typeof(u_count.base)) (*(inbuffer + offset + 1))) << (8 * 1); - u_count.base |= ((typeof(u_count.base)) (*(inbuffer + offset + 2))) << (8 * 2); - u_count.base |= ((typeof(u_count.base)) (*(inbuffer + offset + 3))) << (8 * 3); - this->count = u_count.real; + this->count |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->count |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->count |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->count |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); offset += sizeof(this->count); return offset; } - virtual const char * getType(){ return "sensor_msgs/PointField"; }; + virtual const char * getType(){ return "sensor_msgs/PointField"; }; + virtual const char * getMD5(){ return "268eacb2962780ceac86cbd17e328150"; }; };