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
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045 #ifndef lint
00046 static const char libbu_xdr_RCSid[] = "@(#)$Header: /cvsroot/brlcad/brlcad/src/libbu/xdr.c,v 14.12 2006/08/31 23:16:39 lbutler Exp $ (ARL)";
00047 #endif
00048
00049 #include "common.h"
00050
00051 #include <stdio.h>
00052 #include <ctype.h>
00053 #include <math.h>
00054 #ifdef HAVE_STRING_H
00055 # include <string.h>
00056 #else
00057 # include <strings.h>
00058 #endif
00059
00060 #include "machine.h"
00061 #include "bu.h"
00062
00063
00064
00065
00066
00067
00068 unsigned short
00069 bu_gshort(const unsigned char *msgp)
00070 {
00071 register const unsigned char *p = msgp;
00072 #ifdef vax
00073
00074
00075
00076 register unsigned long u;
00077 #else
00078 register unsigned short u;
00079 #endif
00080
00081 u = *p++ << 8;
00082 return ((unsigned short)(u | *p));
00083 }
00084
00085
00086
00087
00088 unsigned long
00089 bu_glong(const unsigned char *msgp)
00090 {
00091 register const unsigned char *p = msgp;
00092 register unsigned long u;
00093
00094 u = *p++; u <<= 8;
00095 u |= *p++; u <<= 8;
00096 u |= *p++; u <<= 8;
00097 return (u | *p);
00098 }
00099
00100
00101
00102
00103 unsigned char *
00104 bu_pshort(register unsigned char *msgp, register int s)
00105 {
00106
00107 msgp[1] = s;
00108 msgp[0] = s >> 8;
00109 return(msgp+2);
00110 }
00111
00112
00113
00114
00115 unsigned char *
00116 bu_plong(register unsigned char *msgp, register long unsigned int l)
00117 {
00118
00119 msgp[3] = l;
00120 msgp[2] = (l >>= 8);
00121 msgp[1] = (l >>= 8);
00122 msgp[0] = l >> 8;
00123 return(msgp+4);
00124 }
00125
00126 #if 0
00127
00128
00129
00130
00131
00132
00133
00134 typedef unsigned char ext_timeval_t[8+4];
00135
00136 void
00137 bu_gtimeval( tvp, msgp )
00138 struct timeval *tvp;
00139 const unsigned char *msgp;
00140 {
00141 tvp->tv_sec = (((time_t)BU_GLONG( msgp+0 )) << 32) |
00142 BU_GLONG( msgp+4 );
00143 tvp->tv_usec = BU_GLONG( msgp+8 );
00144 }
00145
00146 unsigned char *
00147 bu_ptimeval( msgp, tvp )
00148 const struct timeval *tvp;
00149 unsigned char *msgp;
00150 {
00151 long upper = (long)(tvp->tv_sec >> 32);
00152 long lower = (long)(tvp->tv_sec & 0xFFFFFFFFL);
00153
00154 (void)bu_plong( msgp+0, upper );
00155 (void)bu_plong( msgp+4, lower );
00156 return bu_plong( msgp+8, tvp->tv_usec );
00157 }
00158 #endif
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169