1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
/* test harness for bits.h */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "bits.h"
/*@ -duplicatequals -formattype */
typedef unsigned long long ubig;
static unsigned char buf[80];
static union int_float i_f;
static union long_double l_d;
static char sb1,sb2;
static unsigned char ub1,ub2;
static short sw1,sw2;
static unsigned short uw1,uw2;
static int sl1,sl2;
static unsigned int ul1,ul2;
static long long sL1,sL2;
static unsigned long long uL1,uL2;
static float f1;
static double d1;
static void dumpall(void)
{
(void)printf("getsb: %016llx %016llx %016llx %016llx\n",
(ubig)sb1, (ubig)sb2,
(ubig)getsb(buf, 0), (ubig)getsb(buf, 8));
(void)printf("getub: %016llx %016llx %016llx %016llx\n",
(ubig)ub1, (ubig)ub2,
(ubig)getub(buf, 0), (ubig)getub(buf, 8));
(void)printf("getsw: %016llx %016llx %016llx %016llx\n",
(ubig)sw1, (ubig)sw2,
(ubig)getsw(buf, 0), (ubig)getsw(buf, 8));
(void)printf("getuw: %016llx %016llx %016llx %016llx\n",
(ubig)uw1, (ubig)uw2,
(ubig)getuw(buf, 0), (ubig)getuw(buf, 8));
(void)printf("getsl: %016llx %016llx %016llx %016llx\n",
(ubig)sl1, (ubig)sl2,
(ubig)getsl(buf, 0), (ubig)getsl(buf, 8));
(void)printf("getul: %016llx %016llx %016llx %016llx\n",
(ubig)ul1, (ubig)ul2,
(ubig)getul(buf, 0), (ubig)getul(buf, 8));
(void)printf("getsL: %016llx %016llx %016llx %016llx\n",
(ubig)sL1, (ubig)sL2,
(ubig)getsL(buf, 0), (ubig)getsL(buf, 8));
(void)printf("getuL: %016llx %016llx %016llx %016llx\n",
(ubig)uL1, (ubig)uL2,
(ubig)getuL(buf, 0), (ubig)getuL(buf, 8));
(void)printf("getf: %f %f\n", f1, getf(buf, 24));
(void)printf("getd: %.16f %.16f\n", d1, getd(buf, 16));
}
/*@ -duplicatequals +ignorequals @*/
int main(void)
{
memcpy(buf,"\x01\x02\x03\x04\x05\x06\x07\x08",8);
memcpy(buf+8,"\xff\xfe\xfd\xfc\xfb\xfa\xf9\xf8",8);
memcpy(buf+16,"\x40\x09\x21\xfb\x54\x44\x2d\x18",8);
memcpy(buf+24,"\x40\x49\x0f\xdb",4);
/* big-endian test */
printf("Big-endian\n");
#include "bits.h"
sb1 = getsb(buf, 0);
sb2 = getsb(buf, 8);
ub1 = getub(buf, 0);
ub2 = getub(buf, 8);
sw1 = getsw(buf, 0);
sw2 = getsw(buf, 8);
uw1 = getuw(buf, 0);
uw2 = getuw(buf, 8);
sl1 = getsl(buf, 0);
sl2 = getsl(buf, 8);
ul1 = getul(buf, 0);
ul2 = getul(buf, 8);
sL1 = getsL(buf, 0);
sL2 = getsL(buf, 8);
uL1 = getuL(buf, 0);
uL2 = getuL(buf, 8);
f1 = getf(buf, 24);
d1 = getd(buf, 16);
dumpall();
#undef getub
#undef getsb
#undef getuw
#undef getsw
#undef getul
#undef getsl
#undef getuL
#undef getsL
#undef putword
#undef putlong
/* little-endian test */
#define LITTLE_ENDIAN_PROTOCOL
printf("Little-endian\n");
#include "bits.h"
sb1 = getsb(buf, 0);
sb2 = getsb(buf, 8);
ub1 = getub(buf, 0);
ub2 = getub(buf, 8);
sw1 = getsw(buf, 0);
sw2 = getsw(buf, 8);
uw1 = getuw(buf, 0);
uw2 = getuw(buf, 8);
sl1 = getsl(buf, 0);
sl2 = getsl(buf, 8);
ul1 = getul(buf, 0);
ul2 = getul(buf, 8);
sL1 = getsL(buf, 0);
sL2 = getsL(buf, 8);
uL1 = getuL(buf, 0);
uL2 = getuL(buf, 8);
f1 = getf(buf, 24);
d1 = getd(buf, 16);
dumpall();
exit(0);
}
|