Module: Zfp

Defined in:
lib/zfp.rb,
lib/zfp/ffi.rb,
lib/zfp/codec.rb,
lib/zfp/field.rb,
lib/zfp/errors.rb,
lib/zfp/packer.rb,
lib/zfp/stream.rb,
lib/zfp/version.rb,
lib/zfp/type_coercion.rb

Defined Under Namespace

Modules: FFI, Packer, TypeCoercion Classes: Codec, CompressionFailed, DecompressionFailed, Error, Field, InvalidMode, InvalidParams, InvalidShape, InvalidType, LibraryNotFound, PackerError, Stream

Constant Summary collapse

VERSION =
"0.1.0"

Class Method Summary collapse

Class Method Details

.compress(data, type: nil, shape: nil, mode:, **params) ⇒ Object



13
14
15
16
17
# File 'lib/zfp.rb', line 13

def self.compress(data, type: nil, shape: nil, mode:, **params)
  type  ||= TypeCoercion.detect_type(data)  or raise InvalidType,  "type: required for Ruby Array input"
  shape ||= TypeCoercion.detect_shape(data) or raise InvalidShape, "shape: required for Ruby Array input"
  Codec.new(type: type, shape: shape, mode: mode, **params).compress(data)
end

.decompress(bytes, type:, shape:, mode:, numo: false, **params) ⇒ Object



19
20
21
# File 'lib/zfp.rb', line 19

def self.decompress(bytes, type:, shape:, mode:, numo: false, **params)
  Codec.new(type: type, shape: shape, mode: mode, numo: numo, **params).decompress(bytes)
end

.pack(data, type: nil, shape: nil, mode:, **params) ⇒ Object



23
24
25
26
27
28
# File 'lib/zfp.rb', line 23

def self.pack(data, type: nil, shape: nil, mode:, **params)
  type  ||= TypeCoercion.detect_type(data)  or raise InvalidType,  "type: required for Ruby Array input"
  shape ||= TypeCoercion.detect_shape(data) or raise InvalidShape, "shape: required for Ruby Array input"
  as_numo = TypeCoercion.numo?(data)
  Codec.new(type: type, shape: shape, mode: mode, numo: as_numo, **params).pack(data)
end

.unpack(bytes) ⇒ Object



30
31
32
33
# File 'lib/zfp.rb', line 30

def self.unpack(bytes)
  type, shape, mode, params, numo, compressed = Packer.decode(bytes)
  Codec.new(type: type, shape: shape, mode: mode, numo: numo, **params).decompress(compressed)
end