Current section

Files

Jump to
gleam_bitwise src gleam bitwise.gleam
Raw

src/gleam/bitwise.gleam

//// A set of functions for bitwise operations on integers.
/// Calculates the bitwise AND of its arguments.
pub fn and(x: Int, y: Int) -> Int {
do_and(x, y)
}
if erlang {
external fn do_and(Int, Int) -> Int =
"erlang" "band"
}
if javascript {
external fn do_and(Int, Int) -> Int =
"../gleam_bitwise.mjs" "and"
}
/// Calculates the bitwise NOT of its argument.
pub fn not(x: Int) -> Int {
do_not(x)
}
if erlang {
external fn do_not(Int) -> Int =
"erlang" "bnot"
}
if javascript {
external fn do_not(Int) -> Int =
"../gleam_bitwise.mjs" "not"
}
/// Calculates the bitwise OR of its arguments.
pub fn or(x: Int, y: Int) -> Int {
do_or(x, y)
}
if erlang {
external fn do_or(Int, Int) -> Int =
"erlang" "bor"
}
if javascript {
external fn do_or(Int, Int) -> Int =
"../gleam_bitwise.mjs" "or"
}
/// Calculates the bitwise XOR of its arguments.
pub fn exclusive_or(x: Int, y: Int) -> Int {
do_exclusive_or(x, y)
}
if erlang {
external fn do_exclusive_or(Int, Int) -> Int =
"erlang" "bxor"
}
if javascript {
external fn do_exclusive_or(Int, Int) -> Int =
"../gleam_bitwise.mjs" "exclusive_or"
}
/// Calculates the result of an arithmetic left bitshift.
pub fn shift_left(x: Int, y: Int) -> Int {
do_shift_left(x, y)
}
if erlang {
external fn do_shift_left(Int, Int) -> Int =
"erlang" "bsl"
}
if javascript {
external fn do_shift_left(Int, Int) -> Int =
"../gleam_bitwise.mjs" "shift_left"
}
/// Calculates the result of an arithmetic right bitshift.
pub fn shift_right(x: Int, y: Int) -> Int {
do_shift_right(x, y)
}
if erlang {
external fn do_shift_right(Int, Int) -> Int =
"erlang" "bsr"
}
if javascript {
external fn do_shift_right(Int, Int) -> Int =
"../gleam_bitwise.mjs" "shift_right"
}