aboutsummaryrefslogtreecommitdiffstats
path: root/lcmtype/laser_t.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lcmtype/laser_t.cpp')
-rw-r--r--lcmtype/laser_t.cpp364
1 files changed, 364 insertions, 0 deletions
diff --git a/lcmtype/laser_t.cpp b/lcmtype/laser_t.cpp
new file mode 100644
index 0000000..23dca66
--- /dev/null
+++ b/lcmtype/laser_t.cpp
@@ -0,0 +1,364 @@
1/** THIS IS AN AUTOMATICALLY GENERATED FILE. DO NOT MODIFY
2 * BY HAND!!
3 *
4 * Generated by lcm-gen
5 **/
6
7#include "laser_t.h"
8#include <string.h>
9
10static int __laser_t_hash_computed;
11static int64_t __laser_t_hash;
12
13int64_t __laser_t_hash_recursive(const __lcm_hash_ptr *p) {
14 const __lcm_hash_ptr *fp;
15 for (fp = p; fp != NULL; fp = fp->parent)
16 if (fp->v == __laser_t_get_hash)
17 return 0;
18
19 const __lcm_hash_ptr cp = {p, (void *)__laser_t_get_hash};
20 (void)cp;
21
22 int64_t hash = 0xf1e8ba118c05af46LL + __int64_t_hash_recursive(&cp) +
23 __int32_t_hash_recursive(&cp) + __float_hash_recursive(&cp) +
24 __int32_t_hash_recursive(&cp) + __float_hash_recursive(&cp) +
25 __float_hash_recursive(&cp) + __float_hash_recursive(&cp);
26
27 return (hash << 1) + ((hash >> 63) & 1);
28}
29
30int64_t __laser_t_get_hash(void) {
31 if (!__laser_t_hash_computed) {
32 __laser_t_hash = __laser_t_hash_recursive(NULL);
33 __laser_t_hash_computed = 1;
34 }
35
36 return __laser_t_hash;
37}
38
39int __laser_t_encode_array(void *buf, int offset, int maxlen, const laser_t *p,
40 int elements) {
41 int pos = 0, thislen, element;
42
43 for (element = 0; element < elements; element++) {
44
45 thislen = __int64_t_encode_array(buf, offset + pos, maxlen - pos,
46 &(p[element].utime), 1);
47 if (thislen < 0)
48 return thislen;
49 else
50 pos += thislen;
51
52 thislen = __int32_t_encode_array(buf, offset + pos, maxlen - pos,
53 &(p[element].nranges), 1);
54 if (thislen < 0)
55 return thislen;
56 else
57 pos += thislen;
58
59 thislen = __float_encode_array(buf, offset + pos, maxlen - pos,
60 p[element].ranges, p[element].nranges);
61 if (thislen < 0)
62 return thislen;
63 else
64 pos += thislen;
65
66 thislen = __int32_t_encode_array(buf, offset + pos, maxlen - pos,
67 &(p[element].nintensities), 1);
68 if (thislen < 0)
69 return thislen;
70 else
71 pos += thislen;
72
73 thislen = __float_encode_array(buf, offset + pos, maxlen - pos,
74 p[element].intensities,
75 p[element].nintensities);
76 if (thislen < 0)
77 return thislen;
78 else
79 pos += thislen;
80
81 thislen = __float_encode_array(buf, offset + pos, maxlen - pos,
82 &(p[element].rad0), 1);
83 if (thislen < 0)
84 return thislen;
85 else
86 pos += thislen;
87
88 thislen = __float_encode_array(buf, offset + pos, maxlen - pos,
89 &(p[element].radstep), 1);
90 if (thislen < 0)
91 return thislen;
92 else
93 pos += thislen;
94 }
95 return pos;
96}
97
98int laser_t_encode(void *buf, int offset, int maxlen, const laser_t *p) {
99 int pos = 0, thislen;
100 int64_t hash = __laser_t_get_hash();
101
102 thislen = __int64_t_encode_array(buf, offset + pos, maxlen - pos, &hash, 1);
103 if (thislen < 0)
104 return thislen;
105 else
106 pos += thislen;
107
108 thislen = __laser_t_encode_array(buf, offset + pos, maxlen - pos, p, 1);
109 if (thislen < 0)
110 return thislen;
111 else
112 pos += thislen;
113
114 return pos;
115}
116
117int __laser_t_encoded_array_size(const laser_t *p, int elements) {
118 int size = 0, element;
119 for (element = 0; element < elements; element++) {
120
121 size += __int64_t_encoded_array_size(&(p[element].utime), 1);
122
123 size += __int32_t_encoded_array_size(&(p[element].nranges), 1);
124
125 size +=
126 __float_encoded_array_size(p[element].ranges, p[element].nranges);
127
128 size += __int32_t_encoded_array_size(&(p[element].nintensities), 1);
129
130 size += __float_encoded_array_size(p[element].intensities,
131 p[element].nintensities);
132
133 size += __float_encoded_array_size(&(p[element].rad0), 1);
134
135 size += __float_encoded_array_size(&(p[element].radstep), 1);
136 }
137 return size;
138}
139
140int laser_t_encoded_size(const laser_t *p) {
141 return 8 + __laser_t_encoded_array_size(p, 1);
142}
143
144int __laser_t_decode_array(const void *buf, int offset, int maxlen, laser_t *p,
145 int elements) {
146 int pos = 0, thislen, element;
147
148 for (element = 0; element < elements; element++) {
149
150 thislen = __int64_t_decode_array(buf, offset + pos, maxlen - pos,
151 &(p[element].utime), 1);
152 if (thislen < 0)
153 return thislen;
154 else
155 pos += thislen;
156
157 thislen = __int32_t_decode_array(buf, offset + pos, maxlen - pos,
158 &(p[element].nranges), 1);
159 if (thislen < 0)
160 return thislen;
161 else
162 pos += thislen;
163
164 p[element].ranges =
165 (float *)lcm_malloc(sizeof(float) * p[element].nranges);
166 thislen = __float_decode_array(buf, offset + pos, maxlen - pos,
167 p[element].ranges, p[element].nranges);
168 if (thislen < 0)
169 return thislen;
170 else
171 pos += thislen;
172
173 thislen = __int32_t_decode_array(buf, offset + pos, maxlen - pos,
174 &(p[element].nintensities), 1);
175 if (thislen < 0)
176 return thislen;
177 else
178 pos += thislen;
179
180 p[element].intensities =
181 (float *)lcm_malloc(sizeof(float) * p[element].nintensities);
182 thislen = __float_decode_array(buf, offset + pos, maxlen - pos,
183 p[element].intensities,
184 p[element].nintensities);
185 if (thislen < 0)
186 return thislen;
187 else
188 pos += thislen;
189
190 thislen = __float_decode_array(buf, offset + pos, maxlen - pos,
191 &(p[element].rad0), 1);
192 if (thislen < 0)
193 return thislen;
194 else
195 pos += thislen;
196
197 thislen = __float_decode_array(buf, offset + pos, maxlen - pos,
198 &(p[element].radstep), 1);
199 if (thislen < 0)
200 return thislen;
201 else
202 pos += thislen;
203 }
204 return pos;
205}
206
207int __laser_t_decode_array_cleanup(laser_t *p, int elements) {
208 int element;
209 for (element = 0; element < elements; element++) {
210
211 __int64_t_decode_array_cleanup(&(p[element].utime), 1);
212
213 __int32_t_decode_array_cleanup(&(p[element].nranges), 1);
214
215 __float_decode_array_cleanup(p[element].ranges, p[element].nranges);
216 if (p[element].ranges)
217 free(p[element].ranges);
218
219 __int32_t_decode_array_cleanup(&(p[element].nintensities), 1);
220
221 __float_decode_array_cleanup(p[element].intensities,
222 p[element].nintensities);
223 if (p[element].intensities)
224 free(p[element].intensities);
225
226 __float_decode_array_cleanup(&(p[element].rad0), 1);
227
228 __float_decode_array_cleanup(&(p[element].radstep), 1);
229 }
230 return 0;
231}
232
233int laser_t_decode(const void *buf, int offset, int maxlen, laser_t *p) {
234 int pos = 0, thislen;
235 int64_t hash = __laser_t_get_hash();
236
237 int64_t this_hash;
238 thislen =
239 __int64_t_decode_array(buf, offset + pos, maxlen - pos, &this_hash, 1);
240 if (thislen < 0)
241 return thislen;
242 else
243 pos += thislen;
244 if (this_hash != hash)
245 return -1;
246
247 thislen = __laser_t_decode_array(buf, offset + pos, maxlen - pos, p, 1);
248 if (thislen < 0)
249 return thislen;
250 else
251 pos += thislen;
252
253 return pos;
254}
255
256int laser_t_decode_cleanup(laser_t *p) {
257 return __laser_t_decode_array_cleanup(p, 1);
258}
259
260int __laser_t_clone_array(const laser_t *p, laser_t *q, int elements) {
261 int element;
262 for (element = 0; element < elements; element++) {
263
264 __int64_t_clone_array(&(p[element].utime), &(q[element].utime), 1);
265
266 __int32_t_clone_array(&(p[element].nranges), &(q[element].nranges), 1);
267
268 q[element].ranges =
269 (float *)lcm_malloc(sizeof(float) * q[element].nranges);
270 __float_clone_array(p[element].ranges, q[element].ranges,
271 p[element].nranges);
272
273 __int32_t_clone_array(&(p[element].nintensities),
274 &(q[element].nintensities), 1);
275
276 q[element].intensities =
277 (float *)lcm_malloc(sizeof(float) * q[element].nintensities);
278 __float_clone_array(p[element].intensities, q[element].intensities,
279 p[element].nintensities);
280
281 __float_clone_array(&(p[element].rad0), &(q[element].rad0), 1);
282
283 __float_clone_array(&(p[element].radstep), &(q[element].radstep), 1);
284 }
285 return 0;
286}
287
288laser_t *laser_t_copy(const laser_t *p) {
289 laser_t *q = (laser_t *)malloc(sizeof(laser_t));
290 __laser_t_clone_array(p, q, 1);
291 return q;
292}
293
294void laser_t_destroy(laser_t *p) {
295 __laser_t_decode_array_cleanup(p, 1);
296 free(p);
297}
298
299int laser_t_publish(lcm_t *lc, const char *channel, const laser_t *p) {
300 int max_data_size = laser_t_encoded_size(p);
301 uint8_t *buf = (uint8_t *)malloc(max_data_size);
302 if (!buf)
303 return -1;
304 int data_size = laser_t_encode(buf, 0, max_data_size, p);
305 if (data_size < 0) {
306 free(buf);
307 return data_size;
308 }
309 int status = lcm_publish(lc, channel, buf, data_size);
310 free(buf);
311 return status;
312}
313
314struct _laser_t_subscription_t {
315 laser_t_handler_t user_handler;
316 void *userdata;
317 lcm_subscription_t *lc_h;
318};
319static void laser_t_handler_stub(const lcm_recv_buf_t *rbuf,
320 const char *channel, void *userdata) {
321 int status;
322 laser_t p;
323 memset(&p, 0, sizeof(laser_t));
324 status = laser_t_decode(rbuf->data, 0, rbuf->data_size, &p);
325 if (status < 0) {
326 fprintf(stderr, "error %d decoding laser_t!!!\n", status);
327 return;
328 }
329
330 laser_t_subscription_t *h = (laser_t_subscription_t *)userdata;
331 h->user_handler(rbuf, channel, &p, h->userdata);
332
333 laser_t_decode_cleanup(&p);
334}
335
336laser_t_subscription_t *laser_t_subscribe(lcm_t *lcm, const char *channel,
337 laser_t_handler_t f, void *userdata) {
338 laser_t_subscription_t *n =
339 (laser_t_subscription_t *)malloc(sizeof(laser_t_subscription_t));
340 n->user_handler = f;
341 n->userdata = userdata;
342 n->lc_h = lcm_subscribe(lcm, channel, laser_t_handler_stub, n);
343 if (n->lc_h == NULL) {
344 fprintf(stderr, "couldn't reg laser_t LCM handler!\n");
345 free(n);
346 return NULL;
347 }
348 return n;
349}
350
351int laser_t_subscription_set_queue_capacity(laser_t_subscription_t *subs,
352 int num_messages) {
353 return lcm_subscription_set_queue_capacity(subs->lc_h, num_messages);
354}
355
356int laser_t_unsubscribe(lcm_t *lcm, laser_t_subscription_t *hid) {
357 int status = lcm_unsubscribe(lcm, hid->lc_h);
358 if (0 != status) {
359 fprintf(stderr, "couldn't unsubscribe laser_t_handler %p!\n", hid);
360 return -1;
361 }
362 free(hid);
363 return 0;
364}