peon/src/peon/stdlib/builtins/comparisons.pn

100 lines
1.8 KiB
Plaintext

# Comparison operators
import values;
operator `is`*[T: any](a, b: T): bool {
#pragma[magic: "Identity", pure]
}
operator `>`*[T: UnsignedInteger](a, b: T): bool {
#pragma[magic: "GreaterThan", pure]
}
operator `<`*[T: UnsignedInteger](a, b: T): bool {
#pragma[magic: "LessThan", pure]
}
operator `==`*[T: Number | inf | bool](a, b: T): bool {
#pragma[magic: "Equal", pure]
}
operator `!=`*[T: Number | inf](a, b: T): bool {
#pragma[magic: "NotEqual", pure]
}
operator `>=`*[T: UnsignedInteger](a, b: T): bool {
#pragma[magic: "GreaterOrEqual", pure]
}
operator `<=`*[T: UnsignedInteger](a, b: T): bool {
#pragma[magic: "LessOrEqual", pure]
}
operator `>`*[T: SignedInteger](a, b: T): bool {
#pragma[magic: "SignedGreaterThan", pure]
}
operator `<`*[T: SignedInteger](a, b: T): bool {
#pragma[magic: "SignedLessThan", pure]
}
operator `>=`*[T: SignedInteger](a, b: T): bool {
#pragma[magic: "SignedGreaterOrEqual", pure]
}
operator `<=`*[T: SignedInteger](a, b: T): bool {
#pragma[magic: "SignedLessOrEqual", pure]
}
operator `>`*(a, b: float64): bool {
#pragma[magic: "Float64GreaterThan", pure]
}
operator `<`*(a, b: float64): bool {
#pragma[magic: "Float64LessThan", pure]
}
operator `>=`*(a, b: float64): bool {
#pragma[magic: "Float64GreaterOrEqual", pure]
}
operator `<=`*(a, b: float64): bool {
#pragma[magic: "Float64LessOrEqual", pure]
}
operator `>`*(a, b: float32): bool {
#pragma[magic: "Float32GreaterThan", pure]
}
operator `<`*(a, b: float32): bool {
#pragma[magic: "Float32LessThan", pure]
}
operator `>=`*(a, b: float32): bool {
#pragma[magic: "Float32GreaterOrEqual", pure]
}
operator `<=`*(a, b: float32): bool {
#pragma[magic: "Float32LessOrEqual", pure]
}