Documentation
¶
Overview ¶
Package constant provides functionality for working with constant values and functions. It includes a set of predefined functions that can be called dynamically, as well as utility functions for type conversion and assertion.
Package constant implements Values representing untyped Next constants and their corresponding operations.
Index ¶
- func BitLen(x Value) int
- func BoolVal(x Value) bool
- func Bytes(x Value) []byte
- func Compare(x_ Value, op token.Token, y_ Value) bool
- func Float32Val(x Value) (float32, bool)
- func Float64Val(x Value) (float64, bool)
- func Int64Val(x Value) (int64, bool)
- func Sign(x Value) int
- func StringVal(x Value) string
- func Uint64Val(x Value) (uint64, bool)
- func Underlying(value Value) any
- func Val(x Value) any
- type Func
- type FuncContext
- type Kind
- type Value
- func BinaryOp(x_ Value, op token.Token, y_ Value) Value
- func Call(ctx FuncContext, fun string, args []Value) (v Value, err error)
- func Denom(x Value) Value
- func Make(x any) Value
- func MakeBool(b bool) Value
- func MakeFloat64(x float64) Value
- func MakeFromBytes(bytes []byte) Value
- func MakeFromLiteral(lit string, tok token.Token, zero uint) Value
- func MakeInt64(x int64) Value
- func MakeString(s string) Value
- func MakeUint64(x uint64) Value
- func MakeUnknown() Value
- func Num(x Value) Value
- func Or(x, y Value) Value
- func Shift(x Value, op token.Token, s uint) Value
- func ToFloat(x Value) Value
- func ToInt(x Value) Value
- func UnaryOp(op token.Token, y Value, prec uint) Value
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BitLen ¶
BitLen returns the number of bits required to represent the absolute value x in binary representation; x must be an Int or an Unknown. If x is Unknown, the result is 0.
func BoolVal ¶
BoolVal returns the Go boolean value of x, which must be a Bool or an Unknown. If x is Unknown, the result is false.
func Bytes ¶
Bytes returns the bytes for the absolute value of x in little- endian binary representation; x must be an Int.
func Compare ¶
Compare returns the result of the comparison x op y. The comparison must be defined for the operands. If one of the operands is Unknown, the result is false.
func Float32Val ¶
Float32Val returns the nearest Go float32 value of x and whether the result is exact; x must be numeric or Unknown. For values too small (too close to 0) to represent as float32, Float32Val silently underflows to 0. If x is Unknown, the result is (0, false).
func Float64Val ¶
Float64Val returns the nearest Go float64 value of x and whether the result is exact; x must be numeric or Unknown. For values too small (too close to 0) to represent as float64, Float64Val silently underflows to 0. The result sign always matches the sign of x, even for 0. If x is Unknown, the result is (0, false).
func Int64Val ¶
Int64Val returns the Go int64 value of x and whether the result is exact; x must be an Int or an Unknown. If the result is not exact, its value is undefined. If x is Unknown, the result is (0, false).
func Sign ¶
Sign returns -1, 0, or 1 depending on whether x < 0, x == 0, or x > 0; x must be numeric or Unknown. If x is Unknown, the result is 1.
func StringVal ¶
StringVal returns the Go string value of x, which must be a String or an Unknown. If x is Unknown, the result is "".
func Uint64Val ¶
Uint64Val returns the Go uint64 value of x and whether the result is exact; x must be an Int or an Unknown. If the result is not exact, its value is undefined. If x is Unknown, the result is (0, false).
func Underlying ¶
Underlying returns the underlying value of a Value, if it is a simple type.:w
Types ¶
type Func ¶
type Func func(ctx FuncContext, args []Value) Value
Func represents a function that can be called with a FuncContext and arguments.
type FuncContext ¶
type FuncContext interface {
Debug(msg string, args ...any)
Error(args ...any)
Getenv(name string) (string, bool)
}
FuncContext represents the context in which a function is executed. It provides methods for debugging, printing, and error reporting.
type Value ¶
type Value interface {
// Kind returns the value kind.
Kind() Kind
// String returns a short, quoted (human-readable) form of the value.
// For numeric values, the result may be an approximation;
// for String values the result may be a shortened string.
// Use ExactString for a string representing a value exactly.
String() string
// ExactString returns an exact, quoted (human-readable) form of the value.
// If the Value is of Kind String, use StringVal to obtain the unquoted string.
ExactString() string
// contains filtered or unexported methods
}
Value represents the value of a Go constant.
func BinaryOp ¶
BinaryOp returns the result of the binary expression x op y. The operation must be defined for the operands. If one of the operands is Unknown, the result is Unknown. BinaryOp doesn't handle comparisons or shifts; use Compare or Shift instead.
To force integer division of Int operands, use op == token.QUO_ASSIGN instead of token.QUO; the result is guaranteed to be Int in this case. Division by zero leads to a run-time panic.
func Call ¶
func Call(ctx FuncContext, fun string, args []Value) (v Value, err error)
Call invokes the function named by fun with the provided arguments. It returns the result of the function call and any error that occurred.
func Denom ¶
Denom returns the denominator of x; x must be Int, Float, or Unknown. If x is Unknown, or if it is too large or small to represent as a fraction, the result is Unknown. Otherwise the result is an Int >= 1.
func MakeFloat64 ¶
MakeFloat64 returns the Float value for x. If x is -0.0, the result is 0.0. If x is not finite, the result is Unknown.
func MakeFromBytes ¶
MakeFromBytes returns the Int value given the bytes of its little-endian binary representation. An empty byte slice argument represents 0.
func MakeFromLiteral ¶
MakeFromLiteral returns the corresponding integer, floating-point, imaginary, character, or string value for a Go literal string. The tok value must be one of token.INT, token.FLOAT, token.IMAG, token.CHAR, or token.STRING. The final argument must be zero. If the literal string syntax is invalid, the result is Unknown.
func Num ¶
Num returns the numerator of x; x must be Int, Float, or Unknown. If x is Unknown, or if it is too large or small to represent as a fraction, the result is Unknown. Otherwise the result is an Int with the same sign as x.
func Or ¶
Or returns the result of the value of x or y like in JavaScript.
- If y is unknown, the result is x. - If x is false, the result is y. - If x is 0, the result is y. - If x is "", the result is y. - Otherwise, the result is x.
func Shift ¶
Shift returns the result of the shift expression x op s with op == token.SHL or token.SHR (<< or >>). x must be an Int or an Unknown. If x is Unknown, the result is x.
func ToFloat ¶
ToFloat converts x to a Float value if x is representable as a Float. Otherwise it returns Unknown.