32 lines
514 B
Plaintext
32 lines
514 B
Plaintext
# Bitwise operations on primitive types
|
|
import values;
|
|
|
|
|
|
operator `&`*[T: Integer](a, b: T): T {
|
|
#pragma[magic: "And", pure]
|
|
}
|
|
|
|
|
|
operator `|`*[T: Integer](a, b: T): T {
|
|
#pragma[magic: "Or", pure]
|
|
}
|
|
|
|
|
|
operator `~`*[T: Integer](a: T): T {
|
|
#pragma[magic: "Not", pure]
|
|
}
|
|
|
|
|
|
operator `>>`*[T: Integer](a, b: T): T {
|
|
#pragma[magic: "RShift", pure]
|
|
}
|
|
|
|
|
|
operator `<<`*[T: Integer](a, b: T): T {
|
|
#pragma[magic: "LShift", pure]
|
|
}
|
|
|
|
|
|
operator `^`*[T: Integer](a, b: T): T {
|
|
#pragma[magic: "Xor", pure]
|
|
} |