MCPcopy Create free account
hub / github.com/brimdata/super / newRecordExpr

Function newRecordExpr

runtime/sam/expr/values.go:26–61  ·  view source on GitHub ↗
(sctx *super.Context, elems []RecordElem)

Source from the content-addressed store, hash-verified

24}
25
26func newRecordExpr(sctx *super.Context, elems []RecordElem) *recordExpr {
27 fields := make([]super.Field, 0, len(elems))
28 exprs := make([]Evaluator, 0, len(elems))
29 var optOff int
30 var nones []int
31 for _, elem := range elems {
32 var name string
33 var opt bool
34 var typ super.Type
35 switch elem := elem.(type) {
36 case *NoneElem:
37 name = elem.Name
38 typ = elem.Type
39 exprs = append(exprs, nil)
40 nones = append(nones, optOff)
41 opt = true
42 case *FieldElem:
43 name = elem.Name
44 opt = elem.Opt
45 exprs = append(exprs, elem.Expr)
46 case *SpreadElem:
47 return nil
48 }
49 fields = append(fields, super.NewFieldWithOpt(name, typ, opt))
50 if opt {
51 optOff++
52 }
53 }
54 return &recordExpr{
55 sctx: sctx,
56 builder: scode.NewBuilder(),
57 fields: fields,
58 exprs: exprs,
59 nones: nones,
60 }
61}
62
63func (r *recordExpr) Eval(this super.Value) super.Value {
64 var changed bool

Callers 1

NewRecordExprFunction · 0.85

Calls 2

NewFieldWithOptFunction · 0.92
NewBuilderFunction · 0.92

Tested by

no test coverage detected