aboutsummaryrefslogtreecommitdiff
path: root/go/compress
diff options
context:
space:
mode:
authorchrislusf <chris.lu@gmail.com>2015-04-06 14:17:36 -0700
committerchrislusf <chris.lu@gmail.com>2015-04-06 14:17:36 -0700
commit3ece066700169013497390aaca8d1d86bf7ecb2d (patch)
tree4e412ced584332cd3d8e4281d55c65916795cf21 /go/compress
parentc37a20178e76661acacbf4e84da0a916d9129cbc (diff)
downloadseaweedfs-3ece066700169013497390aaca8d1d86bf7ecb2d.tar.xz
seaweedfs-3ece066700169013497390aaca8d1d86bf7ecb2d.zip
change count to uint64 to fix #109
fix https://github.com/chrislusf/weed-fs/issues/109
Diffstat (limited to 'go/compress')
-rw-r--r--go/compress/delta_binary_pack32.go32
1 files changed, 32 insertions, 0 deletions
diff --git a/go/compress/delta_binary_pack32.go b/go/compress/delta_binary_pack32.go
new file mode 100644
index 000000000..42ae8d42d
--- /dev/null
+++ b/go/compress/delta_binary_pack32.go
@@ -0,0 +1,32 @@
+package compress
+
+import (
+ "github.com/reducedb/encoding/cursor"
+ "github.com/reducedb/encoding/delta/bp32"
+)
+
+// Compress compresses in[]int32 to out[]int32
+func Compress32(in []int32) (out []int32, err error) {
+ out = make([]int32, len(in)*2)
+ inpos := cursor.New()
+ outpos := cursor.New()
+
+ if err = bp32.New().Compress(in, inpos, len(in), out, outpos); err != nil {
+ return nil, err
+ }
+
+ return out[:outpos.Get()], nil
+}
+
+// Uncompress uncompresses in[]int32 to out[]int32
+func Uncompress32(in []int32, buffer []int32) (out []int32, err error) {
+ out = buffer
+ inpos := cursor.New()
+ outpos := cursor.New()
+
+ if err = bp32.New().Uncompress(in, inpos, len(in), out, outpos); err != nil {
+ return nil, err
+ }
+
+ return out[:outpos.Get()], nil
+}