Ejemplo n.º 1
0
func composeFloat64(expr *ast.Expr) (funcs.Float64, error) {
	uniq, err := prep(expr, types.SINGLE_DOUBLE)
	if err != nil {
		return nil, err
	}
	if expr.Terminal != nil {
		if expr.GetTerminal().Variable != nil {
			return funcs.NewFloat64Variable(), nil
		} else {
			return funcs.NewConstFloat64(expr.GetTerminal().GetDoubleValue()), nil
		}
	}
	values, err := newValues(expr.GetFunction().GetParams())
	if err != nil {
		return nil, err
	}
	return funcs.NewFloat64Func(uniq, values...)
}
Ejemplo n.º 2
0
func composeVariable(v *ast.Variable) funcs.Variable {
	switch v.Type {
	case types.SINGLE_DOUBLE:
		return funcs.NewFloat64Variable()
	case types.SINGLE_FLOAT:
		return funcs.NewFloat32Variable()
	case types.SINGLE_INT64:
		return funcs.NewInt64Variable()
	case types.SINGLE_UINT64:
		return funcs.NewUint64Variable()
	case types.SINGLE_INT32:
		return funcs.NewInt32Variable()
	case types.SINGLE_BOOL:
		return funcs.NewBoolVariable()
	case types.SINGLE_STRING:
		return funcs.NewStringVariable()
	case types.SINGLE_BYTES:
		return funcs.NewBytesVariable()
	case types.SINGLE_UINT32:
		return funcs.NewUint32Variable()
	}
	panic("unreachable")
}