48 lines
927 B
Elixir
48 lines
927 B
Elixir
defmodule Bitwise do
|
|
@moduledoc """
|
|
This module provide macros for bitwise operators
|
|
provided by Erlang. These macros can be used in guards.
|
|
"""
|
|
|
|
@doc """
|
|
Bitwise not.
|
|
"""
|
|
defmacro bnot(expr) do
|
|
quote do: __op__ :bnot, unquote(expr)
|
|
end
|
|
|
|
@doc """
|
|
Bitwise and.
|
|
"""
|
|
defmacro band(left, right) do
|
|
quote do: __op__ :band, unquote(left), unquote(right)
|
|
end
|
|
|
|
@doc """
|
|
Bitwise or.
|
|
"""
|
|
defmacro bor(left, right) do
|
|
quote do: __op__ :bor, unquote(left), unquote(right)
|
|
end
|
|
|
|
@doc """
|
|
Bitwise xor.
|
|
"""
|
|
defmacro bxor(left, right) do
|
|
quote do: __op__ :bxor, unquote(left), unquote(right)
|
|
end
|
|
|
|
@doc """
|
|
Arithmetic bitshift left.
|
|
"""
|
|
defmacro bsl(left, right) do
|
|
quote do: __op__ :bsl, unquote(left), unquote(right)
|
|
end
|
|
|
|
@doc """
|
|
Arithmetic bitshift right.
|
|
"""
|
|
defmacro bsr(left, right) do
|
|
quote do: __op__ :bsr, unquote(left), unquote(right)
|
|
end
|
|
end |