| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
Ecluse.Core.Registry.Json.Writer
Description
The packed form's writer: a Build that writes each value's opcodes into one scratch buffer per
read as the walk reads it, and copies each finished release or file into a blob of its own. An
object's members are written in source order, and at the object's end they are copied behind their
count in key order, the first member under each key kept.
Synopsis
- data Writer st
- newWriter :: Maybe (Entry, Entry) -> ST st (Writer st)
- data Frame
- sealValue :: Writer st -> [Text] -> ST st Packed
- data Pick
- decodePicked :: Writer st -> Pick -> Packed -> ST st Value
- decodeWhole :: Writer st -> Packed -> ST st Value
- replacedMember :: Writer st -> ST st (Maybe Value)
- discard :: Writer st -> ST st ()
Documentation
One read's scratch, and what an open object has recorded of each member: its key, where its value's bytes lie, and which earlier member under the same table key it hides.
Instances
| TableStrings Writer Source # | |||||||||||||
| Build (Writer st) (ST st (Steps (ST st) s)) Source # | A value the writer holds in its scratch, which a read passes on as a mark only. Each step runs out of line, so a read's continuations hold the writer as one pointer. | ||||||||||||
Defined in Ecluse.Core.Registry.Json.Writer Associated Types
Methods sharedString :: Writer st -> Entry -> (Built (Writer st) -> ST st (Steps (ST st) s)) -> ST st (Steps (ST st) s) Source # ownString :: Writer st -> Name -> (Built (Writer st) -> ST st (Steps (ST st) s)) -> ST st (Steps (ST st) s) Source # integer :: Writer st -> Int -> (Built (Writer st) -> ST st (Steps (ST st) s)) -> ST st (Steps (ST st) s) Source # whole :: Writer st -> Value -> (Built (Writer st) -> ST st (Steps (ST st) s)) -> ST st (Steps (ST st) s) Source # emptyContainer :: Writer st -> (Built (Writer st) -> ST st (Steps (ST st) s)) -> ST st (Steps (ST st) s) Source # openObject :: Writer st -> (Fields (Writer st) -> ST st (Steps (ST st) s)) -> ST st (Steps (ST st) s) Source # beginMember :: Writer st -> MemberKey -> Fields (Writer st) -> (Bool -> ST st (Steps (ST st) s)) -> ST st (Steps (ST st) s) Source # addMember :: Writer st -> MemberKey -> Built (Writer st) -> Fields (Writer st) -> (Fields (Writer st) -> ST st (Steps (ST st) s)) -> ST st (Steps (ST st) s) Source # dropValue :: Writer st -> Built (Writer st) -> ST st (Steps (ST st) s) -> ST st (Steps (ST st) s) Source # closeObject :: Writer st -> Fields (Writer st) -> (Built (Writer st) -> ST st (Steps (ST st) s)) -> ST st (Steps (ST st) s) Source # openArray :: Writer st -> (Items (Writer st) -> ST st (Steps (ST st) s)) -> ST st (Steps (ST st) s) Source # addItem :: Writer st -> Built (Writer st) -> Items (Writer st) -> (Items (Writer st) -> ST st (Steps (ST st) s)) -> ST st (Steps (ST st) s) Source # closeArray :: Writer st -> Int -> Items (Writer st) -> (Built (Writer st) -> ST st (Steps (ST st) s)) -> ST st (Steps (ST st) s) Source # | |||||||||||||
| type Built (Writer st) Source # | |||||||||||||
Defined in Ecluse.Core.Registry.Json.Writer | |||||||||||||
| type Fields (Writer st) Source # | |||||||||||||
Defined in Ecluse.Core.Registry.Json.Writer | |||||||||||||
| type Items (Writer st) Source # | |||||||||||||
Defined in Ecluse.Core.Registry.Json.Writer | |||||||||||||
newWriter :: Maybe (Entry, Entry) -> ST st (Writer st) Source #
A writer for one read. Each top-level object also holds the given member, a table key and a
string, in place of its own under that key. An object read in Keep mode keeps its own instead.
sealValue :: Writer st -> [Text] -> ST st Packed Source #
Copy the value the writer holds into a packed value, and empty the scratch for the next one. Its hole is the string at the path of member names, when the value holds one there.
Which parts of a packed value a decode needs: all of it, or the named members of an object.
decodePicked :: Writer st -> Pick -> Packed -> ST st Value Source #
The parts of a packed value the pick names, as aeson's tree sharing the read's strings. A value that is not an object where the pick names members decodes whole.
decodeWhole :: Writer st -> Packed -> ST st Value Source #
A packed value decoded whole, sharing the read's strings.