-module(bitsandbobs@ints). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([to_bitarray/1, from_x_bits/2, from_bitarray/1, map_every_x_bits/3, map/2, add/3]). -export_type([error/0]). -type error() :: {invalid_bit_count, integer()}. -file("C:\\Users\\bradl\\Desktop\\bitsandbobs\\src\\bitsandbobs\\ints.gleam", 24). -spec to_bitarray(integer()) -> bitstring(). to_bitarray(Int) -> <>. -file("C:\\Users\\bradl\\Desktop\\bitsandbobs\\src\\bitsandbobs\\ints.gleam", 37). -spec from_x_bits(bitstring(), integer()) -> {ok, integer()} | {error, error()}. from_x_bits(Bitarray, Bit_count) -> case Bitarray of <> -> {ok, Ret}; _ -> {error, {invalid_bit_count, Bit_count}} end. -file("C:\\Users\\bradl\\Desktop\\bitsandbobs\\src\\bitsandbobs\\ints.gleam", 30). -spec from_bitarray(bitstring()) -> integer(). from_bitarray(Bitarray) -> _assert_subject = begin _pipe = Bitarray, _pipe@1 = bitsandbobs:bit_size(_pipe), from_x_bits(Bitarray, _pipe@1) end, {ok, Int} = case _assert_subject of {ok, _} -> _assert_subject; _assert_fail -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, value => _assert_fail, module => <<"bitsandbobs/ints"/utf8>>, function => <<"from_bitarray"/utf8>>, line => 31}) end, Int. -file("C:\\Users\\bradl\\Desktop\\bitsandbobs\\src\\bitsandbobs\\ints.gleam", 50). -spec map_every_x_bits(bitstring(), integer(), fun((integer()) -> integer())) -> bitstring(). map_every_x_bits(Bitarray, Every, F) -> bitsandbobs:map( Bitarray, Every, fun(X) -> _assert_subject = begin _pipe = X, from_x_bits(_pipe, Every) end, {ok, Int} = case _assert_subject of {ok, _} -> _assert_subject; _assert_fail -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, value => _assert_fail, module => <<"bitsandbobs/ints"/utf8>>, function => <<"map_every_x_bits"/utf8>>, line => 56}) end, Ret = begin _pipe@1 = Int, F(_pipe@1) end, <> end ). -file("C:\\Users\\bradl\\Desktop\\bitsandbobs\\src\\bitsandbobs\\ints.gleam", 45). -spec map(bitstring(), fun((integer()) -> integer())) -> bitstring(). map(Bitarray, F) -> map_every_x_bits(Bitarray, 8, F). -file("C:\\Users\\bradl\\Desktop\\bitsandbobs\\src\\bitsandbobs\\ints.gleam", 63). -spec add(bitstring(), bitstring(), integer()) -> bitstring(). add(First, Second, Size) -> First_size = bitsandbobs:bit_size(First), Second_size = bitsandbobs:bit_size(Second), Padded_size = begin _pipe = gleam@int:max(First_size, Second_size), gleam@int:max(_pipe, Size) end, case First_size of S when S < Padded_size -> _pipe@1 = First, _pipe@2 = bitsandbobs:pad(_pipe@1, Padded_size - First_size), add(_pipe@2, Second, Size); _ -> case Second_size of S@1 when S@1 < Padded_size -> _pipe@3 = Second, _pipe@4 = bitsandbobs:pad( _pipe@3, Padded_size - Second_size ), add(_pipe@4, First, Size); _ -> _pipe@5 = bitsandbobs:zip(First, Second, Size), _pipe@8 = gleam@list:map( _pipe@5, fun(X) -> {First@1, Second@1} = X, _assert_subject = begin _pipe@6 = First@1, from_x_bits(_pipe@6, Size) end, {ok, First@2} = case _assert_subject of {ok, _} -> _assert_subject; _assert_fail -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, value => _assert_fail, module => <<"bitsandbobs/ints"/utf8>>, function => <<"add"/utf8>>, line => 81}) end, _assert_subject@1 = begin _pipe@7 = Second@1, from_x_bits(_pipe@7, Size) end, {ok, Second@2} = case _assert_subject@1 of {ok, _} -> _assert_subject@1; _assert_fail@1 -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, value => _assert_fail@1, module => <<"bitsandbobs/ints"/utf8>>, function => <<"add"/utf8>>, line => 82}) end, Result = First@2 + Second@2, <> end ), gleam_stdlib:bit_array_concat(_pipe@8) end end.