00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00036 #include <string.h>
00037 #include "lcmtypes_gps_to_local_t.h"
00038
00039 static int __lcmtypes_gps_to_local_t_hash_computed;
00040 static int64_t __lcmtypes_gps_to_local_t_hash;
00041
00042 int64_t __lcmtypes_gps_to_local_t_hash_recursive(const __lcm_hash_ptr *p)
00043 {
00044 const __lcm_hash_ptr *fp;
00045 for (fp = p; fp != NULL; fp = fp->parent)
00046 if (fp->v == __lcmtypes_gps_to_local_t_get_hash)
00047 return 0;
00048
00049 const __lcm_hash_ptr cp = { p, (void*)__lcmtypes_gps_to_local_t_get_hash };
00050 (void) cp;
00051
00052 int64_t hash = 0xa68613cd43dc764eLL
00053 + __int64_t_hash_recursive(&cp)
00054 + __double_hash_recursive(&cp)
00055 + __double_hash_recursive(&cp)
00056 + __float_hash_recursive(&cp)
00057 ;
00058
00059 return (hash<<1) + ((hash>>63)&1);
00060 }
00061
00062 int64_t __lcmtypes_gps_to_local_t_get_hash(void)
00063 {
00064 if (!__lcmtypes_gps_to_local_t_hash_computed) {
00065 __lcmtypes_gps_to_local_t_hash = __lcmtypes_gps_to_local_t_hash_recursive(NULL);
00066 __lcmtypes_gps_to_local_t_hash_computed = 1;
00067 }
00068
00069 return __lcmtypes_gps_to_local_t_hash;
00070 }
00071
00072 int __lcmtypes_gps_to_local_t_encode_array(void *buf, int offset, int maxlen, const lcmtypes_gps_to_local_t *p, int elements)
00073 {
00074 int pos = 0, thislen, element;
00075
00076 for (element = 0; element < elements; element++) {
00077
00078 thislen = __int64_t_encode_array(buf, offset + pos, maxlen - pos, &(p[element].utime), 1);
00079 if (thislen < 0) return thislen; else pos += thislen;
00080
00081 thislen = __double_encode_array(buf, offset + pos, maxlen - pos, p[element].local, 3);
00082 if (thislen < 0) return thislen; else pos += thislen;
00083
00084 thislen = __double_encode_array(buf, offset + pos, maxlen - pos, p[element].lat_lon_el_theta, 4);
00085 if (thislen < 0) return thislen; else pos += thislen;
00086
00087 { int a;
00088 for (a = 0; a < 4; a++) {
00089 thislen = __float_encode_array(buf, offset + pos, maxlen - pos, p[element].gps_cov[a], 4);
00090 if (thislen < 0) return thislen; else pos += thislen;
00091 }
00092 }
00093
00094 }
00095 return pos;
00096 }
00097
00098 int lcmtypes_gps_to_local_t_encode(void *buf, int offset, int maxlen, const lcmtypes_gps_to_local_t *p)
00099 {
00100 int pos = 0, thislen;
00101 int64_t hash = __lcmtypes_gps_to_local_t_get_hash();
00102
00103 thislen = __int64_t_encode_array(buf, offset + pos, maxlen - pos, &hash, 1);
00104 if (thislen < 0) return thislen; else pos += thislen;
00105
00106 thislen = __lcmtypes_gps_to_local_t_encode_array(buf, offset + pos, maxlen - pos, p, 1);
00107 if (thislen < 0) return thislen; else pos += thislen;
00108
00109 return pos;
00110 }
00111
00112 int __lcmtypes_gps_to_local_t_encoded_array_size(const lcmtypes_gps_to_local_t *p, int elements)
00113 {
00114 int size = 0, element;
00115 for (element = 0; element < elements; element++) {
00116
00117 size += __int64_t_encoded_array_size(&(p[element].utime), 1);
00118
00119 size += __double_encoded_array_size(p[element].local, 3);
00120
00121 size += __double_encoded_array_size(p[element].lat_lon_el_theta, 4);
00122
00123 { int a;
00124 for (a = 0; a < 4; a++) {
00125 size += __float_encoded_array_size(p[element].gps_cov[a], 4);
00126 }
00127 }
00128
00129 }
00130 return size;
00131 }
00132
00133 int lcmtypes_gps_to_local_t_encoded_size(const lcmtypes_gps_to_local_t *p)
00134 {
00135 return 8 + __lcmtypes_gps_to_local_t_encoded_array_size(p, 1);
00136 }
00137
00138 int __lcmtypes_gps_to_local_t_decode_array(const void *buf, int offset, int maxlen, lcmtypes_gps_to_local_t *p, int elements)
00139 {
00140 int pos = 0, thislen, element;
00141
00142 for (element = 0; element < elements; element++) {
00143
00144 thislen = __int64_t_decode_array(buf, offset + pos, maxlen - pos, &(p[element].utime), 1);
00145 if (thislen < 0) return thislen; else pos += thislen;
00146
00147 thislen = __double_decode_array(buf, offset + pos, maxlen - pos, p[element].local, 3);
00148 if (thislen < 0) return thislen; else pos += thislen;
00149
00150 thislen = __double_decode_array(buf, offset + pos, maxlen - pos, p[element].lat_lon_el_theta, 4);
00151 if (thislen < 0) return thislen; else pos += thislen;
00152
00153 { int a;
00154 for (a = 0; a < 4; a++) {
00155 thislen = __float_decode_array(buf, offset + pos, maxlen - pos, p[element].gps_cov[a], 4);
00156 if (thislen < 0) return thislen; else pos += thislen;
00157 }
00158 }
00159
00160 }
00161 return pos;
00162 }
00163
00164 int __lcmtypes_gps_to_local_t_decode_array_cleanup(lcmtypes_gps_to_local_t *p, int elements)
00165 {
00166 int element;
00167 for (element = 0; element < elements; element++) {
00168
00169 __int64_t_decode_array_cleanup(&(p[element].utime), 1);
00170
00171 __double_decode_array_cleanup(p[element].local, 3);
00172
00173 __double_decode_array_cleanup(p[element].lat_lon_el_theta, 4);
00174
00175 { int a;
00176 for (a = 0; a < 4; a++) {
00177 __float_decode_array_cleanup(p[element].gps_cov[a], 4);
00178 }
00179 }
00180
00181 }
00182 return 0;
00183 }
00184
00185 int lcmtypes_gps_to_local_t_decode(const void *buf, int offset, int maxlen, lcmtypes_gps_to_local_t *p)
00186 {
00187 int pos = 0, thislen;
00188 int64_t hash = __lcmtypes_gps_to_local_t_get_hash();
00189
00190 int64_t this_hash;
00191 thislen = __int64_t_decode_array(buf, offset + pos, maxlen - pos, &this_hash, 1);
00192 if (thislen < 0) return thislen; else pos += thislen;
00193 if (this_hash != hash) return -1;
00194
00195 thislen = __lcmtypes_gps_to_local_t_decode_array(buf, offset + pos, maxlen - pos, p, 1);
00196 if (thislen < 0) return thislen; else pos += thislen;
00197
00198 return pos;
00199 }
00200
00201 int lcmtypes_gps_to_local_t_decode_cleanup(lcmtypes_gps_to_local_t *p)
00202 {
00203 return __lcmtypes_gps_to_local_t_decode_array_cleanup(p, 1);
00204 }
00205
00206 int __lcmtypes_gps_to_local_t_clone_array(const lcmtypes_gps_to_local_t *p, lcmtypes_gps_to_local_t *q, int elements)
00207 {
00208 int element;
00209 for (element = 0; element < elements; element++) {
00210
00211 __int64_t_clone_array(&(p[element].utime), &(q[element].utime), 1);
00212
00213 __double_clone_array(p[element].local, q[element].local, 3);
00214
00215 __double_clone_array(p[element].lat_lon_el_theta, q[element].lat_lon_el_theta, 4);
00216
00217 { int a;
00218 for (a = 0; a < 4; a++) {
00219 __float_clone_array(p[element].gps_cov[a], q[element].gps_cov[a], 4);
00220 }
00221 }
00222
00223 }
00224 return 0;
00225 }
00226
00227 lcmtypes_gps_to_local_t *lcmtypes_gps_to_local_t_copy(const lcmtypes_gps_to_local_t *p)
00228 {
00229 lcmtypes_gps_to_local_t *q = (lcmtypes_gps_to_local_t*) malloc(sizeof(lcmtypes_gps_to_local_t));
00230 __lcmtypes_gps_to_local_t_clone_array(p, q, 1);
00231 return q;
00232 }
00233
00234 void lcmtypes_gps_to_local_t_destroy(lcmtypes_gps_to_local_t *p)
00235 {
00236 __lcmtypes_gps_to_local_t_decode_array_cleanup(p, 1);
00237 free(p);
00238 }