lcmtypes_laser_t.cpp
Go to the documentation of this file.
1 /**************************************************************************************************
2  Software License Agreement (BSD License)
3 
4  Copyright (c) 2011-2013, LAR toolkit developers - University of Aveiro - http://lars.mec.ua.pt
5  All rights reserved.
6 
7  Redistribution and use in source and binary forms, with or without modification, are permitted
8  provided that the following conditions are met:
9 
10  *Redistributions of source code must retain the above copyright notice, this list of
11  conditions and the following disclaimer.
12  *Redistributions in binary form must reproduce the above copyright notice, this list of
13  conditions and the following disclaimer in the documentation and/or other materials provided
14  with the distribution.
15  *Neither the name of the University of Aveiro nor the names of its contributors may be used to
16  endorse or promote products derived from this software without specific prior written permission.
17 
18  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
19  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
20  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
21  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
24  IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
25  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 ***************************************************************************************************/
35 #include <string.h>
36 #include "lcmtypes_laser_t.h"
37 
39 static int64_t __lcmtypes_laser_t_hash;
40 
42 {
43  const __lcm_hash_ptr *fp;
44  for (fp = p; fp != NULL; fp = fp->parent)
45  if (fp->v == __lcmtypes_laser_t_get_hash)
46  return 0;
47 
48  const __lcm_hash_ptr cp = { p, (void*)__lcmtypes_laser_t_get_hash };
49  (void) cp;
50 
51  int64_t hash = 0xf1e8ba118c05af46LL
59  ;
60 
61  return (hash<<1) + ((hash>>63)&1);
62 }
63 
65 {
69  }
70 
72 }
73 
74 int __lcmtypes_laser_t_encode_array(void *buf, int offset, int maxlen, const lcmtypes_laser_t *p, int elements)
75 {
76  int pos = 0, thislen, element;
77 
78  for (element = 0; element < elements; element++) {
79 
80  thislen = __int64_t_encode_array(buf, offset + pos, maxlen - pos, &(p[element].utime), 1);
81  if (thislen < 0) return thislen; else pos += thislen;
82 
83  thislen = __int32_t_encode_array(buf, offset + pos, maxlen - pos, &(p[element].nranges), 1);
84  if (thislen < 0) return thislen; else pos += thislen;
85 
86  thislen = __float_encode_array(buf, offset + pos, maxlen - pos, p[element].ranges, p[element].nranges);
87  if (thislen < 0) return thislen; else pos += thislen;
88 
89  thislen = __int32_t_encode_array(buf, offset + pos, maxlen - pos, &(p[element].nintensities), 1);
90  if (thislen < 0) return thislen; else pos += thislen;
91 
92  thislen = __float_encode_array(buf, offset + pos, maxlen - pos, p[element].intensities, p[element].nintensities);
93  if (thislen < 0) return thislen; else pos += thislen;
94 
95  thislen = __float_encode_array(buf, offset + pos, maxlen - pos, &(p[element].rad0), 1);
96  if (thislen < 0) return thislen; else pos += thislen;
97 
98  thislen = __float_encode_array(buf, offset + pos, maxlen - pos, &(p[element].radstep), 1);
99  if (thislen < 0) return thislen; else pos += thislen;
100 
101  }
102  return pos;
103 }
104 
105 int lcmtypes_laser_t_encode(void *buf, int offset, int maxlen, const lcmtypes_laser_t *p)
106 {
107  int pos = 0, thislen;
108  int64_t hash = __lcmtypes_laser_t_get_hash();
109 
110  thislen = __int64_t_encode_array(buf, offset + pos, maxlen - pos, &hash, 1);
111  if (thislen < 0) return thislen; else pos += thislen;
112 
113  thislen = __lcmtypes_laser_t_encode_array(buf, offset + pos, maxlen - pos, p, 1);
114  if (thislen < 0) return thislen; else pos += thislen;
115 
116  return pos;
117 }
118 
120 {
121  int size = 0, element;
122  for (element = 0; element < elements; element++) {
123 
124  size += __int64_t_encoded_array_size(&(p[element].utime), 1);
125 
126  size += __int32_t_encoded_array_size(&(p[element].nranges), 1);
127 
128  size += __float_encoded_array_size(p[element].ranges, p[element].nranges);
129 
130  size += __int32_t_encoded_array_size(&(p[element].nintensities), 1);
131 
132  size += __float_encoded_array_size(p[element].intensities, p[element].nintensities);
133 
134  size += __float_encoded_array_size(&(p[element].rad0), 1);
135 
136  size += __float_encoded_array_size(&(p[element].radstep), 1);
137 
138  }
139  return size;
140 }
141 
143 {
144  return 8 + __lcmtypes_laser_t_encoded_array_size(p, 1);
145 }
146 
147 int __lcmtypes_laser_t_decode_array(const void *buf, int offset, int maxlen, lcmtypes_laser_t *p, int elements)
148 {
149  int pos = 0, thislen, element;
150 
151  for (element = 0; element < elements; element++) {
152 
153  thislen = __int64_t_decode_array(buf, offset + pos, maxlen - pos, &(p[element].utime), 1);
154  if (thislen < 0) return thislen; else pos += thislen;
155 
156  thislen = __int32_t_decode_array(buf, offset + pos, maxlen - pos, &(p[element].nranges), 1);
157  if (thislen < 0) return thislen; else pos += thislen;
158 
159  p[element].ranges = (float*) lcm_malloc(sizeof(float) * p[element].nranges);
160  thislen = __float_decode_array(buf, offset + pos, maxlen - pos, p[element].ranges, p[element].nranges);
161  if (thislen < 0) return thislen; else pos += thislen;
162 
163  thislen = __int32_t_decode_array(buf, offset + pos, maxlen - pos, &(p[element].nintensities), 1);
164  if (thislen < 0) return thislen; else pos += thislen;
165 
166  p[element].intensities = (float*) lcm_malloc(sizeof(float) * p[element].nintensities);
167  thislen = __float_decode_array(buf, offset + pos, maxlen - pos, p[element].intensities, p[element].nintensities);
168  if (thislen < 0) return thislen; else pos += thislen;
169 
170  thislen = __float_decode_array(buf, offset + pos, maxlen - pos, &(p[element].rad0), 1);
171  if (thislen < 0) return thislen; else pos += thislen;
172 
173  thislen = __float_decode_array(buf, offset + pos, maxlen - pos, &(p[element].radstep), 1);
174  if (thislen < 0) return thislen; else pos += thislen;
175 
176  }
177  return pos;
178 }
179 
181 {
182  int element;
183  for (element = 0; element < elements; element++) {
184 
185  __int64_t_decode_array_cleanup(&(p[element].utime), 1);
186 
187  __int32_t_decode_array_cleanup(&(p[element].nranges), 1);
188 
189  __float_decode_array_cleanup(p[element].ranges, p[element].nranges);
190  if (p[element].ranges) free(p[element].ranges);
191 
192  __int32_t_decode_array_cleanup(&(p[element].nintensities), 1);
193 
194  __float_decode_array_cleanup(p[element].intensities, p[element].nintensities);
195  if (p[element].intensities) free(p[element].intensities);
196 
197  __float_decode_array_cleanup(&(p[element].rad0), 1);
198 
199  __float_decode_array_cleanup(&(p[element].radstep), 1);
200 
201  }
202  return 0;
203 }
204 
205 int lcmtypes_laser_t_decode(const void *buf, int offset, int maxlen, lcmtypes_laser_t *p)
206 {
207  int pos = 0, thislen;
208  int64_t hash = __lcmtypes_laser_t_get_hash();
209 
210  int64_t this_hash;
211  thislen = __int64_t_decode_array(buf, offset + pos, maxlen - pos, &this_hash, 1);
212  if (thislen < 0) return thislen; else pos += thislen;
213  if (this_hash != hash) return -1;
214 
215  thislen = __lcmtypes_laser_t_decode_array(buf, offset + pos, maxlen - pos, p, 1);
216  if (thislen < 0) return thislen; else pos += thislen;
217 
218  return pos;
219 }
220 
222 {
224 }
225 
227 {
228  int element;
229  for (element = 0; element < elements; element++) {
230 
231  __int64_t_clone_array(&(p[element].utime), &(q[element].utime), 1);
232 
233  __int32_t_clone_array(&(p[element].nranges), &(q[element].nranges), 1);
234 
235  q[element].ranges = (float*) lcm_malloc(sizeof(float) * q[element].nranges);
236  __float_clone_array(p[element].ranges, q[element].ranges, p[element].nranges);
237 
238  __int32_t_clone_array(&(p[element].nintensities), &(q[element].nintensities), 1);
239 
240  q[element].intensities = (float*) lcm_malloc(sizeof(float) * q[element].nintensities);
241  __float_clone_array(p[element].intensities, q[element].intensities, p[element].nintensities);
242 
243  __float_clone_array(&(p[element].rad0), &(q[element].rad0), 1);
244 
245  __float_clone_array(&(p[element].radstep), &(q[element].radstep), 1);
246 
247  }
248  return 0;
249 }
250 
252 {
253  lcmtypes_laser_t *q = (lcmtypes_laser_t*) malloc(sizeof(lcmtypes_laser_t));
255  return q;
256 }
257 
259 {
261  free(p);
262 }
static void * lcm_malloc(size_t sz)
static int __int32_t_encoded_array_size(const int32_t *p, int elements)
static int __lcmtypes_laser_t_hash_computed
static int __int64_t_decode_array(const void *_buf, int offset, int maxlen, int64_t *p, int elements)
static int __float_decode_array(const void *_buf, int offset, int maxlen, float *p, int elements)
int lcmtypes_laser_t_encoded_size(const lcmtypes_laser_t *p)
static int __float_encoded_array_size(const float *p, int elements)
lcmtypes_laser_t * lcmtypes_laser_t_copy(const lcmtypes_laser_t *p)
static int __int64_t_encode_array(void *_buf, int offset, int maxlen, const int64_t *p, int elements)
int __lcmtypes_laser_t_clone_array(const lcmtypes_laser_t *p, lcmtypes_laser_t *q, int elements)
static int __int32_t_clone_array(const int32_t *p, int32_t *q, int elements)
static int __int32_t_decode_array(const void *_buf, int offset, int maxlen, int32_t *p, int elements)
int lcmtypes_laser_t_encode(void *buf, int offset, int maxlen, const lcmtypes_laser_t *p)
static int64_t __lcmtypes_laser_t_hash
THIS IS AN AUTOMATICALLY GENERATED FILE. DO NOT MODIFY BY HAND!! Generated by LCM.
static int __int64_t_clone_array(const int64_t *p, int64_t *q, int elements)
int __lcmtypes_laser_t_decode_array(const void *buf, int offset, int maxlen, lcmtypes_laser_t *p, int elements)
#define __int32_t_hash_recursive(p)
#define __float_decode_array_cleanup(p, sz)
static int __float_encode_array(void *_buf, int offset, int maxlen, const float *p, int elements)
int64_t __lcmtypes_laser_t_hash_recursive(const __lcm_hash_ptr *p)
int __lcmtypes_laser_t_encoded_array_size(const lcmtypes_laser_t *p, int elements)
int64_t __lcmtypes_laser_t_get_hash(void)
#define __int64_t_hash_recursive(p)
#define __float_hash_recursive(p)
int __lcmtypes_laser_t_encode_array(void *buf, int offset, int maxlen, const lcmtypes_laser_t *p, int elements)
int lcmtypes_laser_t_decode_cleanup(lcmtypes_laser_t *p)
static int __int32_t_encode_array(void *_buf, int offset, int maxlen, const int32_t *p, int elements)
static int __int64_t_encoded_array_size(const int64_t *p, int elements)
int lcmtypes_laser_t_decode(const void *buf, int offset, int maxlen, lcmtypes_laser_t *p)
void lcmtypes_laser_t_destroy(lcmtypes_laser_t *p)
#define __int32_t_decode_array_cleanup(p, sz)
const __lcm_hash_ptr * parent
Definition: lcm_coretypes.h:60
int __lcmtypes_laser_t_decode_array_cleanup(lcmtypes_laser_t *p, int elements)
#define __int64_t_decode_array_cleanup(p, sz)
static int __float_clone_array(const float *p, float *q, int elements)


mit_darpa_logs_player
Author(s): Miguel Oliveira
autogenerated on Mon Mar 2 2015 01:32:15