Main Page   Data Structures   File List   Data Fields   Globals   Related Pages  

nix-common/test_pack.c

Go to the documentation of this file.
00001 
00005 #include <sys/types.h>
00006 #include <sys/stat.h>
00007 #include <fcntl.h>
00008 #include <unistd.h>
00009 #include <stdlib.h>
00010 #include <stdio.h>
00011 #include <string.h>
00012 
00013 #include <inttypes.h>
00014 #include <strings.h>
00015 #include <globals.h>
00016 
00017 #define ANDUPTO(X) \
00018         ((Char)((1<<((X)-1)) | (1<<((X)-2)) | (1<<((X)-3)) | (1<<((X)-4)) | \
00019         (1<<((X)-5)) | (1<<((X)-6)) | (1<<((X)-7)) | (1<<((X)-8))))
00020 
00021 void
00022 DumpChar(Char value)
00023 {
00024         int i;
00025         for (i = 7; i >= 0; i--) {
00026                 printf("%c", (value & (1<<i)) == (1<<i) ? '1' : '0');
00027         }
00028 }
00029 
00030 void
00031 DumpBuffer(Char *buffer, UInt32 len)
00032 {
00033         int ap = 0;
00034         printf("**\n");
00035         while(len--) {
00036                 if (ap == 4) {
00037                         ap = 0;
00038                         printf("\n");
00039                 }
00040                 printf("[");
00041                 DumpChar(*buffer);
00042                 printf("]");
00043                 buffer++;
00044                 ap++;
00045         }
00046         printf("\n**\n");
00047 }
00048 
00049 int
00050 main(int argc, char **argv)
00051 {
00052         char *sbuf;
00053         char *dbuf2 = NULL;
00054         char *dbuf = NULL;
00055         int len = 32;
00056         int nbits;
00057         int asb;
00058 
00059         sbuf = malloc(len);
00060         dbuf2 = malloc(len);
00061         for (nbits = 7; nbits >= 1; nbits--) {
00062                 printf("And == %x\n", ANDUPTO(nbits));
00063                 for (asb = 0; asb < len; asb++) {
00064                         sbuf[asb] = asb & ANDUPTO(nbits);
00065                 }
00066                 if (dbuf) {
00067                         free(dbuf);
00068                 }
00069 
00070                 bzero(dbuf2, len);
00071                 dbuf = calloc(1, len / (8 - nbits));
00072                 printf("\nUnpacked\n");
00073                 DumpBuffer(sbuf, len);
00074 
00075                 PackBits(sbuf, dbuf, nbits, len);
00076                 printf("\nPacked\n");
00077                 DumpBuffer(dbuf, len / (8 - nbits));
00078                 UnpackBits(dbuf, dbuf2, nbits, len);
00079                 printf("\nUnpacked\n");
00080                 DumpBuffer(dbuf2, len);
00081         }
00082         free(sbuf);
00083         free(dbuf2);
00084         if (dbuf) free(dbuf);
00085         return (0);
00086 }

Generated on Mon Aug 30 19:44:15 2004 for pocketcity by doxygen1.2.18