1*7e6ad469SVishal Kulkarni /*
2*7e6ad469SVishal Kulkarni  * This file and its contents are supplied under the terms of the
3*7e6ad469SVishal Kulkarni  * Common Development and Distribution License ("CDDL"), version 1.0.
4*7e6ad469SVishal Kulkarni  * You may only use this file in accordance with the terms of version
5*7e6ad469SVishal Kulkarni  * 1.0 of the CDDL.
6*7e6ad469SVishal Kulkarni  *
7*7e6ad469SVishal Kulkarni  * A full copy of the text of the CDDL should have accompanied this
8*7e6ad469SVishal Kulkarni  * source. A copy of the CDDL is also available via the Internet at
9*7e6ad469SVishal Kulkarni  * http://www.illumos.org/license/CDDL.
10*7e6ad469SVishal Kulkarni  */
11*7e6ad469SVishal Kulkarni 
12*7e6ad469SVishal Kulkarni /*
13*7e6ad469SVishal Kulkarni    FastLZ - lightning-fast lossless compression library
14*7e6ad469SVishal Kulkarni 
15*7e6ad469SVishal Kulkarni    Copyright (C) 2007 Ariya Hidayat (ariya@kde.org)
16*7e6ad469SVishal Kulkarni    Copyright (C) 2006 Ariya Hidayat (ariya@kde.org)
17*7e6ad469SVishal Kulkarni    Copyright (C) 2005 Ariya Hidayat (ariya@kde.org)
18*7e6ad469SVishal Kulkarni 
19*7e6ad469SVishal Kulkarni    Permission is hereby granted, free of charge, to any person obtaining a copy
20*7e6ad469SVishal Kulkarni    of this software and associated documentation files (the "Software"), to deal
21*7e6ad469SVishal Kulkarni    in the Software without restriction, including without limitation the rights
22*7e6ad469SVishal Kulkarni    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
23*7e6ad469SVishal Kulkarni    copies of the Software, and to permit persons to whom the Software is
24*7e6ad469SVishal Kulkarni    furnished to do so, subject to the following conditions:
25*7e6ad469SVishal Kulkarni 
26*7e6ad469SVishal Kulkarni    The above copyright notice and this permission notice shall be included in
27*7e6ad469SVishal Kulkarni    all copies or substantial portions of the Software.
28*7e6ad469SVishal Kulkarni 
29*7e6ad469SVishal Kulkarni    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
30*7e6ad469SVishal Kulkarni    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
31*7e6ad469SVishal Kulkarni    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
32*7e6ad469SVishal Kulkarni    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
33*7e6ad469SVishal Kulkarni    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
34*7e6ad469SVishal Kulkarni    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
35*7e6ad469SVishal Kulkarni    THE SOFTWARE.
36*7e6ad469SVishal Kulkarni 
37*7e6ad469SVishal Kulkarni    $FreeBSD$
38*7e6ad469SVishal Kulkarni    */
39*7e6ad469SVishal Kulkarni #ifndef FASTLZ_H
40*7e6ad469SVishal Kulkarni #define FASTLZ_H
41*7e6ad469SVishal Kulkarni 
42*7e6ad469SVishal Kulkarni #define FASTLZ_VERSION 0x000100
43*7e6ad469SVishal Kulkarni 
44*7e6ad469SVishal Kulkarni #define FASTLZ_VERSION_MAJOR	 0
45*7e6ad469SVishal Kulkarni #define FASTLZ_VERSION_MINOR	 0
46*7e6ad469SVishal Kulkarni #define FASTLZ_VERSION_REVISION  0
47*7e6ad469SVishal Kulkarni 
48*7e6ad469SVishal Kulkarni #define FASTLZ_VERSION_STRING "0.1.0"
49*7e6ad469SVishal Kulkarni 
50*7e6ad469SVishal Kulkarni struct cudbg_buffer;
51*7e6ad469SVishal Kulkarni 
52*7e6ad469SVishal Kulkarni int fastlz_compress(const void *input, int length, void *output);
53*7e6ad469SVishal Kulkarni int fastlz_compress_level(int level, const void *input, int length,
54*7e6ad469SVishal Kulkarni 			  void *output);
55*7e6ad469SVishal Kulkarni int fastlz_decompress(const void *input, int length, void *output, int maxout);
56*7e6ad469SVishal Kulkarni 
57*7e6ad469SVishal Kulkarni /* prototypes */
58*7e6ad469SVishal Kulkarni 
59*7e6ad469SVishal Kulkarni int write_magic(struct cudbg_buffer *);
60*7e6ad469SVishal Kulkarni int detect_magic(struct cudbg_buffer *);
61*7e6ad469SVishal Kulkarni 
62*7e6ad469SVishal Kulkarni int write_to_buf(void *, u32, u32 *, void *, u32);
63*7e6ad469SVishal Kulkarni int read_from_buf(void *, u32, u32 *, void *,  u32);
64*7e6ad469SVishal Kulkarni 
65*7e6ad469SVishal Kulkarni int write_chunk_header(struct cudbg_buffer *, int, int, unsigned long,
66*7e6ad469SVishal Kulkarni 		       unsigned long, unsigned long);
67*7e6ad469SVishal Kulkarni 
68*7e6ad469SVishal Kulkarni int read_chunk_header(struct cudbg_buffer *, int* , int*, unsigned long*,
69*7e6ad469SVishal Kulkarni 		      unsigned long*, unsigned long*);
70*7e6ad469SVishal Kulkarni 
71*7e6ad469SVishal Kulkarni unsigned long block_compress(const unsigned char *, unsigned long length,
72*7e6ad469SVishal Kulkarni 			     unsigned char *);
73*7e6ad469SVishal Kulkarni #endif /* FASTLZ_H */
74