https://github.com/chris-huxtable/cbhcompresskit
An easy-to-use interface for compression and a `NSData` category.
https://github.com/chris-huxtable/cbhcompresskit
compression lz4 lzfse lzma objective-c objective-c-library zlib
Last synced: 25 days ago
JSON representation
An easy-to-use interface for compression and a `NSData` category.
- Host: GitHub
- URL: https://github.com/chris-huxtable/cbhcompresskit
- Owner: chris-huxtable
- License: isc
- Created: 2019-03-09T01:50:39.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2019-12-05T08:05:08.000Z (over 5 years ago)
- Last Synced: 2025-02-10T07:23:06.377Z (3 months ago)
- Topics: compression, lz4, lzfse, lzma, objective-c, objective-c-library, zlib
- Language: Objective-C
- Homepage:
- Size: 34.2 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# CBHCompressKit
[](https://github.com/chris-huxtable/CBHCompressKit/releases)
[](https://cocoapods.org/pods/CBHCompressKit)
[](https://github.com/chris-huxtable/CBHCompressKit/blob/master/LICENSE)
[](https://github.com/chris-huxtable/CBHCompressKit)CBHCompressKit provides `CBHCompressor` and `CBHDecompressor` which provide an easy-to-use means of compressing `NSData`. They support one-call and stream compression. Additionally CBHCompressKit provides a `NSData` category to make one-call compression even easier.
## Supported Algorithms:
- LZ4: A high-speed compression algorithm.
- LZMA: A high compression ratio algorithm.
- ZLib: A balanced, cross platform compression algorithm/format.
- LZFSE: A balanced, Apple only compression algorithm.## Use
Most use cases will only need to use the `NSData` categories.
#### Examples:
Compress `NSData` with LZ4:
```objective-c
NSData *data = /* some data */
NSData *compressed = [data compressUsingLZ4];
```Decompress `NSData` with LZ4:
```objective-c
NSData *compressed = /* some compressed data */
NSData *data = [compressed decompressUsingLZ4];
```Compress `NSData` with LZMA:
```objective-c
NSData *data = /* some data */
NSData *compressed = [data compressUsingLZMA];
```Decompress `NSData` with LZMA:
```objective-c
NSData *compressed = /* some compressed data */
NSData *data = [compressed decompressUsingLZMA];
```Compress `NSData` with ZLib:
```objective-c
NSData *data = /* some data */
NSData *compressed = [data compressUsingZLib];
```Decompress `NSData` with ZLib:
```objective-c
NSData *compressed = /* some compressed data */
NSData *data = [compressed decompressUsingZLib];
```Compress `NSData` with LZFSE:
```objective-c
NSData *data = /* some data */
NSData *compressed = [data compressUsingLZFSE];
```Decompress `NSData` with LZFSE:
```objective-c
NSData *compressed = /* some compressed data */
NSData *data = [compressed decompressUsingLZFSE];
```More complicated examples such as with a stream.
#### Examples:
Compress a stream:
```objective-c
id io = /* an object that returns data in chunks */CBHCompressAlgorithm algorithm = CBHCompressAlgorithm_LZMA;
NSData *compressed = [CBHCompressor compressUsingAlgorithm:algorithm inBlock:^(CBHCompressor *compressor) {
while ( [io hasMoreData] )
{
[compressor appendData:[io data]];
}
}];
```Decompress a stream:
```objective-c
id io = /* an object that returns data in chunks */CBHCompressAlgorithm algorithm = CBHCompressAlgorithm_LZMA;
NSData *decompressed = [CBHDecompressor decompressUsingAlgorithm:algorithm inBlock:^(CBHDecompressor *decompressor) {
while ( [io hasMoreData] )
{
[decompressor appendData:[io data]];
}
}];
```## Licence
CBHCompressKit is available under the [ISC license](https://github.com/chris-huxtable/CBHCompressKit/blob/master/LICENSE).