1
2 #include <stdio.h>
3
4 #include <schroedinger/schro.h>
5
6 void
dump_bits(SchroBits * bits,int n)7 dump_bits (SchroBits *bits, int n)
8 {
9 int i;
10
11 for(i=0;i<n*8;i++){
12 printf(" %d", (bits->buffer->data[(i>>3)] >> (7 - (i&7))) & 1);
13 }
14 printf(" (%d bytes)\n", n);
15 }
16
17
18 int
main(int argc,char * argv[])19 main (int argc, char *argv[])
20 {
21 int i;
22 SchroBuffer *buffer = schro_buffer_new_and_alloc (100);
23 SchroBits *bits;
24 int value;
25 int fail = 0;
26 int n;
27
28 schro_init();
29
30 printf("unsigned int\n");
31 for(i=0;i<21;i++) {
32 bits = schro_bits_new();
33 schro_bits_encode_init (bits, buffer);
34 schro_bits_encode_uint(bits,i);
35 schro_bits_flush (bits);
36 n = schro_bits_get_offset (bits);
37 schro_bits_free (bits);
38
39 bits = schro_bits_new();
40 schro_bits_decode_init (bits, buffer);
41 printf("%3d:", i);
42 dump_bits (bits, n);
43 value = schro_bits_decode_uint (bits);
44 if (value != i) {
45 printf("decode failed (%d != %d)\n", value, i);
46 fail = 1;
47 }
48 schro_bits_free (bits);
49 }
50 printf("\n");
51
52 printf("signed int\n");
53 for(i=-5;i<6;i++) {
54 bits = schro_bits_new();
55 schro_bits_encode_init (bits, buffer);
56 schro_bits_encode_sint(bits,i);
57 schro_bits_flush (bits);
58 n = schro_bits_get_offset (bits);
59 schro_bits_free (bits);
60
61 bits = schro_bits_new();
62 schro_bits_decode_init (bits, buffer);
63 printf("%3d:", i);
64 dump_bits (bits, n);
65 value = schro_bits_decode_sint (bits);
66 if (value != i) {
67 printf("decode failed (%d != %d)\n", value, i);
68 fail = 1;
69 }
70 schro_bits_free (bits);
71 }
72 printf("\n");
73
74 return fail;
75 }
76
77
78
79