defmodule ZStandard do
@moduledoc ~S"""
ZStandard compression and decompression.
For more information see: [ZStandard](https://facebook.github.io/zstd/).
"""
@on_load :load_nif
@doc false
@spec load_nif :: :ok | no_return
def load_nif do
path = :filename.join(:code.priv_dir(:z_standard), 'z_standard_nif')
:ok = :erlang.load_nif(path, 0)
end
@doc ~S"""
Compress uncompressed data with a compression level of `1`.
See: `compress/2` to set a specific compression level between 0 - 22.
"""
@spec compress(uncompressed :: binary) :: binary
def compress(uncompressed), do: compress(uncompressed, 1)
@doc ~S"""
Compress uncompressed data with the given level of compression.
"""
@spec compress(uncompressed :: binary, level :: 0..22) :: binary
def compress(uncompressed, level)
def compress(_, _), do: :erlang.nif_error(__ENV__.line)
@doc ~S"""
Decompress compressed data.
"""
@spec decompress(compressed :: binary) :: binary
def decompress(compressed)
def decompress(_), do: :erlang.nif_error(__ENV__.line)
end