32 lines
838 B
Plaintext
32 lines
838 B
Plaintext
# Bitwise operations on primitive types
|
|
import values;
|
|
|
|
|
|
operator `&`*[T: int | uint64 | int32 | uint32 | int16 | uint16 | int8 | uint8](a, b: T): T {
|
|
#pragma[magic: "And", pure]
|
|
}
|
|
|
|
|
|
operator `|`*[T: int | uint64 | int32 | uint32 | int16 | uint16 | int8 | uint8](a, b: T): T {
|
|
#pragma[magic: "Or", pure]
|
|
}
|
|
|
|
|
|
operator `~`*[T: int | uint64 | int32 | uint32 | int16 | uint16 | int8 | uint8](a: T): T {
|
|
#pragma[magic: "Not", pure]
|
|
}
|
|
|
|
|
|
operator `>>`*[T: int | uint64 | int32 | uint32 | int16 | uint16 | int8 | uint8](a, b: T): T {
|
|
#pragma[magic: "RShift", pure]
|
|
}
|
|
|
|
|
|
operator `<<`*[T: int | uint64 | int32 | uint32 | int16 | uint16 | int8 | uint8](a, b: T): T {
|
|
#pragma[magic: "LShift", pure]
|
|
}
|
|
|
|
|
|
operator `^`*[T: int | uint64 | int32 | uint32 | int16 | uint16 | int8 | uint8](a, b: T): T {
|
|
#pragma[magic: "Xor", pure]
|
|
} |