/[MITgcm]/mitgcm.org/devel/buildweb/pkg/swish-e/src/compress.h
ViewVC logotype

Contents of /mitgcm.org/devel/buildweb/pkg/swish-e/src/compress.h

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1.1.1 - (show annotations) (download) (vendor branch)
Fri Sep 20 19:47:29 2002 UTC (22 years, 10 months ago) by adcroft
Branch: Import, MAIN
CVS Tags: baseline, HEAD
Changes since 1.1: +0 -0 lines
File MIME type: text/plain
Error occurred while calculating annotation data.
Importing web-site building process.

1 /*
2 ** Copyright (C) 1995, 1996, 1997, 1998 Hewlett-Packard Company
3 ** Originally by Kevin Hughes, kev@kevcom.com, 3/11/94
4 **
5 ** This program and library is free software; you can redistribute it and/or
6 ** modify it under the terms of the GNU (Library) General Public License
7 ** as published by the Free Software Foundation; either version 2
8 ** of the License, or any later version.
9 **
10 ** This program is distributed in the hope that it will be useful,
11 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
12 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 ** GNU (Library) General Public License for more details.
14 **
15 ** You should have received a copy of the GNU (Library) General Public License
16 ** along with this program; if not, write to the Free Software
17 ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 */
19
20 void compress1(int num, FILE *fp, int (*f_putc)(int , FILE *));
21 /* unsigned char *compress2(int num, unsigned char *buffer);*/
22 unsigned char *compress3(int num, unsigned char *buffer);
23
24 int uncompress1(FILE *fp, int (*f_getc)(FILE *fp));
25 int uncompress2(unsigned char **buffer);
26
27
28 unsigned long PACKLONG(unsigned long num);
29 void PACKLONG2(unsigned long num, unsigned char *buffer);
30
31 unsigned long UNPACKLONG(unsigned long num);
32 unsigned long UNPACKLONG2(unsigned char *buffer);
33
34 unsigned char *compress_location(SWISH *,IndexFILE *, LOCATION *);
35 void compress_location_values(unsigned char **buf,unsigned char **flagp,int filenum,int frequency, int *position);
36 void compress_location_positions(unsigned char **buf,unsigned char *flag,int frequency, int *position);
37
38 LOCATION *uncompress_location(SWISH *,IndexFILE *,unsigned char *);
39 void uncompress_location_values(unsigned char **buf,unsigned char *flag, int *filenum,int *frequency);
40 void uncompress_location_positions(unsigned char **buf, unsigned char flag, int frequency, int *position);
41
42 void CompressCurrentLocEntry(SWISH *,IndexFILE *,ENTRY *);
43
44 void SwapLocData(SWISH *,ENTRY *,unsigned char *,int);
45 void unSwapLocData(SWISH *,int, ENTRY *);
46 void sortSwapLocData(SWISH * , ENTRY *);
47 void unSwapLocDataEntry_old(SWISH *,ENTRY *);
48
49 /* Here is the worst case size for a compressed number
50 ** MAXINTCOMPSIZE stands for MAXimum INTeger COMPressed SIZE
51 **
52 ** There are many places in the code in which we allocate
53 ** space for a compressed number. In the worst case this size is 5
54 ** for 32 bit number, 10 for a 64 bit number.
55 **
56 ** The way this compression works is reserving the first bit
57 ** in each byte to store a flag. The flag is set in all bytes
58 ** except for the last one.
59 ** This only gives 7 bits per byte to store the number.
60 **
61 ** For example, to store 1000 (binary 1111101000) we will get:
62 **
63 ** 1st byte 2th byte
64 ** 10000111 01101000
65 ** ^ ^
66 ** | |
67 ** | Flag to indicate that this is tha last byte
68 ** |
69 ** Flag set to indicate that more bytes follow this one
70 **
71 ** So, to compress a 32 bit number we need 5 bytes and for
72 ** a 64 bit number we will use 10 bytes for the worst case
73 */
74 #define MAXINTCOMPSIZE (((sizeof(int) * 8) / 7) + (((sizeof(int) * 8) % 7) ? 1 : 0))
75

  ViewVC Help
Powered by ViewVC 1.1.22