miller/pkg/bifs/booleans.go
Adam Lesperance 085e831668
The package version must match the major tag version (#1654)
* Update package version

* Update makefile targets

* Update readme packages

* Remaining old packages via rg/sd
2024-09-20 12:10:11 -04:00

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)
}
}