• Eric Myhre's avatar
    quip: flesh out more methods for scalars, generally polish. · 4f7dfa72
    Eric Myhre authored
    Lots of individual things:
    
    - removed the "Begin*" functions; no need to expose that kind of raw
      operation when the callback forms are zero-cost.
    
    - renamed functions for consistent "Build" vs "Assemble".
    
    - added "Assign*" functions for all scalar kinds, which reduces the
      usage of "AbsorbError" (but also, left AbsorbError in).
    
    - renamed the ListEntry/MapEntry functions to also have "Assemble*"
      forms (still callback style).
    
    - while also adding Assign{Map|List}Entry{Kind} functions (lets you
      get rid of another callback whenever the value is a scalar).
    
    - added Assign{|MapEntry|ListEntry} functions, which shell out to
      fluent.Reflect for even more convenience (at the cost of performance).
    
    - moved higher level functions like CopyRange to a separate file.
    
    - new benchmark, for the terser form of working with scalars.
      (It's also evidently slightly faster, because fewer small function
      calls.  Slightly surprising considering how much inlining we might
      expect, but, huh.  Alright, surprise bonus; acceptable.)
    
    - example function updated to use the terser form.
    
    With these terseness improvements to handling of scalars, the overall
    SLOC count for using the quip system is now exactly on par with fluent.
    
    Varations on map key arguments (which could be PathSegment or even
    Node, in addition to string) still aren't made available this.
    Perhaps that's just okay.  If you're really up some sort of creek
    where you need that, you can still just use the
    MapAssembler.AssembleKey system directly, which can do everything.
    4f7dfa72
operations.go 485 Bytes