diff options
author | Eduardo Julian | 2019-06-21 02:28:36 -0400 |
---|---|---|
committer | Eduardo Julian | 2019-06-21 02:28:36 -0400 |
commit | 4185f741da89db237ee68920cb155d64d2fac356 (patch) | |
tree | 2ed59e072c47a24390e3afd9f82f58245bdc11e1 /stdlib/source/lux/target/jvm/field.lux | |
parent | bbc0f5dc9dc0f810e95a20c8a986adb3839f9fdc (diff) |
Separated reading and writing binary data (lumping them together was a bad idea in the first place).
Diffstat (limited to '')
-rw-r--r-- | stdlib/source/lux/target/jvm/field.lux | 32 |
1 files changed, 14 insertions, 18 deletions
diff --git a/stdlib/source/lux/target/jvm/field.lux b/stdlib/source/lux/target/jvm/field.lux index 1535ff639..f050a13a5 100644 --- a/stdlib/source/lux/target/jvm/field.lux +++ b/stdlib/source/lux/target/jvm/field.lux @@ -12,7 +12,7 @@ [number (#+) [i64 (#+)]] [format - [".F" binary (#+ Writer Format) ("#@." monoid)]] + [".F" binary (#+ Writer) ("#@." monoid)]] [collection ["." row (#+ Row)]]] [type @@ -51,29 +51,25 @@ //index.equivalence (row.equivalence //attribute.equivalence))) -(def: #export (reader pool) +(def: #export (parser pool) (-> Pool (Parser Field)) ($_ <>.and - (get@ #binaryF.reader modifier.format) - (get@ #binaryF.reader //index.format) - (get@ #binaryF.reader //index.format) - (<2>.row/16 (//attribute.reader pool)))) + modifier.parser + //index.parser + //index.parser + (<2>.row/16 (//attribute.parser pool)))) (def: #export (writer field) (Writer Field) - (let [attribute-format (: (Format Attribute) - {## TODO: Get rid of this dirty hack ASAP - #binaryF.reader (<>.fail "") - #binaryF.writer //attribute.writer})] - (`` ($_ binaryF@compose - (~~ (template [<format> <slot>] - [((get@ #binaryF.writer <format>) (get@ <slot> field))] + (`` ($_ binaryF@compose + (~~ (template [<writer> <slot>] + [(<writer> (get@ <slot> field))] - [modifier.format #modifier] - [//index.format #name] - [//index.format #descriptor] - [(binaryF.row/16 attribute-format) #attributes])) - )))) + [modifier.writer #modifier] + [//index.writer #name] + [//index.writer #descriptor] + [(binaryF.row/16 //attribute.writer) #attributes])) + ))) (def: #export (field modifier name descriptor attributes) (-> (Modifier Field) UTF8 (Descriptor (Value Any)) (Row Attribute) |