Packages
BinStruct is a library which provides you rich set of tools for parsing/encoding binaries
Current section
Files
Jump to
Current section
Files
lib/bin_struct/flags_reader.ex
defmodule BinStruct.FlagsReader do
@moduledoc """
Useful in `registered_callbacks` when library can't achieve automatic type conversion.
```elixir
iex> flags = [{0x01, :flag_a}, {0x02, :flag_b}]
...> BinStruct.FlagsReader.read_flags_from_integer(flags, 0x01)
[:flag_a]
```
"""
def read_flags_from_integer([], _integer), do: []
def read_flags_from_integer([{flag_mask, flag} | rest], integer) do
is_set = Bitwise.band(integer, flag_mask) > 0
if is_set do
[ flag | read_flags_from_integer(rest, integer)]
else
read_flags_from_integer(rest, integer)
end
end
end