-module(grisp_bitmap). % API -export([set_bits/3]). -export([get_bits/3]). -export([set_bytes/3]). -export([get_bytes/3]). %--- API ----------------------------------------------------------------------- set_bits(Bin, Start, Value) when bit_size(Bin) >= Start + bit_size(Value) -> Len = bit_size(Value), <> = Bin, <>. get_bits(Bin, Start, Len) -> <<_:Start/bitstring, Bytes:Len/bitstring, _/bitstring>> = Bin, Bytes. set_bytes(Bin, Start, Value) when is_binary(Value) -> set_bits(Bin, Start * 8, Value). get_bytes(Bin, Start, Len) -> get_bits(Bin, Start * 8, Len * 8).