| 1234567891011121314151617181920212223242526272829303132333435363738 |
- package lz4
- // #cgo CFLAGS: -O3
- // #include "src/lz4hc.h"
- // #include "src/lz4hc.c"
- import "C"
- import (
- "fmt"
- )
- // CompressHC compresses in and puts the content in out. len(out)
- // should have enough space for the compressed data (use CompressBound
- // to calculate). Returns the number of bytes in the out slice. Determines
- // the compression level automatically.
- func CompressHC(in, out []byte) (int, error) {
- // 0 automatically sets the compression level.
- return CompressHCLevel(in, out, 0)
- }
- // CompressHCLevel compresses in at the given compression level and puts the
- // content in out. len(out) should have enough space for the compressed data
- // (use CompressBound to calculate). Returns the number of bytes in the out
- // slice. To automatically choose the compression level, use 0. Otherwise, use
- // any value in the inclusive range 1 (worst) through 16 (best). Most
- // applications will prefer CompressHC.
- func CompressHCLevel(in, out []byte, level int) (outSize int, err error) {
- // LZ4HC does not handle empty buffers. Pass through to Compress.
- if len(in) == 0 || len(out) == 0 {
- return Compress(in, out)
- }
- outSize = int(C.LZ4_compressHC2_limitedOutput(p(in), p(out), clen(in), clen(out), C.int(level)))
- if outSize == 0 {
- err = fmt.Errorf("insufficient space for compression")
- }
- return
- }
|