33 #ifndef _LCM_LIB_INLINE_H
34 #define _LCM_LIB_INLINE_H
67 #define __boolean_hash_recursive __int8_t_hash_recursive
68 #define __boolean_decode_array_cleanup __int8_t_decode_array_cleanup
69 #define __boolean_encoded_array_size __int8_t_encoded_array_size
70 #define __boolean_encode_array __int8_t_encode_array
71 #define __boolean_decode_array __int8_t_decode_array
72 #define __boolean_clone_array __int8_t_clone_array
73 #define boolean_encoded_size int8_t_encoded_size
78 #define __byte_hash_recursive(p) 0
79 #define __byte_decode_array_cleanup(p, sz) {}
80 #define byte_encoded_size(p) ( sizeof(int64_t) + sizeof(uint8_t) )
84 return sizeof(uint8_t) * elements;
87 static inline int __byte_encode_array(
void *_buf,
int offset,
int maxlen,
const uint8_t *p,
int elements)
89 if (maxlen < elements)
92 uint8_t *buf = (uint8_t*) _buf;
93 memcpy(&buf[offset], p, elements);
98 static inline int __byte_decode_array(
const void *_buf,
int offset,
int maxlen, uint8_t *p,
int elements)
100 if (maxlen < elements)
103 uint8_t *buf = (uint8_t*) _buf;
104 memcpy(p, &buf[offset], elements);
111 memcpy(q, p, elements *
sizeof(uint8_t));
117 #define __int8_t_hash_recursive(p) 0
118 #define __int8_t_decode_array_cleanup(p, sz) {}
119 #define int8_t_encoded_size(p) ( sizeof(int64_t) + sizeof(int8_t) )
123 return sizeof(int8_t) * elements;
128 if (maxlen < elements)
131 int8_t *buf = (int8_t*) _buf;
132 memcpy(&buf[offset], p, elements);
139 if (maxlen < elements)
142 int8_t *buf = (int8_t*) _buf;
143 memcpy(p, &buf[offset], elements);
150 memcpy(q, p, elements *
sizeof(int8_t));
157 #define __int16_t_hash_recursive(p) 0
158 #define __int16_t_decode_array_cleanup(p, sz) {}
159 #define int16_t_encoded_size(p) ( sizeof(int64_t) + sizeof(int16_t) )
163 return sizeof(int16_t) * elements;
168 int total_size =
sizeof(int16_t) * elements;
169 uint8_t *buf = (uint8_t*) _buf;
173 if (maxlen < total_size)
176 for (element = 0; element < elements; element++) {
177 int16_t v = p[element];
178 buf[pos++] = (v>>8) & 0xff;
179 buf[pos++] = (v & 0xff);
187 int total_size =
sizeof(int16_t) * elements;
188 uint8_t *buf = (uint8_t*) _buf;
192 if (maxlen < total_size)
195 for (element = 0; element < elements; element++) {
196 p[element] = (buf[pos]<<8) + buf[pos+1];
205 memcpy(q, p, elements *
sizeof(int16_t));
212 #define __int32_t_hash_recursive(p) 0
213 #define __int32_t_decode_array_cleanup(p, sz) {}
214 #define int32_t_encoded_size(p) ( sizeof(int64_t) + sizeof(int32_t) )
218 return sizeof(int32_t) * elements;
223 int total_size =
sizeof(int32_t) * elements;
224 uint8_t *buf = (uint8_t*) _buf;
228 if (maxlen < total_size)
231 for (element = 0; element < elements; element++) {
232 int32_t v = p[element];
233 buf[pos++] = (v>>24)&0xff;
234 buf[pos++] = (v>>16)&0xff;
235 buf[pos++] = (v>>8)&0xff;
236 buf[pos++] = (v & 0xff);
244 int total_size =
sizeof(int32_t) * elements;
245 uint8_t *buf = (uint8_t*) _buf;
249 if (maxlen < total_size)
252 for (element = 0; element < elements; element++) {
253 p[element] = (buf[pos+0]<<24) + (buf[pos+1]<<16) + (buf[pos+2]<<8) + buf[pos+3];
262 memcpy(q, p, elements *
sizeof(int32_t));
269 #define __int64_t_hash_recursive(p) 0
270 #define __int64_t_decode_array_cleanup(p, sz) {}
271 #define int64_t_encoded_size(p) ( sizeof(int64_t) + sizeof(int64_t) )
275 return sizeof(int64_t) * elements;
280 int total_size =
sizeof(int64_t) * elements;
281 uint8_t *buf = (uint8_t*) _buf;
285 if (maxlen < total_size)
288 for (element = 0; element < elements; element++) {
289 int64_t v = p[element];
290 buf[pos++] = (v>>56)&0xff;
291 buf[pos++] = (v>>48)&0xff;
292 buf[pos++] = (v>>40)&0xff;
293 buf[pos++] = (v>>32)&0xff;
294 buf[pos++] = (v>>24)&0xff;
295 buf[pos++] = (v>>16)&0xff;
296 buf[pos++] = (v>>8)&0xff;
297 buf[pos++] = (v & 0xff);
305 int total_size =
sizeof(int64_t) * elements;
306 uint8_t *buf = (uint8_t*) _buf;
310 if (maxlen < total_size)
313 for (element = 0; element < elements; element++) {
314 int64_t a = (buf[pos+0]<<24) + (buf[pos+1]<<16) + (buf[pos+2]<<8) + buf[pos+3];
316 int64_t b = (buf[pos+0]<<24) + (buf[pos+1]<<16) + (buf[pos+2]<<8) + buf[pos+3];
318 p[element] = (a<<32) + (b&0xffffffff);
326 memcpy(q, p, elements *
sizeof(int64_t));
333 #define __float_hash_recursive(p) 0
334 #define __float_decode_array_cleanup(p, sz) {}
335 #define float_encoded_size(p) ( sizeof(int64_t) + sizeof(float) )
339 return sizeof(float) * elements;
354 memcpy(q, p, elements *
sizeof(
float));
361 #define __double_hash_recursive(p) 0
362 #define __double_decode_array_cleanup(p, sz) {}
363 #define double_encoded_size(p) ( sizeof(int64_t) + sizeof(double) )
367 return sizeof(double) * elements;
382 memcpy(q, p, elements *
sizeof(
double));
389 #define __string_hash_recursive(p) 0
394 for (element = 0; element < elements; element++)
403 for (element = 0; element < elements; element++)
404 size += 4 + strlen(s[element]) + 1;
416 int pos = 0, thislen;
419 for (element = 0; element < elements; element++) {
420 int length = strlen(p[element]) + 1;
423 if (thislen < 0)
return thislen;
else pos += thislen;
426 if (thislen < 0)
return thislen;
else pos += thislen;
434 int pos = 0, thislen;
437 for (element = 0; element < elements; element++) {
442 if (thislen < 0)
return thislen;
else pos += thislen;
444 p[element] = (
char*) malloc(length);
446 if (thislen < 0)
return thislen;
else pos += thislen;
455 for (element = 0; element < elements; element++) {
457 size_t len = strlen(p[element]) + 1;
458 q[element] = (
char*) malloc (len);
459 memcpy (q[element], p[element], len);
static int __string_clone_array(char *const *p, char **q, int elements)
static void * lcm_malloc(size_t sz)
static int __int16_t_clone_array(const int16_t *p, int16_t *q, int elements)
static int __int32_t_encoded_array_size(const int32_t *p, int elements)
static int __int64_t_decode_array(const void *_buf, int offset, int maxlen, int64_t *p, int elements)
static int __byte_encode_array(void *_buf, int offset, int maxlen, const uint8_t *p, int elements)
static int __int16_t_encode_array(void *_buf, int offset, int maxlen, const int16_t *p, int elements)
static int __string_encoded_size(char *const *s)
static int __int8_t_decode_array(const void *_buf, int offset, int maxlen, int8_t *p, int elements)
static int __float_decode_array(const void *_buf, int offset, int maxlen, float *p, int elements)
static int __float_encoded_array_size(const float *p, int elements)
static int __string_encoded_array_size(char *const *s, int elements)
static int __int8_t_encoded_array_size(const int8_t *p, int elements)
static int __int64_t_encode_array(void *_buf, int offset, int maxlen, const int64_t *p, int elements)
static int __string_decode_array(const void *_buf, int offset, int maxlen, char **p, int elements)
static int __double_encoded_array_size(const double *p, 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)
static int __int64_t_clone_array(const int64_t *p, int64_t *q, int elements)
static int __int16_t_decode_array(const void *_buf, int offset, int maxlen, int16_t *p, int elements)
static int __int8_t_encode_array(void *_buf, int offset, int maxlen, const int8_t *p, int elements)
static int __float_encode_array(void *_buf, int offset, int maxlen, const float *p, int elements)
static int __int32_t_encode_array(void *_buf, int offset, int maxlen, const int32_t *p, int elements)
static int __string_decode_array_cleanup(char **s, int elements)
static int __string_encode_array(void *_buf, int offset, int maxlen, char *const *p, int elements)
static int __byte_encoded_array_size(const uint8_t *p, int elements)
static int __int16_t_encoded_array_size(const int16_t *p, int elements)
static int __double_clone_array(const double *p, double *q, int elements)
static int __int64_t_encoded_array_size(const int64_t *p, int elements)
static int __double_decode_array(const void *_buf, int offset, int maxlen, double *p, int elements)
static int __double_encode_array(void *_buf, int offset, int maxlen, const double *p, int elements)
static int __byte_decode_array(const void *_buf, int offset, int maxlen, uint8_t *p, int elements)
const __lcm_hash_ptr * parent
static int __int8_t_clone_array(const int8_t *p, int8_t *q, int elements)
static int __byte_clone_array(const uint8_t *p, uint8_t *q, int elements)
static int __float_clone_array(const float *p, float *q, int elements)