mirror of
https://github.com/johnkerl/miller.git
synced 2026-01-23 02:14:13 +00:00
* Update package version * Update makefile targets * Update readme packages * Remaining old packages via rg/sd
41 lines
1.2 KiB
Go
41 lines
1.2 KiB
Go
// ================================================================
|
|
// Boolean expressions for ==, !=, >, >=, <, <=
|
|
// ================================================================
|
|
|
|
package bifs
|
|
|
|
import (
|
|
"github.com/johnkerl/miller/v6/pkg/mlrval"
|
|
)
|
|
|
|
func BIF_logical_NOT(input1 *mlrval.Mlrval) *mlrval.Mlrval {
|
|
if input1.IsBool() {
|
|
return mlrval.FromBool(!input1.AcquireBoolValue())
|
|
} else {
|
|
return mlrval.FromTypeErrorUnary("!", input1)
|
|
}
|
|
}
|
|
|
|
func BIF_logical_AND(input1, input2 *mlrval.Mlrval) *mlrval.Mlrval {
|
|
if input1.IsBool() && input2.IsBool() {
|
|
return mlrval.FromBool(input1.AcquireBoolValue() && input2.AcquireBoolValue())
|
|
} else {
|
|
return mlrval.FromTypeErrorUnary("&&", input1)
|
|
}
|
|
}
|
|
|
|
func BIF_logical_OR(input1, input2 *mlrval.Mlrval) *mlrval.Mlrval {
|
|
if input1.IsBool() && input2.IsBool() {
|
|
return mlrval.FromBool(input1.AcquireBoolValue() || input2.AcquireBoolValue())
|
|
} else {
|
|
return mlrval.FromTypeErrorUnary("||", input1)
|
|
}
|
|
}
|
|
|
|
func BIF_logical_XOR(input1, input2 *mlrval.Mlrval) *mlrval.Mlrval {
|
|
if input1.IsBool() && input2.IsBool() {
|
|
return mlrval.FromBool(input1.AcquireBoolValue() != input2.AcquireBoolValue())
|
|
} else {
|
|
return mlrval.FromTypeErrorUnary("^^", input1)
|
|
}
|
|
}
|