├── .github └── workflows │ └── nodejs.yml ├── .gitignore ├── .npmignore ├── .travis.yml ├── LICENSE ├── Makefile ├── README.md ├── arguments.js ├── async └── parser.js ├── benchmark ├── args.js ├── buffer.js ├── case.js ├── fiddle │ └── objects-vs-closures.js ├── indexof.js ├── jit │ └── objects-vs-closures.js └── switch.js ├── countdown.js ├── declare.js ├── design.md ├── diary.md ├── edify.md ├── example.js ├── fiddle ├── pack.js ├── unpack.js └── unsign.js ├── function.js ├── generate.js ├── hash.js ├── hex.js ├── homogeneous.js ├── inline.js ├── inlines.js ├── join.js ├── language.js ├── language.md ├── lookup.js ├── map.js ├── notes ├── examples.c └── utf8.js ├── orphaned.md ├── pack.js ├── package.json ├── packetize.bin.js ├── packetize.js ├── parse.all.js ├── parse.inc.js ├── print.js ├── protocol ├── mqtt.js └── mqtt.packet.js ├── require.js ├── required.js ├── serialize.all.js ├── serialize.inc.js ├── sizeof.js ├── sync ├── parser.js └── serializer.js ├── test ├── bin │ └── packetize.bin.t.js ├── compiler │ ├── function.t.js │ └── require.t.js ├── cycle │ ├── absent.t.js │ ├── accumulator.t.js │ ├── array.t.js │ ├── assert.t.js │ ├── bigint.t.js │ ├── conditional.t.js │ ├── cycle.js │ ├── fixed.t.js │ ├── ieee.t.js │ ├── include.t.js │ ├── inline.t.js │ ├── integer.t.js │ ├── literal.t.js │ ├── lookup.t.js │ ├── packed.t.js │ ├── require.t.js │ ├── structure.t.js │ ├── switch.t.js │ ├── terminated.t.js │ └── twiddle.js ├── generated.js ├── generated │ ├── absent │ │ ├── array.lookup.js │ │ ├── array.parser.all.js │ │ ├── array.parser.bff.js │ │ ├── array.parser.chk.js │ │ ├── array.parser.inc.js │ │ ├── array.serializer.all.js │ │ ├── array.serializer.bff.js │ │ ├── array.serializer.chk.js │ │ ├── array.serializer.inc.js │ │ ├── array.sizeof.js │ │ ├── null.lookup.js │ │ ├── null.parser.all.js │ │ ├── null.parser.bff.js │ │ ├── null.parser.chk.js │ │ ├── null.parser.inc.js │ │ ├── null.serializer.all.js │ │ ├── null.serializer.bff.js │ │ ├── null.serializer.chk.js │ │ ├── null.serializer.inc.js │ │ ├── null.sizeof.js │ │ ├── switch.lookup.js │ │ ├── switch.parser.all.js │ │ ├── switch.parser.bff.js │ │ ├── switch.parser.chk.js │ │ ├── switch.parser.inc.js │ │ ├── switch.serializer.all.js │ │ ├── switch.serializer.bff.js │ │ ├── switch.serializer.chk.js │ │ ├── switch.serializer.inc.js │ │ └── switch.sizeof.js │ ├── accumulator │ │ ├── checksum.lookup.js │ │ ├── checksum.parser.all.js │ │ ├── checksum.parser.bff.js │ │ ├── checksum.parser.chk.js │ │ ├── checksum.parser.inc.js │ │ ├── checksum.serializer.all.js │ │ ├── checksum.serializer.bff.js │ │ ├── checksum.serializer.chk.js │ │ ├── checksum.serializer.inc.js │ │ ├── checksum.sizeof.js │ │ ├── conditional.lookup.js │ │ ├── conditional.parser.all.js │ │ ├── conditional.parser.bff.js │ │ ├── conditional.parser.chk.js │ │ ├── conditional.parser.inc.js │ │ ├── conditional.serializer.all.js │ │ ├── conditional.serializer.bff.js │ │ ├── conditional.serializer.chk.js │ │ ├── conditional.serializer.inc.js │ │ ├── conditional.sizeof.js │ │ ├── elided.lookup.js │ │ ├── elided.parser.all.js │ │ ├── elided.parser.bff.js │ │ ├── elided.parser.chk.js │ │ ├── elided.parser.inc.js │ │ ├── elided.serializer.all.js │ │ ├── elided.serializer.bff.js │ │ ├── elided.serializer.chk.js │ │ ├── elided.serializer.inc.js │ │ ├── elided.sizeof.js │ │ ├── function.lookup.js │ │ ├── function.parser.all.js │ │ ├── function.parser.bff.js │ │ ├── function.parser.chk.js │ │ ├── function.parser.inc.js │ │ ├── function.serializer.all.js │ │ ├── function.serializer.bff.js │ │ ├── function.serializer.chk.js │ │ ├── function.serializer.inc.js │ │ ├── function.sizeof.js │ │ ├── object.lookup.js │ │ ├── object.parser.all.js │ │ ├── object.parser.bff.js │ │ ├── object.parser.chk.js │ │ ├── object.parser.inc.js │ │ ├── object.serializer.all.js │ │ ├── object.serializer.bff.js │ │ ├── object.serializer.chk.js │ │ ├── object.serializer.inc.js │ │ ├── object.sizeof.js │ │ ├── regex.lookup.js │ │ ├── regex.parser.all.js │ │ ├── regex.parser.bff.js │ │ ├── regex.parser.chk.js │ │ ├── regex.parser.inc.js │ │ ├── regex.serializer.all.js │ │ ├── regex.serializer.bff.js │ │ ├── regex.serializer.chk.js │ │ ├── regex.serializer.inc.js │ │ ├── regex.sizeof.js │ │ ├── switch.lookup.js │ │ ├── switch.parser.all.js │ │ ├── switch.parser.bff.js │ │ ├── switch.parser.chk.js │ │ ├── switch.parser.inc.js │ │ ├── switch.serializer.all.js │ │ ├── switch.serializer.bff.js │ │ ├── switch.serializer.chk.js │ │ ├── switch.serializer.inc.js │ │ └── switch.sizeof.js │ ├── array │ │ ├── chunked.lookup.js │ │ ├── chunked.parser.all.js │ │ ├── chunked.parser.bff.js │ │ ├── chunked.parser.chk.js │ │ ├── chunked.parser.inc.js │ │ ├── chunked.serializer.all.js │ │ ├── chunked.serializer.bff.js │ │ ├── chunked.serializer.chk.js │ │ ├── chunked.serializer.inc.js │ │ ├── chunked.sizeof.js │ │ ├── concat.lookup.js │ │ ├── concat.parser.all.js │ │ ├── concat.parser.bff.js │ │ ├── concat.parser.chk.js │ │ ├── concat.parser.inc.js │ │ ├── concat.serializer.all.js │ │ ├── concat.serializer.bff.js │ │ ├── concat.serializer.chk.js │ │ ├── concat.serializer.inc.js │ │ ├── concat.sizeof.js │ │ ├── conditional.lookup.js │ │ ├── conditional.parser.all.js │ │ ├── conditional.parser.bff.js │ │ ├── conditional.parser.chk.js │ │ ├── conditional.parser.inc.js │ │ ├── conditional.serializer.all.js │ │ ├── conditional.serializer.bff.js │ │ ├── conditional.serializer.chk.js │ │ ├── conditional.serializer.inc.js │ │ ├── conditional.sizeof.js │ │ ├── conditional │ │ │ ├── bytes.lookup.js │ │ │ ├── bytes.parser.all.js │ │ │ ├── bytes.parser.bff.js │ │ │ ├── bytes.parser.chk.js │ │ │ ├── bytes.parser.inc.js │ │ │ ├── bytes.serializer.all.js │ │ │ ├── bytes.serializer.bff.js │ │ │ ├── bytes.serializer.chk.js │ │ │ ├── bytes.serializer.inc.js │ │ │ ├── bytes.sizeof.js │ │ │ ├── chunked.lookup.js │ │ │ ├── chunked.parser.all.js │ │ │ ├── chunked.parser.bff.js │ │ │ ├── chunked.parser.chk.js │ │ │ ├── chunked.parser.inc.js │ │ │ ├── chunked.serializer.all.js │ │ │ ├── chunked.serializer.bff.js │ │ │ ├── chunked.serializer.chk.js │ │ │ ├── chunked.serializer.inc.js │ │ │ ├── chunked.sizeof.js │ │ │ ├── concat.lookup.js │ │ │ ├── concat.parser.all.js │ │ │ ├── concat.parser.bff.js │ │ │ ├── concat.parser.chk.js │ │ │ ├── concat.parser.inc.js │ │ │ ├── concat.serializer.all.js │ │ │ ├── concat.serializer.bff.js │ │ │ ├── concat.serializer.chk.js │ │ │ ├── concat.serializer.inc.js │ │ │ ├── concat.sizeof.js │ │ │ ├── sip.lookup.js │ │ │ ├── sip.parser.all.js │ │ │ ├── sip.parser.bff.js │ │ │ ├── sip.parser.chk.js │ │ │ ├── sip.parser.inc.js │ │ │ ├── sip.serializer.all.js │ │ │ ├── sip.serializer.bff.js │ │ │ ├── sip.serializer.chk.js │ │ │ ├── sip.serializer.inc.js │ │ │ ├── sip.sizeof.js │ │ │ ├── split.lookup.js │ │ │ ├── split.parser.all.js │ │ │ ├── split.parser.bff.js │ │ │ ├── split.parser.chk.js │ │ │ ├── split.parser.inc.js │ │ │ ├── split.serializer.all.js │ │ │ ├── split.serializer.bff.js │ │ │ ├── split.serializer.chk.js │ │ │ ├── split.serializer.inc.js │ │ │ └── split.sizeof.js │ │ ├── fixed.lookup.js │ │ ├── fixed.parser.all.js │ │ ├── fixed.parser.bff.js │ │ ├── fixed.parser.chk.js │ │ ├── fixed.parser.inc.js │ │ ├── fixed.serializer.all.js │ │ ├── fixed.serializer.bff.js │ │ ├── fixed.serializer.chk.js │ │ ├── fixed.serializer.inc.js │ │ ├── fixed.sizeof.js │ │ ├── include.lookup.js │ │ ├── include.parser.all.js │ │ ├── include.parser.bff.js │ │ ├── include.parser.chk.js │ │ ├── include.parser.inc.js │ │ ├── include.serializer.all.js │ │ ├── include.serializer.bff.js │ │ ├── include.serializer.chk.js │ │ ├── include.serializer.inc.js │ │ ├── include.sizeof.js │ │ ├── multiple.lookup.js │ │ ├── multiple.parser.all.js │ │ ├── multiple.parser.bff.js │ │ ├── multiple.parser.chk.js │ │ ├── multiple.parser.inc.js │ │ ├── multiple.serializer.all.js │ │ ├── multiple.serializer.bff.js │ │ ├── multiple.serializer.chk.js │ │ ├── multiple.serializer.inc.js │ │ ├── multiple.sizeof.js │ │ ├── nested.lookup.js │ │ ├── nested.parser.all.js │ │ ├── nested.parser.bff.js │ │ ├── nested.parser.chk.js │ │ ├── nested.parser.inc.js │ │ ├── nested.serializer.all.js │ │ ├── nested.serializer.bff.js │ │ ├── nested.serializer.chk.js │ │ ├── nested.serializer.inc.js │ │ ├── nested.sizeof.js │ │ ├── object.lookup.js │ │ ├── object.parser.all.js │ │ ├── object.parser.bff.js │ │ ├── object.parser.chk.js │ │ ├── object.parser.inc.js │ │ ├── object.serializer.all.js │ │ ├── object.serializer.bff.js │ │ ├── object.serializer.chk.js │ │ ├── object.serializer.inc.js │ │ ├── object.sizeof.js │ │ ├── objects.lookup.js │ │ ├── objects.parser.all.js │ │ ├── objects.parser.bff.js │ │ ├── objects.parser.chk.js │ │ ├── objects.parser.inc.js │ │ ├── objects.serializer.all.js │ │ ├── objects.serializer.bff.js │ │ ├── objects.serializer.chk.js │ │ ├── objects.serializer.inc.js │ │ ├── objects.sizeof.js │ │ ├── spread.lookup.js │ │ ├── spread.parser.all.js │ │ ├── spread.parser.bff.js │ │ ├── spread.parser.chk.js │ │ ├── spread.parser.inc.js │ │ ├── spread.serializer.all.js │ │ ├── spread.serializer.bff.js │ │ ├── spread.serializer.chk.js │ │ ├── spread.serializer.inc.js │ │ ├── spread.sizeof.js │ │ ├── switch │ │ │ ├── bytes.lookup.js │ │ │ ├── bytes.parser.all.js │ │ │ ├── bytes.parser.bff.js │ │ │ ├── bytes.parser.chk.js │ │ │ ├── bytes.parser.inc.js │ │ │ ├── bytes.serializer.all.js │ │ │ ├── bytes.serializer.bff.js │ │ │ ├── bytes.serializer.chk.js │ │ │ ├── bytes.serializer.inc.js │ │ │ ├── bytes.sizeof.js │ │ │ ├── chunked.lookup.js │ │ │ ├── chunked.parser.all.js │ │ │ ├── chunked.parser.bff.js │ │ │ ├── chunked.parser.chk.js │ │ │ ├── chunked.parser.inc.js │ │ │ ├── chunked.serializer.all.js │ │ │ ├── chunked.serializer.bff.js │ │ │ ├── chunked.serializer.chk.js │ │ │ ├── chunked.serializer.inc.js │ │ │ ├── chunked.sizeof.js │ │ │ ├── concat.lookup.js │ │ │ ├── concat.parser.all.js │ │ │ ├── concat.parser.bff.js │ │ │ ├── concat.parser.chk.js │ │ │ ├── concat.parser.inc.js │ │ │ ├── concat.serializer.all.js │ │ │ ├── concat.serializer.bff.js │ │ │ ├── concat.serializer.chk.js │ │ │ ├── concat.serializer.inc.js │ │ │ └── concat.sizeof.js │ │ ├── variable.lookup.js │ │ ├── variable.parser.all.js │ │ ├── variable.parser.bff.js │ │ ├── variable.parser.chk.js │ │ ├── variable.parser.inc.js │ │ ├── variable.serializer.all.js │ │ ├── variable.serializer.bff.js │ │ ├── variable.serializer.chk.js │ │ ├── variable.serializer.inc.js │ │ ├── variable.sizeof.js │ │ ├── words.lookup.js │ │ ├── words.parser.all.js │ │ ├── words.parser.bff.js │ │ ├── words.parser.chk.js │ │ ├── words.parser.inc.js │ │ ├── words.serializer.all.js │ │ ├── words.serializer.bff.js │ │ ├── words.serializer.chk.js │ │ ├── words.serializer.inc.js │ │ ├── words.sizeof.js │ │ ├── wrapped.lookup.js │ │ ├── wrapped.parser.all.js │ │ ├── wrapped.parser.bff.js │ │ ├── wrapped.parser.chk.js │ │ ├── wrapped.parser.inc.js │ │ ├── wrapped.serializer.all.js │ │ ├── wrapped.serializer.bff.js │ │ ├── wrapped.serializer.chk.js │ │ ├── wrapped.serializer.inc.js │ │ └── wrapped.sizeof.js │ ├── assert │ │ ├── dollarunder.lookup.js │ │ ├── dollarunder.parser.all.js │ │ ├── dollarunder.parser.bff.js │ │ ├── dollarunder.parser.chk.js │ │ ├── dollarunder.parser.inc.js │ │ ├── dollarunder.serializer.all.js │ │ ├── dollarunder.serializer.bff.js │ │ ├── dollarunder.serializer.chk.js │ │ ├── dollarunder.serializer.inc.js │ │ ├── dollarunder.sizeof.js │ │ ├── named.lookup.js │ │ ├── named.parser.all.js │ │ ├── named.parser.bff.js │ │ ├── named.parser.chk.js │ │ ├── named.parser.inc.js │ │ ├── named.serializer.all.js │ │ ├── named.serializer.bff.js │ │ ├── named.serializer.chk.js │ │ ├── named.serializer.inc.js │ │ ├── named.sizeof.js │ │ ├── positional.lookup.js │ │ ├── positional.parser.all.js │ │ ├── positional.parser.bff.js │ │ ├── positional.parser.chk.js │ │ ├── positional.parser.inc.js │ │ ├── positional.serializer.all.js │ │ ├── positional.serializer.bff.js │ │ ├── positional.serializer.chk.js │ │ ├── positional.serializer.inc.js │ │ └── positional.sizeof.js │ ├── bigint │ │ ├── be │ │ │ ├── compliment.lookup.js │ │ │ ├── compliment.parser.all.js │ │ │ ├── compliment.parser.bff.js │ │ │ ├── compliment.parser.chk.js │ │ │ ├── compliment.parser.inc.js │ │ │ ├── compliment.serializer.all.js │ │ │ ├── compliment.serializer.bff.js │ │ │ ├── compliment.serializer.chk.js │ │ │ ├── compliment.serializer.inc.js │ │ │ ├── compliment.sizeof.js │ │ │ ├── long.lookup.js │ │ │ ├── long.parser.all.js │ │ │ ├── long.parser.bff.js │ │ │ ├── long.parser.chk.js │ │ │ ├── long.parser.inc.js │ │ │ ├── long.serializer.all.js │ │ │ ├── long.serializer.bff.js │ │ │ ├── long.serializer.chk.js │ │ │ ├── long.serializer.inc.js │ │ │ └── long.sizeof.js │ │ └── le │ │ │ ├── alternate.lookup.js │ │ │ ├── alternate.parser.all.js │ │ │ ├── alternate.parser.bff.js │ │ │ ├── alternate.parser.chk.js │ │ │ ├── alternate.parser.inc.js │ │ │ ├── alternate.serializer.all.js │ │ │ ├── alternate.serializer.bff.js │ │ │ ├── alternate.serializer.chk.js │ │ │ ├── alternate.serializer.inc.js │ │ │ ├── alternate.sizeof.js │ │ │ ├── compliment.lookup.js │ │ │ ├── compliment.parser.all.js │ │ │ ├── compliment.parser.bff.js │ │ │ ├── compliment.parser.chk.js │ │ │ ├── compliment.parser.inc.js │ │ │ ├── compliment.serializer.all.js │ │ │ ├── compliment.serializer.bff.js │ │ │ ├── compliment.serializer.chk.js │ │ │ ├── compliment.serializer.inc.js │ │ │ ├── compliment.sizeof.js │ │ │ ├── long.lookup.js │ │ │ ├── long.parser.all.js │ │ │ ├── long.parser.bff.js │ │ │ ├── long.parser.chk.js │ │ │ ├── long.parser.inc.js │ │ │ ├── long.serializer.all.js │ │ │ ├── long.serializer.bff.js │ │ │ ├── long.serializer.chk.js │ │ │ ├── long.serializer.inc.js │ │ │ └── long.sizeof.js │ ├── conditional │ │ ├── bidirectional.lookup.js │ │ ├── bidirectional.parser.all.js │ │ ├── bidirectional.parser.bff.js │ │ ├── bidirectional.parser.chk.js │ │ ├── bidirectional.parser.inc.js │ │ ├── bidirectional.serializer.all.js │ │ ├── bidirectional.serializer.bff.js │ │ ├── bidirectional.serializer.chk.js │ │ ├── bidirectional.serializer.inc.js │ │ ├── bidirectional.sizeof.js │ │ ├── mqtt.lookup.js │ │ ├── mqtt.parser.all.js │ │ ├── mqtt.parser.bff.js │ │ ├── mqtt.parser.chk.js │ │ ├── mqtt.parser.inc.js │ │ ├── mqtt.serializer.all.js │ │ ├── mqtt.serializer.bff.js │ │ ├── mqtt.serializer.chk.js │ │ ├── mqtt.serializer.inc.js │ │ ├── mqtt.sizeof.js │ │ ├── mysql.lookup.js │ │ ├── mysql.parser.all.js │ │ ├── mysql.parser.bff.js │ │ ├── mysql.parser.chk.js │ │ ├── mysql.parser.inc.js │ │ ├── mysql.serializer.all.js │ │ ├── mysql.serializer.bff.js │ │ ├── mysql.serializer.chk.js │ │ ├── mysql.serializer.inc.js │ │ ├── mysql.sizeof.js │ │ ├── packed │ │ │ ├── named.lookup.js │ │ │ ├── named.parser.all.js │ │ │ ├── named.parser.bff.js │ │ │ ├── named.parser.chk.js │ │ │ ├── named.parser.inc.js │ │ │ ├── named.serializer.all.js │ │ │ ├── named.serializer.bff.js │ │ │ ├── named.serializer.chk.js │ │ │ ├── named.serializer.inc.js │ │ │ ├── named.sizeof.js │ │ │ ├── positional.lookup.js │ │ │ ├── positional.parser.all.js │ │ │ ├── positional.parser.bff.js │ │ │ ├── positional.parser.chk.js │ │ │ ├── positional.parser.inc.js │ │ │ ├── positional.serializer.all.js │ │ │ ├── positional.serializer.bff.js │ │ │ ├── positional.serializer.chk.js │ │ │ ├── positional.serializer.inc.js │ │ │ └── positional.sizeof.js │ │ ├── sipless.lookup.js │ │ ├── sipless.parser.all.js │ │ ├── sipless.parser.bff.js │ │ ├── sipless.parser.chk.js │ │ ├── sipless.parser.inc.js │ │ ├── sipless.serializer.all.js │ │ ├── sipless.serializer.bff.js │ │ ├── sipless.serializer.chk.js │ │ ├── sipless.serializer.inc.js │ │ ├── sipless.sizeof.js │ │ ├── unconditional │ │ │ ├── sip.lookup.js │ │ │ ├── sip.parser.all.js │ │ │ ├── sip.parser.bff.js │ │ │ ├── sip.parser.chk.js │ │ │ ├── sip.parser.inc.js │ │ │ ├── sip.serializer.all.js │ │ │ ├── sip.serializer.bff.js │ │ │ ├── sip.serializer.chk.js │ │ │ ├── sip.serializer.inc.js │ │ │ ├── sip.sizeof.js │ │ │ ├── split.lookup.js │ │ │ ├── split.parser.all.js │ │ │ ├── split.parser.bff.js │ │ │ ├── split.parser.chk.js │ │ │ ├── split.parser.inc.js │ │ │ ├── split.serializer.all.js │ │ │ ├── split.serializer.bff.js │ │ │ ├── split.serializer.chk.js │ │ │ ├── split.serializer.inc.js │ │ │ └── split.sizeof.js │ │ ├── vivify.lookup.js │ │ ├── vivify.parser.all.js │ │ ├── vivify.parser.bff.js │ │ ├── vivify.parser.chk.js │ │ ├── vivify.parser.inc.js │ │ ├── vivify.serializer.all.js │ │ ├── vivify.serializer.bff.js │ │ ├── vivify.serializer.chk.js │ │ ├── vivify.serializer.inc.js │ │ └── vivify.sizeof.js │ ├── fixed │ │ ├── calculated │ │ │ ├── chunked │ │ │ │ ├── multiple.lookup.js │ │ │ │ ├── multiple.parser.all.js │ │ │ │ ├── multiple.parser.bff.js │ │ │ │ ├── multiple.parser.chk.js │ │ │ │ ├── multiple.parser.inc.js │ │ │ │ ├── multiple.serializer.all.js │ │ │ │ ├── multiple.serializer.bff.js │ │ │ │ ├── multiple.serializer.chk.js │ │ │ │ ├── multiple.serializer.inc.js │ │ │ │ ├── multiple.sizeof.js │ │ │ │ ├── single.lookup.js │ │ │ │ ├── single.parser.all.js │ │ │ │ ├── single.parser.bff.js │ │ │ │ ├── single.parser.chk.js │ │ │ │ ├── single.parser.inc.js │ │ │ │ ├── single.serializer.all.js │ │ │ │ ├── single.serializer.bff.js │ │ │ │ ├── single.serializer.chk.js │ │ │ │ ├── single.serializer.inc.js │ │ │ │ ├── single.sizeof.js │ │ │ │ ├── unpadded.lookup.js │ │ │ │ ├── unpadded.parser.all.js │ │ │ │ ├── unpadded.parser.bff.js │ │ │ │ ├── unpadded.parser.chk.js │ │ │ │ ├── unpadded.parser.inc.js │ │ │ │ ├── unpadded.serializer.all.js │ │ │ │ ├── unpadded.serializer.bff.js │ │ │ │ ├── unpadded.serializer.chk.js │ │ │ │ ├── unpadded.serializer.inc.js │ │ │ │ └── unpadded.sizeof.js │ │ │ ├── concat │ │ │ │ ├── multiple.lookup.js │ │ │ │ ├── multiple.parser.all.js │ │ │ │ ├── multiple.parser.bff.js │ │ │ │ ├── multiple.parser.chk.js │ │ │ │ ├── multiple.parser.inc.js │ │ │ │ ├── multiple.serializer.all.js │ │ │ │ ├── multiple.serializer.bff.js │ │ │ │ ├── multiple.serializer.chk.js │ │ │ │ ├── multiple.serializer.inc.js │ │ │ │ ├── multiple.sizeof.js │ │ │ │ ├── single.lookup.js │ │ │ │ ├── single.parser.all.js │ │ │ │ ├── single.parser.bff.js │ │ │ │ ├── single.parser.chk.js │ │ │ │ ├── single.parser.inc.js │ │ │ │ ├── single.serializer.all.js │ │ │ │ ├── single.serializer.bff.js │ │ │ │ ├── single.serializer.chk.js │ │ │ │ ├── single.serializer.inc.js │ │ │ │ ├── single.sizeof.js │ │ │ │ ├── unpadded.lookup.js │ │ │ │ ├── unpadded.parser.all.js │ │ │ │ ├── unpadded.parser.bff.js │ │ │ │ ├── unpadded.parser.chk.js │ │ │ │ ├── unpadded.parser.inc.js │ │ │ │ ├── unpadded.serializer.all.js │ │ │ │ ├── unpadded.serializer.bff.js │ │ │ │ ├── unpadded.serializer.chk.js │ │ │ │ ├── unpadded.serializer.inc.js │ │ │ │ └── unpadded.sizeof.js │ │ │ ├── nested │ │ │ │ ├── array.lookup.js │ │ │ │ ├── array.parser.all.js │ │ │ │ ├── array.parser.bff.js │ │ │ │ ├── array.parser.chk.js │ │ │ │ ├── array.parser.inc.js │ │ │ │ ├── array.serializer.all.js │ │ │ │ ├── array.serializer.bff.js │ │ │ │ ├── array.serializer.chk.js │ │ │ │ ├── array.serializer.inc.js │ │ │ │ └── array.sizeof.js │ │ │ └── words │ │ │ │ ├── multiple.lookup.js │ │ │ │ ├── multiple.parser.all.js │ │ │ │ ├── multiple.parser.bff.js │ │ │ │ ├── multiple.parser.chk.js │ │ │ │ ├── multiple.parser.inc.js │ │ │ │ ├── multiple.serializer.all.js │ │ │ │ ├── multiple.serializer.bff.js │ │ │ │ ├── multiple.serializer.chk.js │ │ │ │ ├── multiple.serializer.inc.js │ │ │ │ ├── multiple.sizeof.js │ │ │ │ ├── single.lookup.js │ │ │ │ ├── single.parser.all.js │ │ │ │ ├── single.parser.bff.js │ │ │ │ ├── single.parser.chk.js │ │ │ │ ├── single.parser.inc.js │ │ │ │ ├── single.serializer.all.js │ │ │ │ ├── single.serializer.bff.js │ │ │ │ ├── single.serializer.chk.js │ │ │ │ ├── single.serializer.inc.js │ │ │ │ ├── single.sizeof.js │ │ │ │ ├── unpadded.lookup.js │ │ │ │ ├── unpadded.parser.all.js │ │ │ │ ├── unpadded.parser.bff.js │ │ │ │ ├── unpadded.parser.chk.js │ │ │ │ ├── unpadded.parser.inc.js │ │ │ │ ├── unpadded.serializer.all.js │ │ │ │ ├── unpadded.serializer.bff.js │ │ │ │ ├── unpadded.serializer.chk.js │ │ │ │ ├── unpadded.serializer.inc.js │ │ │ │ └── unpadded.sizeof.js │ │ └── static │ │ │ ├── chunked │ │ │ ├── multiple.lookup.js │ │ │ ├── multiple.parser.all.js │ │ │ ├── multiple.parser.bff.js │ │ │ ├── multiple.parser.chk.js │ │ │ ├── multiple.parser.inc.js │ │ │ ├── multiple.serializer.all.js │ │ │ ├── multiple.serializer.bff.js │ │ │ ├── multiple.serializer.chk.js │ │ │ ├── multiple.serializer.inc.js │ │ │ ├── multiple.sizeof.js │ │ │ ├── single.lookup.js │ │ │ ├── single.parser.all.js │ │ │ ├── single.parser.bff.js │ │ │ ├── single.parser.chk.js │ │ │ ├── single.parser.inc.js │ │ │ ├── single.serializer.all.js │ │ │ ├── single.serializer.bff.js │ │ │ ├── single.serializer.chk.js │ │ │ ├── single.serializer.inc.js │ │ │ ├── single.sizeof.js │ │ │ ├── unpadded.lookup.js │ │ │ ├── unpadded.parser.all.js │ │ │ ├── unpadded.parser.bff.js │ │ │ ├── unpadded.parser.chk.js │ │ │ ├── unpadded.parser.inc.js │ │ │ ├── unpadded.serializer.all.js │ │ │ ├── unpadded.serializer.bff.js │ │ │ ├── unpadded.serializer.chk.js │ │ │ ├── unpadded.serializer.inc.js │ │ │ └── unpadded.sizeof.js │ │ │ ├── concat │ │ │ ├── multiple.lookup.js │ │ │ ├── multiple.parser.all.js │ │ │ ├── multiple.parser.bff.js │ │ │ ├── multiple.parser.chk.js │ │ │ ├── multiple.parser.inc.js │ │ │ ├── multiple.serializer.all.js │ │ │ ├── multiple.serializer.bff.js │ │ │ ├── multiple.serializer.chk.js │ │ │ ├── multiple.serializer.inc.js │ │ │ ├── multiple.sizeof.js │ │ │ ├── single.lookup.js │ │ │ ├── single.parser.all.js │ │ │ ├── single.parser.bff.js │ │ │ ├── single.parser.chk.js │ │ │ ├── single.parser.inc.js │ │ │ ├── single.serializer.all.js │ │ │ ├── single.serializer.bff.js │ │ │ ├── single.serializer.chk.js │ │ │ ├── single.serializer.inc.js │ │ │ ├── single.sizeof.js │ │ │ ├── unpadded.lookup.js │ │ │ ├── unpadded.parser.all.js │ │ │ ├── unpadded.parser.bff.js │ │ │ ├── unpadded.parser.chk.js │ │ │ ├── unpadded.parser.inc.js │ │ │ ├── unpadded.serializer.all.js │ │ │ ├── unpadded.serializer.bff.js │ │ │ ├── unpadded.serializer.chk.js │ │ │ ├── unpadded.serializer.inc.js │ │ │ └── unpadded.sizeof.js │ │ │ ├── nested │ │ │ ├── array.lookup.js │ │ │ ├── array.parser.all.js │ │ │ ├── array.parser.bff.js │ │ │ ├── array.parser.chk.js │ │ │ ├── array.parser.inc.js │ │ │ ├── array.serializer.all.js │ │ │ ├── array.serializer.bff.js │ │ │ ├── array.serializer.chk.js │ │ │ ├── array.serializer.inc.js │ │ │ └── array.sizeof.js │ │ │ └── words │ │ │ ├── multiple.lookup.js │ │ │ ├── multiple.parser.all.js │ │ │ ├── multiple.parser.bff.js │ │ │ ├── multiple.parser.inc.js │ │ │ ├── multiple.serializer.all.js │ │ │ ├── multiple.serializer.bff.js │ │ │ ├── multiple.serializer.inc.js │ │ │ ├── multiple.sizeof.js │ │ │ ├── single.lookup.js │ │ │ ├── single.parser.all.js │ │ │ ├── single.parser.bff.js │ │ │ ├── single.parser.chk.js │ │ │ ├── single.parser.inc.js │ │ │ ├── single.serializer.all.js │ │ │ ├── single.serializer.bff.js │ │ │ ├── single.serializer.chk.js │ │ │ ├── single.serializer.inc.js │ │ │ ├── single.sizeof.js │ │ │ ├── unpadded.lookup.js │ │ │ ├── unpadded.parser.all.js │ │ │ ├── unpadded.parser.bff.js │ │ │ ├── unpadded.parser.chk.js │ │ │ ├── unpadded.parser.inc.js │ │ │ ├── unpadded.serializer.all.js │ │ │ ├── unpadded.serializer.bff.js │ │ │ ├── unpadded.serializer.chk.js │ │ │ ├── unpadded.serializer.inc.js │ │ │ └── unpadded.sizeof.js │ ├── ieee │ │ ├── be │ │ │ ├── double.lookup.js │ │ │ ├── double.parser.all.js │ │ │ ├── double.parser.bff.js │ │ │ ├── double.parser.chk.js │ │ │ ├── double.parser.inc.js │ │ │ ├── double.serializer.all.js │ │ │ ├── double.serializer.bff.js │ │ │ ├── double.serializer.chk.js │ │ │ ├── double.serializer.inc.js │ │ │ ├── double.sizeof.js │ │ │ ├── float.lookup.js │ │ │ ├── float.parser.all.js │ │ │ ├── float.parser.bff.js │ │ │ ├── float.parser.chk.js │ │ │ ├── float.parser.inc.js │ │ │ ├── float.serializer.all.js │ │ │ ├── float.serializer.bff.js │ │ │ ├── float.serializer.chk.js │ │ │ ├── float.serializer.inc.js │ │ │ └── float.sizeof.js │ │ ├── le │ │ │ ├── double.lookup.js │ │ │ ├── double.parser.all.js │ │ │ ├── double.parser.bff.js │ │ │ ├── double.parser.chk.js │ │ │ ├── double.parser.inc.js │ │ │ ├── double.serializer.all.js │ │ │ ├── double.serializer.bff.js │ │ │ ├── double.serializer.chk.js │ │ │ ├── double.serializer.inc.js │ │ │ ├── double.sizeof.js │ │ │ ├── float.lookup.js │ │ │ ├── float.parser.all.js │ │ │ ├── float.parser.bff.js │ │ │ ├── float.parser.chk.js │ │ │ ├── float.parser.inc.js │ │ │ ├── float.serializer.all.js │ │ │ ├── float.serializer.bff.js │ │ │ ├── float.serializer.chk.js │ │ │ ├── float.serializer.inc.js │ │ │ └── float.sizeof.js │ │ └── specified │ │ │ ├── be │ │ │ ├── double.lookup.js │ │ │ ├── double.parser.all.js │ │ │ ├── double.parser.bff.js │ │ │ ├── double.parser.chk.js │ │ │ ├── double.parser.inc.js │ │ │ ├── double.serializer.all.js │ │ │ ├── double.serializer.bff.js │ │ │ ├── double.serializer.chk.js │ │ │ ├── double.serializer.inc.js │ │ │ ├── double.sizeof.js │ │ │ ├── float.lookup.js │ │ │ ├── float.parser.all.js │ │ │ ├── float.parser.bff.js │ │ │ ├── float.parser.chk.js │ │ │ ├── float.parser.inc.js │ │ │ ├── float.serializer.all.js │ │ │ ├── float.serializer.bff.js │ │ │ ├── float.serializer.chk.js │ │ │ ├── float.serializer.inc.js │ │ │ └── float.sizeof.js │ │ │ └── le │ │ │ ├── double.lookup.js │ │ │ ├── double.parser.all.js │ │ │ ├── double.parser.bff.js │ │ │ ├── double.parser.chk.js │ │ │ ├── double.parser.inc.js │ │ │ ├── double.serializer.all.js │ │ │ ├── double.serializer.bff.js │ │ │ ├── double.serializer.chk.js │ │ │ ├── double.serializer.inc.js │ │ │ ├── double.sizeof.js │ │ │ ├── float.lookup.js │ │ │ ├── float.parser.all.js │ │ │ ├── float.parser.bff.js │ │ │ ├── float.parser.chk.js │ │ │ ├── float.parser.inc.js │ │ │ ├── float.serializer.all.js │ │ │ ├── float.serializer.bff.js │ │ │ ├── float.serializer.chk.js │ │ │ ├── float.serializer.inc.js │ │ │ └── float.sizeof.js │ ├── inline │ │ ├── after.lookup.js │ │ ├── after.parser.all.js │ │ ├── after.parser.bff.js │ │ ├── after.parser.chk.js │ │ ├── after.parser.inc.js │ │ ├── after.serializer.all.js │ │ ├── after.serializer.bff.js │ │ ├── after.serializer.chk.js │ │ ├── after.serializer.inc.js │ │ ├── after.sizeof.js │ │ ├── array.lookup.js │ │ ├── array.parser.all.js │ │ ├── array.parser.bff.js │ │ ├── array.parser.chk.js │ │ ├── array.parser.inc.js │ │ ├── array.serializer.all.js │ │ ├── array.serializer.bff.js │ │ ├── array.serializer.chk.js │ │ ├── array.serializer.inc.js │ │ ├── array.sizeof.js │ │ ├── before.lookup.js │ │ ├── before.parser.all.js │ │ ├── before.parser.bff.js │ │ ├── before.parser.chk.js │ │ ├── before.parser.inc.js │ │ ├── before.serializer.all.js │ │ ├── before.serializer.bff.js │ │ ├── before.serializer.chk.js │ │ ├── before.serializer.inc.js │ │ ├── before.sizeof.js │ │ ├── both.lookup.js │ │ ├── both.parser.all.js │ │ ├── both.parser.bff.js │ │ ├── both.parser.chk.js │ │ ├── both.parser.inc.js │ │ ├── both.serializer.all.js │ │ ├── both.serializer.bff.js │ │ ├── both.serializer.chk.js │ │ ├── both.serializer.inc.js │ │ ├── both.sizeof.js │ │ ├── converted.lookup.js │ │ ├── converted.parser.all.js │ │ ├── converted.parser.bff.js │ │ ├── converted.parser.chk.js │ │ ├── converted.parser.inc.js │ │ ├── converted.serializer.all.js │ │ ├── converted.serializer.bff.js │ │ ├── converted.serializer.chk.js │ │ ├── converted.serializer.inc.js │ │ ├── converted.sizeof.js │ │ ├── elided.lookup.js │ │ ├── elided.parser.all.js │ │ ├── elided.parser.bff.js │ │ ├── elided.parser.chk.js │ │ ├── elided.parser.inc.js │ │ ├── elided.serializer.all.js │ │ ├── elided.serializer.bff.js │ │ ├── elided.serializer.chk.js │ │ ├── elided.serializer.inc.js │ │ ├── elided.sizeof.js │ │ ├── mirrored.lookup.js │ │ ├── mirrored.parser.all.js │ │ ├── mirrored.parser.bff.js │ │ ├── mirrored.parser.chk.js │ │ ├── mirrored.parser.inc.js │ │ ├── mirrored.serializer.all.js │ │ ├── mirrored.serializer.bff.js │ │ ├── mirrored.serializer.chk.js │ │ ├── mirrored.serializer.inc.js │ │ ├── mirrored.sizeof.js │ │ ├── named.lookup.js │ │ ├── named.parser.all.js │ │ ├── named.parser.bff.js │ │ ├── named.parser.chk.js │ │ ├── named.parser.inc.js │ │ ├── named.serializer.all.js │ │ ├── named.serializer.bff.js │ │ ├── named.serializer.chk.js │ │ ├── named.serializer.inc.js │ │ └── named.sizeof.js │ ├── integer │ │ ├── be │ │ │ ├── compliment │ │ │ │ ├── int.lookup.js │ │ │ │ ├── int.parser.all.js │ │ │ │ ├── int.parser.bff.js │ │ │ │ ├── int.parser.chk.js │ │ │ │ ├── int.parser.inc.js │ │ │ │ ├── int.serializer.all.js │ │ │ │ ├── int.serializer.bff.js │ │ │ │ ├── int.serializer.chk.js │ │ │ │ ├── int.serializer.inc.js │ │ │ │ ├── int.sizeof.js │ │ │ │ ├── long.lookup.js │ │ │ │ ├── long.parser.all.js │ │ │ │ ├── long.parser.bff.js │ │ │ │ ├── long.parser.chk.js │ │ │ │ ├── long.parser.inc.js │ │ │ │ ├── long.serializer.all.js │ │ │ │ ├── long.serializer.bff.js │ │ │ │ ├── long.serializer.chk.js │ │ │ │ ├── long.serializer.inc.js │ │ │ │ ├── long.sizeof.js │ │ │ │ ├── short.lookup.js │ │ │ │ ├── short.parser.all.js │ │ │ │ ├── short.parser.bff.js │ │ │ │ ├── short.parser.chk.js │ │ │ │ ├── short.parser.inc.js │ │ │ │ ├── short.serializer.all.js │ │ │ │ ├── short.serializer.bff.js │ │ │ │ ├── short.serializer.chk.js │ │ │ │ ├── short.serializer.inc.js │ │ │ │ └── short.sizeof.js │ │ │ └── word │ │ │ │ ├── int.lookup.js │ │ │ │ ├── int.parser.all.js │ │ │ │ ├── int.parser.bff.js │ │ │ │ ├── int.parser.chk.js │ │ │ │ ├── int.parser.inc.js │ │ │ │ ├── int.serializer.all.js │ │ │ │ ├── int.serializer.bff.js │ │ │ │ ├── int.serializer.chk.js │ │ │ │ ├── int.serializer.inc.js │ │ │ │ ├── int.sizeof.js │ │ │ │ ├── long.lookup.js │ │ │ │ ├── long.parser.all.js │ │ │ │ ├── long.parser.bff.js │ │ │ │ ├── long.parser.chk.js │ │ │ │ ├── long.parser.inc.js │ │ │ │ ├── long.serializer.all.js │ │ │ │ ├── long.serializer.bff.js │ │ │ │ ├── long.serializer.chk.js │ │ │ │ ├── long.serializer.inc.js │ │ │ │ ├── long.sizeof.js │ │ │ │ ├── short.lookup.js │ │ │ │ ├── short.parser.all.js │ │ │ │ ├── short.parser.bff.js │ │ │ │ ├── short.parser.chk.js │ │ │ │ ├── short.parser.inc.js │ │ │ │ ├── short.serializer.all.js │ │ │ │ ├── short.serializer.bff.js │ │ │ │ ├── short.serializer.chk.js │ │ │ │ ├── short.serializer.inc.js │ │ │ │ └── short.sizeof.js │ │ ├── byte │ │ │ ├── whole.lookup.js │ │ │ ├── whole.parser.all.js │ │ │ ├── whole.parser.bff.js │ │ │ ├── whole.parser.chk.js │ │ │ ├── whole.parser.inc.js │ │ │ ├── whole.serializer.all.js │ │ │ ├── whole.serializer.bff.js │ │ │ ├── whole.serializer.chk.js │ │ │ ├── whole.serializer.inc.js │ │ │ └── whole.sizeof.js │ │ ├── le │ │ │ ├── compliment │ │ │ │ ├── int.lookup.js │ │ │ │ ├── int.parser.all.js │ │ │ │ ├── int.parser.bff.js │ │ │ │ ├── int.parser.chk.js │ │ │ │ ├── int.parser.inc.js │ │ │ │ ├── int.serializer.all.js │ │ │ │ ├── int.serializer.bff.js │ │ │ │ ├── int.serializer.chk.js │ │ │ │ ├── int.serializer.inc.js │ │ │ │ ├── int.sizeof.js │ │ │ │ ├── long.lookup.js │ │ │ │ ├── long.parser.all.js │ │ │ │ ├── long.parser.bff.js │ │ │ │ ├── long.parser.chk.js │ │ │ │ ├── long.parser.inc.js │ │ │ │ ├── long.serializer.all.js │ │ │ │ ├── long.serializer.bff.js │ │ │ │ ├── long.serializer.chk.js │ │ │ │ ├── long.serializer.inc.js │ │ │ │ ├── long.sizeof.js │ │ │ │ ├── short.lookup.js │ │ │ │ ├── short.parser.all.js │ │ │ │ ├── short.parser.bff.js │ │ │ │ ├── short.parser.chk.js │ │ │ │ ├── short.parser.inc.js │ │ │ │ ├── short.serializer.all.js │ │ │ │ ├── short.serializer.bff.js │ │ │ │ ├── short.serializer.chk.js │ │ │ │ ├── short.serializer.inc.js │ │ │ │ └── short.sizeof.js │ │ │ └── word │ │ │ │ ├── int.lookup.js │ │ │ │ ├── int.parser.all.js │ │ │ │ ├── int.parser.bff.js │ │ │ │ ├── int.parser.chk.js │ │ │ │ ├── int.parser.inc.js │ │ │ │ ├── int.serializer.all.js │ │ │ │ ├── int.serializer.bff.js │ │ │ │ ├── int.serializer.chk.js │ │ │ │ ├── int.serializer.inc.js │ │ │ │ ├── int.sizeof.js │ │ │ │ ├── long.lookup.js │ │ │ │ ├── long.parser.all.js │ │ │ │ ├── long.parser.bff.js │ │ │ │ ├── long.parser.chk.js │ │ │ │ ├── long.parser.inc.js │ │ │ │ ├── long.serializer.all.js │ │ │ │ ├── long.serializer.bff.js │ │ │ │ ├── long.serializer.chk.js │ │ │ │ ├── long.serializer.inc.js │ │ │ │ ├── long.sizeof.js │ │ │ │ ├── short.lookup.js │ │ │ │ ├── short.parser.all.js │ │ │ │ ├── short.parser.bff.js │ │ │ │ ├── short.parser.chk.js │ │ │ │ ├── short.parser.inc.js │ │ │ │ ├── short.serializer.all.js │ │ │ │ ├── short.serializer.bff.js │ │ │ │ ├── short.serializer.chk.js │ │ │ │ ├── short.serializer.inc.js │ │ │ │ └── short.sizeof.js │ │ └── spread │ │ │ ├── set │ │ │ ├── short.lookup.js │ │ │ ├── short.parser.all.js │ │ │ ├── short.parser.bff.js │ │ │ ├── short.parser.chk.js │ │ │ ├── short.parser.inc.js │ │ │ ├── short.serializer.all.js │ │ │ ├── short.serializer.bff.js │ │ │ ├── short.serializer.chk.js │ │ │ ├── short.serializer.inc.js │ │ │ └── short.sizeof.js │ │ │ ├── short.lookup.js │ │ │ ├── short.parser.all.js │ │ │ ├── short.parser.bff.js │ │ │ ├── short.parser.chk.js │ │ │ ├── short.parser.inc.js │ │ │ ├── short.serializer.all.js │ │ │ ├── short.serializer.bff.js │ │ │ ├── short.serializer.chk.js │ │ │ ├── short.serializer.inc.js │ │ │ ├── short.sizeof.js │ │ │ └── unset │ │ │ ├── short.lookup.js │ │ │ ├── short.parser.all.js │ │ │ ├── short.parser.bff.js │ │ │ ├── short.parser.chk.js │ │ │ ├── short.parser.inc.js │ │ │ ├── short.serializer.all.js │ │ │ ├── short.serializer.bff.js │ │ │ ├── short.serializer.chk.js │ │ │ ├── short.serializer.inc.js │ │ │ └── short.sizeof.js │ ├── literal │ │ ├── constant.lookup.js │ │ ├── constant.parser.all.js │ │ ├── constant.parser.bff.js │ │ ├── constant.parser.chk.js │ │ ├── constant.parser.inc.js │ │ ├── constant.serializer.all.js │ │ ├── constant.serializer.bff.js │ │ ├── constant.serializer.chk.js │ │ ├── constant.serializer.inc.js │ │ ├── constant.sizeof.js │ │ ├── repeated.lookup.js │ │ ├── repeated.parser.all.js │ │ ├── repeated.parser.bff.js │ │ ├── repeated.parser.chk.js │ │ ├── repeated.parser.inc.js │ │ ├── repeated.serializer.all.js │ │ ├── repeated.serializer.bff.js │ │ ├── repeated.serializer.chk.js │ │ ├── repeated.serializer.inc.js │ │ ├── repeated.sizeof.js │ │ ├── single.lookup.js │ │ ├── single.parser.all.js │ │ ├── single.parser.bff.js │ │ ├── single.parser.chk.js │ │ ├── single.parser.inc.js │ │ ├── single.serializer.all.js │ │ ├── single.serializer.bff.js │ │ ├── single.serializer.chk.js │ │ ├── single.serializer.inc.js │ │ └── single.sizeof.js │ ├── locket │ │ ├── key.lookup.js │ │ ├── key.parser.all.js │ │ ├── key.serializer.all.js │ │ ├── key.sizeof.js │ │ ├── meta.lookup.js │ │ ├── meta.parser.all.js │ │ ├── meta.serializer.all.js │ │ └── meta.sizeof.js │ ├── lookup.lookup.js │ ├── lookup.parser.all.js │ ├── lookup.parser.bff.js │ ├── lookup.parser.chk.js │ ├── lookup.parser.inc.js │ ├── lookup.serializer.all.js │ ├── lookup.serializer.bff.js │ ├── lookup.serializer.chk.js │ ├── lookup.serializer.inc.js │ ├── lookup.sizeof.js │ ├── miscelaneous │ │ ├── include.lookup.js │ │ ├── include.parser.all.js │ │ ├── include.parser.bff.js │ │ ├── include.parser.chk.js │ │ ├── include.parser.inc.js │ │ ├── include.serializer.all.js │ │ ├── include.serializer.bff.js │ │ ├── include.serializer.chk.js │ │ ├── include.serializer.inc.js │ │ └── include.sizeof.js │ ├── mqtt.lookup.js │ ├── mqtt.parser.all.js │ ├── mqtt.parser.bff.js │ ├── mqtt.parser.chk.js │ ├── mqtt.parser.inc.js │ ├── mqtt.serializer.all.js │ ├── mqtt.serializer.bff.js │ ├── mqtt.serializer.chk.js │ ├── mqtt.serializer.inc.js │ ├── mqtt.sizeof.js │ ├── packed │ │ ├── elided.lookup.js │ │ ├── elided.parser.all.js │ │ ├── elided.parser.bff.js │ │ ├── elided.parser.chk.js │ │ ├── elided.parser.inc.js │ │ ├── elided.serializer.all.js │ │ ├── elided.serializer.bff.js │ │ ├── elided.serializer.chk.js │ │ ├── elided.serializer.inc.js │ │ ├── elided.sizeof.js │ │ ├── nested.lookup.js │ │ ├── nested.parser.all.js │ │ ├── nested.parser.bff.js │ │ ├── nested.parser.chk.js │ │ ├── nested.parser.inc.js │ │ ├── nested.serializer.all.js │ │ ├── nested.serializer.bff.js │ │ ├── nested.serializer.chk.js │ │ ├── nested.serializer.inc.js │ │ └── nested.sizeof.js │ ├── require │ │ ├── module.lookup.js │ │ ├── module.parser.all.js │ │ ├── module.parser.bff.js │ │ ├── module.parser.chk.js │ │ ├── module.parser.inc.js │ │ ├── module.serializer.all.js │ │ ├── module.serializer.bff.js │ │ ├── module.serializer.chk.js │ │ ├── module.serializer.inc.js │ │ └── module.sizeof.js │ ├── required.js │ ├── structure │ │ ├── elided.lookup.js │ │ ├── elided.parser.all.js │ │ ├── elided.parser.bff.js │ │ ├── elided.parser.chk.js │ │ ├── elided.parser.inc.js │ │ ├── elided.serializer.all.js │ │ ├── elided.serializer.bff.js │ │ ├── elided.serializer.chk.js │ │ ├── elided.serializer.inc.js │ │ ├── elided.sizeof.js │ │ ├── flatten.lookup.js │ │ ├── flatten.parser.all.js │ │ ├── flatten.parser.bff.js │ │ ├── flatten.parser.chk.js │ │ ├── flatten.parser.inc.js │ │ ├── flatten.serializer.all.js │ │ ├── flatten.serializer.bff.js │ │ ├── flatten.serializer.chk.js │ │ ├── flatten.serializer.inc.js │ │ ├── flatten.sizeof.js │ │ ├── nested.lookup.js │ │ ├── nested.parser.all.js │ │ ├── nested.parser.bff.js │ │ ├── nested.parser.chk.js │ │ ├── nested.parser.inc.js │ │ ├── nested.serializer.all.js │ │ ├── nested.serializer.bff.js │ │ ├── nested.serializer.chk.js │ │ ├── nested.serializer.inc.js │ │ ├── nested.sizeof.js │ │ ├── vivify.lookup.js │ │ ├── vivify.parser.all.js │ │ ├── vivify.parser.bff.js │ │ ├── vivify.parser.chk.js │ │ ├── vivify.parser.inc.js │ │ ├── vivify.serializer.all.js │ │ ├── vivify.serializer.bff.js │ │ ├── vivify.serializer.chk.js │ │ ├── vivify.serializer.inc.js │ │ └── vivify.sizeof.js │ ├── switch │ │ ├── named.lookup.js │ │ ├── named.parser.all.js │ │ ├── named.parser.bff.js │ │ ├── named.parser.chk.js │ │ ├── named.parser.inc.js │ │ ├── named.serializer.all.js │ │ ├── named.serializer.bff.js │ │ ├── named.serializer.chk.js │ │ ├── named.serializer.inc.js │ │ ├── named.sizeof.js │ │ ├── packed │ │ │ ├── named.lookup.js │ │ │ ├── named.parser.all.js │ │ │ ├── named.parser.bff.js │ │ │ ├── named.parser.chk.js │ │ │ ├── named.parser.inc.js │ │ │ ├── named.serializer.all.js │ │ │ ├── named.serializer.bff.js │ │ │ ├── named.serializer.chk.js │ │ │ ├── named.serializer.inc.js │ │ │ ├── named.sizeof.js │ │ │ ├── variant.lookup.js │ │ │ ├── variant.parser.all.js │ │ │ ├── variant.parser.bff.js │ │ │ ├── variant.parser.chk.js │ │ │ ├── variant.parser.inc.js │ │ │ ├── variant.serializer.all.js │ │ │ ├── variant.serializer.bff.js │ │ │ ├── variant.serializer.chk.js │ │ │ ├── variant.serializer.inc.js │ │ │ └── variant.sizeof.js │ │ ├── variant.lookup.js │ │ ├── variant.parser.all.js │ │ ├── variant.parser.bff.js │ │ ├── variant.parser.chk.js │ │ ├── variant.parser.inc.js │ │ ├── variant.serializer.all.js │ │ ├── variant.serializer.bff.js │ │ ├── variant.serializer.chk.js │ │ ├── variant.serializer.inc.js │ │ ├── variant.sizeof.js │ │ ├── vivify.lookup.js │ │ ├── vivify.parser.all.js │ │ ├── vivify.parser.bff.js │ │ ├── vivify.parser.chk.js │ │ ├── vivify.parser.inc.js │ │ ├── vivify.serializer.all.js │ │ ├── vivify.serializer.bff.js │ │ ├── vivify.serializer.chk.js │ │ ├── vivify.serializer.inc.js │ │ └── vivify.sizeof.js │ └── terminated │ │ ├── chunked.lookup.js │ │ ├── chunked.parser.all.js │ │ ├── chunked.parser.bff.js │ │ ├── chunked.parser.inc.js │ │ ├── chunked.serializer.all.js │ │ ├── chunked.serializer.bff.js │ │ ├── chunked.serializer.chk.js │ │ ├── chunked.serializer.inc.js │ │ ├── chunked.sizeof.js │ │ ├── concat.lookup.js │ │ ├── concat.parser.all.js │ │ ├── concat.parser.bff.js │ │ ├── concat.parser.chk.js │ │ ├── concat.parser.inc.js │ │ ├── concat.serializer.all.js │ │ ├── concat.serializer.bff.js │ │ ├── concat.serializer.chk.js │ │ ├── concat.serializer.inc.js │ │ ├── concat.sizeof.js │ │ ├── nested.lookup.js │ │ ├── nested.parser.all.js │ │ ├── nested.parser.bff.js │ │ ├── nested.parser.chk.js │ │ ├── nested.parser.inc.js │ │ ├── nested.serializer.all.js │ │ ├── nested.serializer.bff.js │ │ ├── nested.serializer.chk.js │ │ ├── nested.serializer.inc.js │ │ ├── nested.sizeof.js │ │ ├── rewind.lookup.js │ │ ├── rewind.parser.all.js │ │ ├── rewind.parser.inc.js │ │ ├── rewind.serializer.all.js │ │ ├── rewind.serializer.inc.js │ │ ├── rewind.sizeof.js │ │ ├── words.lookup.js │ │ ├── words.parser.all.js │ │ ├── words.parser.bff.js │ │ ├── words.parser.chk.js │ │ ├── words.parser.inc.js │ │ ├── words.serializer.all.js │ │ ├── words.serializer.bff.js │ │ ├── words.serializer.chk.js │ │ ├── words.serializer.inc.js │ │ └── words.sizeof.js ├── issues │ └── empty-array.t.js ├── language │ ├── absent.t.js │ ├── accumulator.t.js │ ├── arguments.t.js │ ├── array.t.js │ ├── bigint.t.js │ ├── conditional.t.js │ ├── fixed.t.js │ ├── ieee.t.js │ ├── include.t.js │ ├── inline.t.js │ ├── integer.t.js │ ├── literal.t.js │ ├── lookup.t.js │ ├── minimal.t.js │ ├── packed.t.js │ ├── print.t.js │ ├── require.t.js │ ├── simplified.t.js │ ├── structure.t.js │ ├── switch.t.js │ ├── terminated.t.js │ └── vivify.t.js ├── parse │ ├── signage.t.js │ └── unpack.t.js ├── protocol │ └── mqtt.t.js ├── readme │ ├── assertion-mirrored.js │ ├── assertion-named.js │ ├── assertion-not-assertion.js │ ├── assertion-parameter-named-reuse.js │ ├── assertion-parameter-reuse.js │ ├── assertion-parameter.js │ ├── assertion.js │ ├── checksum.js │ ├── conditional-packed.js │ ├── conditional.js │ ├── constant.js │ ├── constants.js │ ├── fixed-calculated.js │ ├── fixed.js │ ├── float.js │ ├── length-encoded-buffer.js │ ├── length-encoded-nested.js │ ├── length-encoded-structures.js │ ├── length-encoded.js │ ├── literal-repeat.js │ ├── little-endian-64.js │ ├── little-endian-twos-compliment-64.js │ ├── little-endian-twos-compliment.js │ ├── little-endian.js │ ├── negative-integer-64.js │ ├── negative-integer.js │ ├── nested-structures.js │ ├── packed-integer-little-endian.js │ ├── packed-integer.js │ ├── parameters.js │ ├── partial.js │ ├── readme.t.js │ ├── require.js │ ├── string-value-map.js │ ├── switch.js │ ├── terminated-multibyte.js │ ├── terminated.js │ ├── transform-basic.js │ ├── transform-by-name.js │ ├── transform-dollar-under.js │ ├── transform-mask-array-full-named.js │ ├── transform-mask-array-named.js │ ├── transform-mask-array-positional.js │ ├── transform-mask-function-syntax.js │ ├── transform-mask-long-named.js │ ├── transform-mask-named.js │ ├── transform-mask-positional.js │ ├── transform-mask-same.js │ ├── transform-pre-only.js │ ├── unamed-literal-little-endian-explicit.js │ ├── unamed-literal-little-endian-repeat.js │ ├── unamed-literal-little-endian.js │ ├── unamed-literal-repeat-once.js │ ├── unamed-literal-repeat.js │ ├── unnamed-literal-after.js │ ├── unnamed-literals-before-and-after.js │ ├── unnamed-literals.js │ ├── whole-integer-64.js │ └── whole-integer.js ├── serialize │ └── packed.t.js └── sync │ ├── parser.t.js │ └── serializer.t.js ├── tour.js ├── unpack.js └── vivify.js /.gitignore: -------------------------------------------------------------------------------- 1 | /.nyc_output 2 | /.wiseguy 3 | /coverage 4 | /docs 5 | /node_modules 6 | /c/*.o 7 | /c/example 8 | /sketch 9 | /generated 10 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | /.* 2 | /*.md 3 | /coverage 4 | /docs 5 | /test 6 | /generated 7 | /benchmark 8 | /notes 9 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | 3 | node_js: 4 | - '12' 5 | - '14' 6 | - '16' 7 | 8 | branches: 9 | only: 10 | - master 11 | - travis-ci 12 | 13 | install: 14 | - npm install --no-package-lock --no-save 15 | - npm install -g nyc prove 16 | 17 | script: 18 | - nyc npm test 19 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | all: test/readme/readme.t.js README.md 2 | 3 | test/readme/readme.t.js: edify.md 4 | edify --mode code $< > $@ 5 | README.md: edify.md 6 | edify --mode text $< > $@ 7 | -------------------------------------------------------------------------------- /benchmark/jit/objects-vs-closures.js: -------------------------------------------------------------------------------- 1 | function Parser (value) { 2 | this.value = value 3 | } 4 | 5 | Parser.prototype.get = function () { 6 | return this.value 7 | } 8 | 9 | function object () { 10 | new Parser(1).get() === 1 11 | } 12 | 13 | function parser (value) { 14 | return enclosed 15 | function enclosed () { return value } 16 | } 17 | 18 | function closure () { 19 | parser(1)() === 1 20 | } 21 | 22 | function main() { 23 | for (var i = 0; i < 1000000; i++) { 24 | closure() 25 | } 26 | 27 | for (var i = 0; i < 1000000; i++) { 28 | object() 29 | } 30 | } 31 | 32 | main() 33 | -------------------------------------------------------------------------------- /countdown.js: -------------------------------------------------------------------------------- 1 | class Countdown { 2 | constructor (define, path, $) { 3 | define.parameters = [ 'sizeof' ] 4 | define.direction = 'parse' 5 | let iterator = $ 6 | for (const part of path.split('.')) { 7 | iterator = iterator[part] 8 | } 9 | this.remaining = iterator 10 | } 11 | 12 | serialize (length) { 13 | this.remaining -= length 14 | } 15 | 16 | parse (length) { 17 | this.remaining -= length 18 | } 19 | } 20 | 21 | module.exports = Countdown 22 | -------------------------------------------------------------------------------- /example.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | first: { 3 | value: 16 4 | }, 5 | second: { 6 | value: -32 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /fiddle/pack.js: -------------------------------------------------------------------------------- 1 | const hex = require('../hex') 2 | 3 | function pack (bits, offset, size, value) { 4 | let mask = 0xffffffff, shift 5 | mask = mask >>> 32 - bits 6 | mask = mask >>> bits - size 7 | shift = bits - offset - size 8 | mask = mask << shift >>> 0 9 | const source = shift 10 | ? value + ' << ' + shift + ' & ' + hex(mask) 11 | : value + ' & ' + hex(mask) 12 | return `${!offset && bits == 32 ? '(' + source + ') >>> 0' : source}` 13 | } 14 | 15 | module.exports = pack 16 | -------------------------------------------------------------------------------- /fiddle/unpack.js: -------------------------------------------------------------------------------- 1 | // TODO Module tidy; find a better name, better place to live. 2 | function unpack (bits, offset, length, packed) { 3 | let mask = 0xffffffff, shift 4 | mask = mask >>> (32 - bits) 5 | mask = mask >>> (bits - length) 6 | shift = bits - offset - length 7 | shift = shift ? `${packed} >>> ` + shift : packed 8 | return shift + ' & 0x' + mask.toString(16) 9 | } 10 | 11 | module.exports = unpack 12 | -------------------------------------------------------------------------------- /fiddle/unsign.js: -------------------------------------------------------------------------------- 1 | function unsign (name, bits) { 2 | const mask = `0x${((1n << BigInt(bits)) - 1n).toString(16)}` 3 | const test = `0x${(1n << BigInt(bits) - 1n).toString(16)}` 4 | const cast = bits > 32 5 | ? { to: 'Number', from: 'BigInt', suffix: 'n' } 6 | : { to: '', from: '', suffix: '' } 7 | return `${name} & ${test}${cast.suffix} ` + 8 | `? (${mask}${cast.suffix} - ${name} + 1${cast.suffix}) * -1${cast.suffix} ` + 9 | `: ${name}` 10 | } 11 | 12 | module.exports = unsign 13 | -------------------------------------------------------------------------------- /function.js: -------------------------------------------------------------------------------- 1 | module.exports = function (collection, source) { 2 | return new Function(collection, source) 3 | } 4 | -------------------------------------------------------------------------------- /generate.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | const packetize = require('./packetize') 3 | const ex 4 | -------------------------------------------------------------------------------- /hash.js: -------------------------------------------------------------------------------- 1 | const crypto = require('crypto') 2 | 3 | const BYTES = {} 4 | 5 | class Hash { 6 | constructor (define, algorithm) { 7 | if (!(algorithm in BYTES)) { 8 | BYTES[algorithm] = crypto.createHash(algorithm).digest().length 9 | } 10 | define.parameters = [ 'buffer' ] 11 | define.packet = [[ BYTES[algorithm] ], [ 8 ]] 12 | this._hash = crypto.createHash(algorithm) 13 | } 14 | 15 | serialize (buffer) { 16 | this._hash.update(buffer) 17 | } 18 | 19 | parse (buffer) { 20 | this._hash.update(buffer) 21 | } 22 | 23 | digest () { 24 | this._hash.digest() 25 | } 26 | } 27 | 28 | module.exports = Hash 29 | -------------------------------------------------------------------------------- /hex.js: -------------------------------------------------------------------------------- 1 | function hex (value) { 2 | switch (typeof value) { 3 | case 'bigint': 4 | case 'number': 5 | return `0x${value.toString(16)}` 6 | case 'object': 7 | return `[ ${value.map(value => hex(value)).join(', ')} ]` 8 | } 9 | } 10 | 11 | module.exports = hex 12 | -------------------------------------------------------------------------------- /join.js: -------------------------------------------------------------------------------- 1 | const $ = require('programmatic') 2 | 3 | // Join an array of code blocks into a single chunk separated by blank lines. 4 | 5 | module.exports = function (blocks) { 6 | if (blocks.length == 0) { 7 | return null 8 | } 9 | let block = blocks[0] 10 | for (let i = 1, I = blocks.length; i < I; i++) { 11 | block = $(` 12 | `, block, ` 13 | 14 | `, blocks[i], ` 15 | `) 16 | } 17 | return block 18 | } 19 | -------------------------------------------------------------------------------- /map.js: -------------------------------------------------------------------------------- 1 | const join = require('./join') 2 | 3 | module.exports = function map (dispatch, path, fields) { 4 | return join(fields.map(field => dispatch(path + field.dotted, field))) 5 | } 6 | -------------------------------------------------------------------------------- /notes/utf8.js: -------------------------------------------------------------------------------- 1 | console.log(Buffer.from('𩶘').toJSON()) 2 | 3 | console.log(0x29D98) 4 | -------------------------------------------------------------------------------- /packetize.bin.js: -------------------------------------------------------------------------------- 1 | const packetize = require('./packetize') 2 | 3 | require('arguable')(module, async arguable => { 4 | const definitions = {} 5 | const file = arguable.argv[0] 6 | const required = require(file) 7 | for (const name in required.packet) { 8 | definitions[name] = required.packet[name] 9 | } 10 | arguable.stdout.write(packetize(definitions)) 11 | return 0 12 | }) 13 | -------------------------------------------------------------------------------- /require.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | const $ = require('programmatic') 3 | 4 | module.exports = function (collection, filename) { 5 | return function (source) { 6 | const exported = $(` 7 | module.exports = function (${collection}) { 8 | `, source, ` 9 | } 10 | `) 11 | fs.writeFileSync(filename, exported + '\n', 'utf8') 12 | return require(filename) 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /required.js: -------------------------------------------------------------------------------- 1 | // Node.js API. 2 | const util = require('util') 3 | 4 | module.exports = function (required) { 5 | return Object.keys(required).length != 0 6 | ? Object.keys(required).map(name => { 7 | switch (typeof required[name]) { 8 | case 'function': 9 | return `const ${name} = null` 10 | case 'string': 11 | return `const ${name} = require(${util.inspect(required[name])})` 12 | } 13 | }).join('\n') : null 14 | } 15 | -------------------------------------------------------------------------------- /sync/parser.js: -------------------------------------------------------------------------------- 1 | class Parser { 2 | constructor (definition) { 3 | this._definition = definition 4 | } 5 | 6 | parse (name, buffer) { 7 | return this._definition.parser.all[name](buffer, 0) 8 | } 9 | } 10 | 11 | module.exports = Parser 12 | -------------------------------------------------------------------------------- /sync/serializer.js: -------------------------------------------------------------------------------- 1 | class Serializer { 2 | constructor (definition) { 3 | this._definition = definition 4 | } 5 | 6 | serialize (defintion, object) { 7 | const size = this._definition.sizeOf[defintion](object) 8 | const buffer = Buffer.alloc(size) 9 | this._definition.serializer.all[defintion](object, buffer, 0) 10 | return buffer 11 | } 12 | } 13 | 14 | module.exports = Serializer 15 | -------------------------------------------------------------------------------- /test/bin/packetize.bin.t.js: -------------------------------------------------------------------------------- 1 | require('proof')(2, async okay => { 2 | const packetize = require('../../packetize.bin') 3 | const stream = require('stream') 4 | 5 | const path = require('path') 6 | 7 | const example = path.resolve(__dirname, '..', '..', 'example.js') 8 | 9 | const child = packetize([ example ], { $stdout: new stream.PassThrough }) 10 | 11 | okay(0, await child.exit, 'ran') 12 | 13 | const f = new Function('module', child.options.$stdout.read().toString()) 14 | 15 | const m = {} 16 | 17 | f(m) 18 | 19 | okay(Object.keys(m.exports).sort(), [ 'parser', 'serializer', 'sizeOf' ], 'built') 20 | }) 21 | -------------------------------------------------------------------------------- /test/compiler/function.t.js: -------------------------------------------------------------------------------- 1 | require('proof')(1, prove) 2 | 3 | function prove (assert) { 4 | var compiler = require('../../function') 5 | assert(compiler('ignore', 'return 0xaaaa')(), 0xaaaa, 'compile with Function') 6 | } 7 | -------------------------------------------------------------------------------- /test/compiler/require.t.js: -------------------------------------------------------------------------------- 1 | require('proof')(1, prove) 2 | 3 | function prove (assert) { 4 | var path = require('path') 5 | var compiler = require('../../require') 6 | var filename = path.resolve(__filename, '../../generated/required.js') 7 | assert(compiler('ignore', filename)('return 0xaaaa')(), 0xaaaa, 'compile with require') 8 | } 9 | -------------------------------------------------------------------------------- /test/cycle/include.t.js: -------------------------------------------------------------------------------- 1 | require('proof')(50, prove) 2 | 3 | function prove (okay) { 4 | const cycle = require('./cycle') 5 | cycle(okay, { 6 | name: 'miscelaneous/include', 7 | define: { 8 | $value: [ 8, [ 8 ] ], 9 | object: { 10 | nudge: 8, 11 | value: '$value', 12 | sentry: 8 13 | } 14 | }, 15 | objects: [{ nudge: 0xaa, value: [ 0xa, 0xb, 0xc, 0xd ], sentry: 0xaa }] 16 | }) 17 | } 18 | -------------------------------------------------------------------------------- /test/cycle/lookup.t.js: -------------------------------------------------------------------------------- 1 | require('proof')(88, prove) 2 | 3 | function prove (okay) { 4 | require('./cycle')(okay, { 5 | name: 'lookup', 6 | define: { 7 | object: { 8 | nudge: 8, 9 | value: [ 8, [ 'off', 'on' ] ], 10 | yn: [ 8, [ 'no', 'yes' ] ], 11 | binary: [ 8, [ 'off', 'on' ] ], 12 | mapped: [ 8, { 0: 'off', 1: 'on' } ], 13 | sentry: 8 14 | } 15 | }, 16 | objects: [{ 17 | nudge: 0xaa, value: 'off', yn: 'no', binary: 'off', mapped: 'off', sentry: 0xaa 18 | }, { 19 | nudge: 0xaa, value: 'on', yn: 'yes', binary: 'on', mapped: 'on', sentry: 0xaa 20 | }] 21 | }) 22 | } 23 | -------------------------------------------------------------------------------- /test/cycle/require.t.js: -------------------------------------------------------------------------------- 1 | require('proof')(38, prove) 2 | 3 | function prove (okay) { 4 | require('./cycle')(okay, { 5 | name: 'require/module', 6 | define: { 7 | object: { 8 | value: [[[ value => twiddle(value) ]], 32 ], 9 | sentry: 8 10 | } 11 | }, 12 | require: { 13 | twiddle: '../../cycle/twiddle' 14 | }, 15 | objects: [{ value: 1, sentry: 0xaa }] 16 | }) 17 | } 18 | -------------------------------------------------------------------------------- /test/cycle/twiddle.js: -------------------------------------------------------------------------------- 1 | module.exports = function (value) { 2 | return ~value 3 | } 4 | -------------------------------------------------------------------------------- /test/generated/absent/array.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/absent/array.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let object = { 6 | value: [] 7 | } 8 | 9 | object.value = [] 10 | 11 | return object 12 | } 13 | } () 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /test/generated/absent/array.parser.bff.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function () { 5 | return function ($buffer, $start, $end) { 6 | let object = { 7 | value: [] 8 | } 9 | 10 | object.value = [] 11 | 12 | return { start: $start, object: object, parse: null } 13 | } 14 | } () 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /test/generated/absent/array.parser.chk.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function () { 5 | return function ($buffer, $start, $end) { 6 | let object = { 7 | value: [] 8 | } 9 | 10 | object.value = [] 11 | 12 | return { start: $start, object: object, parse: null } 13 | } 14 | } () 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /test/generated/absent/array.parser.inc.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $step = 0) { 5 | 6 | return function $parse ($buffer, $start, $end) { 7 | switch ($step) { 8 | case 0: 9 | 10 | object = { 11 | value: [] 12 | } 13 | 14 | case 1: 15 | 16 | object.value = [] 17 | 18 | } 19 | 20 | return { start: $start, object: object, parse: null } 21 | } 22 | } 23 | } () 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /test/generated/absent/array.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | return { start: $start, serialize: null } 6 | } 7 | } () 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/generated/absent/array.serializer.bff.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object) { 5 | return function ($buffer, $start, $end) { 6 | return { start: $start, serialize: null } 7 | } 8 | } 9 | } () 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/absent/array.serializer.chk.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object) { 5 | return function ($buffer, $start, $end) { 6 | return { start: $start, serialize: null } 7 | } 8 | } 9 | } () 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/absent/array.serializer.inc.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $step = 0) { 5 | return function $serialize ($buffer, $start, $end) { 6 | switch ($step) { 7 | case 0: 8 | 9 | } 10 | 11 | return { start: $start, serialize: null } 12 | } 13 | } 14 | } () 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /test/generated/absent/array.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 0 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/absent/null.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/absent/null.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let object = { 6 | value: null 7 | } 8 | 9 | object.value = null 10 | 11 | return object 12 | } 13 | } () 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /test/generated/absent/null.parser.bff.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function () { 5 | return function ($buffer, $start, $end) { 6 | let object = { 7 | value: null 8 | } 9 | 10 | object.value = null 11 | 12 | return { start: $start, object: object, parse: null } 13 | } 14 | } () 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /test/generated/absent/null.parser.chk.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function () { 5 | return function ($buffer, $start, $end) { 6 | let object = { 7 | value: null 8 | } 9 | 10 | object.value = null 11 | 12 | return { start: $start, object: object, parse: null } 13 | } 14 | } () 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /test/generated/absent/null.parser.inc.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $step = 0) { 5 | 6 | return function $parse ($buffer, $start, $end) { 7 | switch ($step) { 8 | case 0: 9 | 10 | object = { 11 | value: null 12 | } 13 | 14 | case 1: 15 | 16 | object.value = null 17 | 18 | } 19 | 20 | return { start: $start, object: object, parse: null } 21 | } 22 | } 23 | } () 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /test/generated/absent/null.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | return { start: $start, serialize: null } 6 | } 7 | } () 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/generated/absent/null.serializer.bff.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object) { 5 | return function ($buffer, $start, $end) { 6 | return { start: $start, serialize: null } 7 | } 8 | } 9 | } () 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/absent/null.serializer.chk.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object) { 5 | return function ($buffer, $start, $end) { 6 | return { start: $start, serialize: null } 7 | } 8 | } 9 | } () 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/absent/null.serializer.inc.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $step = 0) { 5 | return function $serialize ($buffer, $start, $end) { 6 | switch ($step) { 7 | case 0: 8 | 9 | } 10 | 11 | return { start: $start, serialize: null } 12 | } 13 | } 14 | } () 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /test/generated/absent/null.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 0 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/absent/switch.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/absent/switch.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let object = { 6 | value: null 7 | } 8 | 9 | switch (($ => 0)(object)) { 10 | case 0: 11 | object.value = null 12 | 13 | break 14 | 15 | case undefined: 16 | object.value = null 17 | 18 | break 19 | } 20 | 21 | return object 22 | } 23 | } () 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /test/generated/absent/switch.parser.bff.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function () { 5 | return function ($buffer, $start, $end) { 6 | let object = { 7 | value: null 8 | } 9 | 10 | switch (($ => 0)(object)) { 11 | case 0: 12 | object.value = null 13 | 14 | break 15 | 16 | case undefined: 17 | object.value = null 18 | 19 | break 20 | } 21 | 22 | return { start: $start, object: object, parse: null } 23 | } 24 | } () 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /test/generated/absent/switch.parser.chk.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function () { 5 | return function ($buffer, $start, $end) { 6 | let object = { 7 | value: null 8 | } 9 | 10 | switch (($ => 0)(object)) { 11 | case 0: 12 | object.value = null 13 | 14 | break 15 | 16 | case undefined: 17 | object.value = null 18 | 19 | break 20 | } 21 | 22 | return { start: $start, object: object, parse: null } 23 | } 24 | } () 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /test/generated/absent/switch.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | switch (($ => 0)(object)) { 6 | case 0: 7 | 8 | 9 | break 10 | 11 | case undefined: 12 | 13 | 14 | break 15 | } 16 | 17 | return { start: $start, serialize: null } 18 | } 19 | } () 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /test/generated/absent/switch.serializer.bff.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object) { 5 | return function ($buffer, $start, $end) { 6 | switch (($ => 0)(object)) { 7 | case 0: 8 | 9 | 10 | break 11 | 12 | case undefined: 13 | 14 | 15 | break 16 | } 17 | 18 | return { start: $start, serialize: null } 19 | } 20 | } 21 | } () 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /test/generated/absent/switch.serializer.chk.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object) { 5 | return function ($buffer, $start, $end) { 6 | switch (($ => 0)(object)) { 7 | case 0: 8 | 9 | 10 | break 11 | 12 | case undefined: 13 | 14 | 15 | break 16 | } 17 | 18 | return { start: $start, serialize: null } 19 | } 20 | } 21 | } () 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /test/generated/absent/switch.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | switch (($ => 0)(object)) { 7 | case 0: 8 | 9 | 10 | break 11 | 12 | case undefined: 13 | 14 | 15 | break 16 | } 17 | 18 | return $start 19 | } 20 | } () 21 | } 22 | -------------------------------------------------------------------------------- /test/generated/accumulator/checksum.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/accumulator/checksum.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | const crypto = require('crypto') 4 | const assert = require('assert') 5 | 6 | return function (object) { 7 | let $start = 0, $accumulator = {}, $$ = [] 8 | 9 | $start += 4 10 | 11 | $start += 1 * object.body.data.length + 1 12 | 13 | $start += 16 14 | 15 | return $start 16 | } 17 | } () 18 | } 19 | -------------------------------------------------------------------------------- /test/generated/accumulator/conditional.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/accumulator/elided.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/accumulator/elided.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | const crypto = require('crypto') 4 | const assert = require('assert') 5 | 6 | return function (object) { 7 | let $start = 0, $accumulator = {}, $$ = [] 8 | 9 | $start += 4 10 | 11 | $start += 1 * object.body.data.length + 1 12 | 13 | $start += 16 14 | 15 | return $start 16 | } 17 | } () 18 | } 19 | -------------------------------------------------------------------------------- /test/generated/accumulator/function.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/accumulator/function.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | const assert = require('assert') 4 | 5 | return function (object) { 6 | let $start = 0, $accumulator = {} 7 | 8 | $start += 3 9 | 10 | return $start 11 | } 12 | } () 13 | } 14 | -------------------------------------------------------------------------------- /test/generated/accumulator/object.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/accumulator/object.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | const assert = require('assert') 4 | 5 | return function (object) { 6 | let $start = 0, $accumulator = {} 7 | 8 | $start += 3 9 | 10 | return $start 11 | } 12 | } () 13 | } 14 | -------------------------------------------------------------------------------- /test/generated/accumulator/regex.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/accumulator/regex.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | const assert = require('assert') 4 | 5 | return function (object) { 6 | let $start = 0, $accumulator = {} 7 | 8 | $start += 3 9 | 10 | return $start 11 | } 12 | } () 13 | } 14 | -------------------------------------------------------------------------------- /test/generated/accumulator/switch.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/array/chunked.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/array/chunked.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let $I = [] 6 | 7 | let object = { 8 | nudge: 0, 9 | array: [], 10 | sentry: 0 11 | } 12 | 13 | object.nudge = $buffer[$start++] 14 | 15 | $I[0] = $buffer[$start++] 16 | 17 | object.array = [ $buffer.slice($start, $start + $I[0]) ] 18 | $start += $I[0] 19 | 20 | object.sentry = $buffer[$start++] 21 | 22 | return object 23 | } 24 | } () 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /test/generated/array/chunked.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0, $length 5 | 6 | $start += 1 7 | 8 | $length = object.array.reduce((sum, buffer) => sum + buffer.length, 0) 9 | 10 | $start += 1 11 | 12 | $start += $length 13 | 14 | $start += 1 15 | 16 | return $start 17 | } 18 | } () 19 | } 20 | -------------------------------------------------------------------------------- /test/generated/array/concat.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/array/concat.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let $I = [] 6 | 7 | let object = { 8 | nudge: 0, 9 | array: [], 10 | sentry: 0 11 | } 12 | 13 | object.nudge = $buffer[$start++] 14 | 15 | $I[0] = $buffer[$start++] 16 | 17 | object.array = $buffer.slice($start, $start + $I[0]) 18 | $start += $I[0] 19 | 20 | object.sentry = $buffer[$start++] 21 | 22 | return object 23 | } 24 | } () 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /test/generated/array/concat.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | $buffer[$start++] = object.nudge & 0xff 6 | 7 | $buffer[$start++] = object.array.length & 0xff 8 | 9 | object.array.copy($buffer, $start, 0, object.array.length) 10 | $start += object.array.length 11 | 12 | $buffer[$start++] = object.sentry & 0xff 13 | 14 | return { start: $start, serialize: null } 15 | } 16 | } () 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /test/generated/array/concat.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | $start += 1 9 | 10 | $start += 1 * object.array.length 11 | 12 | $start += 1 13 | 14 | return $start 15 | } 16 | } () 17 | } 18 | -------------------------------------------------------------------------------- /test/generated/array/conditional.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/array/conditional.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | 9 | if ((value => value < 128)(object.array.length)) { 10 | $start += 1 11 | } else { 12 | $start += 2 13 | } 14 | 15 | $start += 1 * object.array.length 16 | 17 | $start += 1 18 | 19 | return $start 20 | } 21 | } () 22 | } 23 | -------------------------------------------------------------------------------- /test/generated/array/conditional/bytes.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/array/conditional/bytes.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | 9 | if ((value => value < 128)(object.array.length)) { 10 | $start += 1 11 | } else { 12 | $start += 2 13 | } 14 | 15 | $start += 1 * object.array.length 16 | 17 | $start += 1 18 | 19 | return $start 20 | } 21 | } () 22 | } 23 | -------------------------------------------------------------------------------- /test/generated/array/conditional/chunked.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/array/conditional/chunked.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0, $length 5 | 6 | $start += 1 7 | 8 | $length = object.array.reduce((sum, buffer) => sum + buffer.length, 0) 9 | 10 | 11 | if ((value => value < 128)($length)) { 12 | $start += 1 13 | } else { 14 | $start += 2 15 | } 16 | 17 | $start += $length 18 | 19 | $start += 1 20 | 21 | return $start 22 | } 23 | } () 24 | } 25 | -------------------------------------------------------------------------------- /test/generated/array/conditional/concat.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/array/conditional/concat.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | 9 | if ((value => value < 128)(object.array.length)) { 10 | $start += 1 11 | } else { 12 | $start += 2 13 | } 14 | 15 | $start += 1 * object.array.length 16 | 17 | $start += 1 18 | 19 | return $start 20 | } 21 | } () 22 | } 23 | -------------------------------------------------------------------------------- /test/generated/array/conditional/sip.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/array/conditional/sip.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | 9 | if ((value => value < 128)(object.array.length)) { 10 | $start += 1 11 | } else if ((value => value < 0x3fff)(object.array.length)) { 12 | $start += 2 13 | } else { 14 | $start += 3 15 | } 16 | 17 | $start += 1 * object.array.length 18 | 19 | $start += 1 20 | 21 | return $start 22 | } 23 | } () 24 | } 25 | -------------------------------------------------------------------------------- /test/generated/array/conditional/split.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/array/conditional/split.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | 9 | if ((value => value < 128)(object.array.length)) { 10 | $start += 1 11 | } else { 12 | $start += 2 13 | } 14 | 15 | $start += 1 * object.array.length 16 | 17 | $start += 1 18 | 19 | return $start 20 | } 21 | } () 22 | } 23 | -------------------------------------------------------------------------------- /test/generated/array/fixed.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/array/fixed.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | $start += 2 9 | 10 | $start += 4 * object.array.length 11 | 12 | $start += 1 13 | 14 | return $start 15 | } 16 | } () 17 | } 18 | -------------------------------------------------------------------------------- /test/generated/array/include.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/array/include.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | $start += 2 9 | 10 | $start += 2 * object.array.length 11 | 12 | $start += 1 13 | 14 | return $start 15 | } 16 | } () 17 | } 18 | -------------------------------------------------------------------------------- /test/generated/array/multiple.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/array/multiple.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | $start += 2 9 | 10 | $start += 1 * object.first.length 11 | 12 | $start += 2 13 | 14 | $start += 1 * object.second.length 15 | 16 | $start += 1 17 | 18 | return $start 19 | } 20 | } () 21 | } 22 | -------------------------------------------------------------------------------- /test/generated/array/nested.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/array/nested.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0, $i = [] 5 | 6 | $start += 1 7 | 8 | $start += 2 9 | 10 | for ($i[0] = 0; $i[0] < object.array.length; $i[0]++) { 11 | $start += 2 12 | 13 | $start += 2 * object.array[$i[0]].length 14 | } 15 | 16 | $start += 1 17 | 18 | return $start 19 | } 20 | } () 21 | } 22 | -------------------------------------------------------------------------------- /test/generated/array/object.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/array/object.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | let $i = [] 6 | 7 | $buffer[$start++] = object.array.length >>> 8 & 0xff 8 | $buffer[$start++] = object.array.length & 0xff 9 | $i[0] = 0 10 | 11 | for (; $i[0] < object.array.length; $i[0]++) { 12 | $buffer[$start++] = object.array[$i[0]].value >>> 8 & 0xff 13 | $buffer[$start++] = object.array[$i[0]].value & 0xff 14 | } 15 | 16 | return { start: $start, serialize: null } 17 | } 18 | } () 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /test/generated/array/object.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 2 7 | 8 | $start += 2 * object.array.length 9 | 10 | return $start 11 | } 12 | } () 13 | } 14 | -------------------------------------------------------------------------------- /test/generated/array/objects.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/array/objects.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | $start += 4 * object.array.length 9 | 10 | return $start 11 | } 12 | } () 13 | } 14 | -------------------------------------------------------------------------------- /test/generated/array/spread.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/array/spread.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | let $i = [] 6 | 7 | $buffer[$start++] = object.nudge & 0xff 8 | 9 | $buffer[$start++] = object.array.length >>> 7 & 0x7f | 0x80 10 | $buffer[$start++] = object.array.length & 0x7f 11 | $i[0] = 0 12 | 13 | for (; $i[0] < object.array.length; $i[0]++) { 14 | $buffer[$start++] = object.array[$i[0]] & 0xff 15 | } 16 | 17 | $buffer[$start++] = object.sentry & 0xff 18 | 19 | return { start: $start, serialize: null } 20 | } 21 | } () 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /test/generated/array/spread.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | $start += 2 9 | 10 | $start += 1 * object.array.length 11 | 12 | $start += 1 13 | 14 | return $start 15 | } 16 | } () 17 | } 18 | -------------------------------------------------------------------------------- /test/generated/array/switch/bytes.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/array/switch/bytes.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | switch (($ => $.type)(object)) { 9 | case 0: 10 | 11 | $start += 1 12 | 13 | break 14 | 15 | default: 16 | 17 | $start += 2 18 | 19 | break 20 | } 21 | 22 | $start += 1 * object.array.length 23 | 24 | $start += 1 25 | 26 | return $start 27 | } 28 | } () 29 | } 30 | -------------------------------------------------------------------------------- /test/generated/array/switch/chunked.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/array/switch/chunked.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0, $length 5 | 6 | $start += 1 7 | 8 | $length = object.array.reduce((sum, buffer) => sum + buffer.length, 0) 9 | 10 | switch (($ => $.type)(object)) { 11 | case 0: 12 | 13 | $start += 1 14 | 15 | break 16 | 17 | default: 18 | 19 | $start += 2 20 | 21 | break 22 | } 23 | 24 | $start += $length 25 | 26 | $start += 1 27 | 28 | return $start 29 | } 30 | } () 31 | } 32 | -------------------------------------------------------------------------------- /test/generated/array/switch/concat.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/array/switch/concat.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | switch (($ => $.type)(object)) { 9 | case 0: 10 | 11 | $start += 1 12 | 13 | break 14 | 15 | default: 16 | 17 | $start += 2 18 | 19 | break 20 | } 21 | 22 | $start += 1 * object.array.length 23 | 24 | $start += 1 25 | 26 | return $start 27 | } 28 | } () 29 | } 30 | -------------------------------------------------------------------------------- /test/generated/array/variable.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/array/variable.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0, $i = [] 5 | 6 | $start += 1 7 | 8 | $start += 2 9 | 10 | for ($i[0] = 0; $i[0] < object.array.length; $i[0]++) { 11 | $start += 2 12 | 13 | $start += 2 * object.array[$i[0]].first.length 14 | } 15 | 16 | $start += 1 17 | 18 | return $start 19 | } 20 | } () 21 | } 22 | -------------------------------------------------------------------------------- /test/generated/array/words.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/array/words.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | $start += 2 9 | 10 | $start += 2 * object.array.length 11 | 12 | $start += 1 13 | 14 | return $start 15 | } 16 | } () 17 | } 18 | -------------------------------------------------------------------------------- /test/generated/array/wrapped.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/array/wrapped.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | $start += 2 9 | 10 | $start += 1 * object.array.length 11 | 12 | $start += 1 13 | 14 | return $start 15 | } 16 | } () 17 | } 18 | -------------------------------------------------------------------------------- /test/generated/assert/dollarunder.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/assert/dollarunder.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let object = { 6 | value: 0, 7 | sentry: 0 8 | } 9 | 10 | object.value = $buffer[$start++] 11 | 12 | ; (({ $_ = 0 }) => require('assert').equal($_, 1))({ 13 | $_: object.value 14 | }) 15 | 16 | object.sentry = $buffer[$start++] 17 | 18 | return object 19 | } 20 | } () 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /test/generated/assert/dollarunder.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | let $$ = [] 6 | 7 | ; (({ $_ = 0 }) => require('assert').equal($_, 1))({ 8 | $_: object.value 9 | }) 10 | 11 | $buffer[$start++] = object.value & 0xff 12 | 13 | $buffer[$start++] = object.sentry & 0xff 14 | 15 | return { start: $start, serialize: null } 16 | } 17 | } () 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /test/generated/assert/dollarunder.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 2 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/assert/named.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/assert/named.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let object = { 6 | value: 0, 7 | sentry: 0 8 | } 9 | 10 | object.value = $buffer[$start++] 11 | 12 | ; (({ value = 0 }) => require('assert').equal(value, 1))({ 13 | value: object.value 14 | }) 15 | 16 | object.sentry = $buffer[$start++] 17 | 18 | return object 19 | } 20 | } () 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /test/generated/assert/named.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | let $$ = [] 6 | 7 | ; (({ value = 0 }) => require('assert').equal(value, 1))({ 8 | value: object.value 9 | }) 10 | 11 | $buffer[$start++] = object.value & 0xff 12 | 13 | $buffer[$start++] = object.sentry & 0xff 14 | 15 | return { start: $start, serialize: null } 16 | } 17 | } () 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /test/generated/assert/named.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 2 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/assert/positional.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/assert/positional.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let object = { 6 | value: 0, 7 | sentry: 0 8 | } 9 | 10 | object.value = $buffer[$start++] 11 | 12 | ; (($_ = 0) => require('assert').equal($_, 1))(object.value) 13 | 14 | object.sentry = $buffer[$start++] 15 | 16 | return object 17 | } 18 | } () 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /test/generated/assert/positional.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | let $$ = [] 6 | 7 | ; (($_ = 0) => require('assert').equal($_, 1))(object.value) 8 | 9 | $buffer[$start++] = object.value & 0xff 10 | 11 | $buffer[$start++] = object.sentry & 0xff 12 | 13 | return { start: $start, serialize: null } 14 | } 15 | } () 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /test/generated/assert/positional.serializer.bff.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object) { 5 | return function ($buffer, $start, $end) { 6 | let $$ = [] 7 | 8 | if ($end - $start < 1 + 1) { 9 | return $incremental.object(object, 0, $$)($buffer, $start, $end) 10 | } 11 | 12 | ; (($_ = 0) => require('assert').equal($_, 1))(object.value) 13 | 14 | $buffer[$start++] = object.value & 0xff 15 | 16 | $buffer[$start++] = object.sentry & 0xff 17 | 18 | return { start: $start, serialize: null } 19 | } 20 | } 21 | } () 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /test/generated/assert/positional.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 2 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/bigint/be/compliment.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/bigint/be/compliment.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 10 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/bigint/be/long.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/bigint/be/long.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 10 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/bigint/le/alternate.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/bigint/le/alternate.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 10 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/bigint/le/compliment.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/bigint/le/compliment.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 10 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/bigint/le/long.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/bigint/le/long.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 10 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/conditional/bidirectional.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/conditional/bidirectional.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | 9 | if (($ => $.type == 0)(object)) { 10 | $start += 2 11 | } else if (($ => $.type == 1)(object)) { 12 | $start += 3 13 | } else { 14 | $start += 4 15 | } 16 | 17 | $start += 1 18 | 19 | return $start 20 | } 21 | } () 22 | } 23 | -------------------------------------------------------------------------------- /test/generated/conditional/mqtt.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/conditional/mqtt.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | 9 | if ((value => value <= 0x7f)(object.value)) { 10 | $start += 1 11 | } else if ((value => value <= 0x3fff)(object.value)) { 12 | $start += 2 13 | } else if ((value => value <= 0x1fffff)(object.value)) { 14 | $start += 3 15 | } else { 16 | $start += 4 17 | } 18 | 19 | $start += 1 20 | 21 | return $start 22 | } 23 | } () 24 | } 25 | -------------------------------------------------------------------------------- /test/generated/conditional/mysql.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/conditional/mysql.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | 7 | if ((value => value < 251)(object.value)) { 8 | $start += 1 9 | } else if ((value => value >= 251 && value < 2 ** 16)(object.value)) { 10 | $start += 3 11 | } else { 12 | $start += 4 13 | } 14 | 15 | $start += 1 16 | 17 | return $start 18 | } 19 | } () 20 | } 21 | -------------------------------------------------------------------------------- /test/generated/conditional/packed/named.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/conditional/packed/named.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 2 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/conditional/packed/positional.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/conditional/packed/positional.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 2 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/conditional/sipless.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/conditional/sipless.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | 9 | if (((_, $) => $.type == 0)(object.value, object)) { 10 | $start += 2 11 | } else if (((_, $) => $.type == 1)(object.value, object)) { 12 | $start += 3 13 | } else { 14 | $start += 4 15 | } 16 | 17 | $start += 1 18 | 19 | return $start 20 | } 21 | } () 22 | } 23 | -------------------------------------------------------------------------------- /test/generated/conditional/unconditional/sip.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/conditional/unconditional/sip.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let $sip = [] 6 | 7 | let object = { 8 | nudge: 0, 9 | value: 0, 10 | sentry: 0 11 | } 12 | 13 | object.nudge = $buffer[$start++] 14 | 15 | object.value = 16 | $buffer[$start++] << 8 | 17 | $buffer[$start++] 18 | 19 | object.sentry = $buffer[$start++] 20 | 21 | return object 22 | } 23 | } () 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /test/generated/conditional/unconditional/sip.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | $buffer[$start++] = object.nudge & 0xff 6 | 7 | $buffer[$start++] = object.value >>> 8 & 0xff 8 | $buffer[$start++] = object.value & 0xff 9 | 10 | $buffer[$start++] = object.sentry & 0xff 11 | 12 | return { start: $start, serialize: null } 13 | } 14 | } () 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /test/generated/conditional/unconditional/sip.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | $start += 2 9 | 10 | $start += 1 11 | 12 | return $start 13 | } 14 | } () 15 | } 16 | -------------------------------------------------------------------------------- /test/generated/conditional/unconditional/split.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/conditional/unconditional/split.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let object = { 6 | nudge: 0, 7 | value: 0, 8 | sentry: 0 9 | } 10 | 11 | object.nudge = $buffer[$start++] 12 | 13 | object.value = $buffer[$start++] 14 | 15 | object.sentry = $buffer[$start++] 16 | 17 | return object 18 | } 19 | } () 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /test/generated/conditional/unconditional/split.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | $buffer[$start++] = object.nudge & 0xff 6 | 7 | $buffer[$start++] = object.value & 0xff 8 | 9 | $buffer[$start++] = object.sentry & 0xff 10 | 11 | return { start: $start, serialize: null } 12 | } 13 | } () 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /test/generated/conditional/unconditional/split.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | $start += 1 9 | 10 | $start += 1 11 | 12 | return $start 13 | } 14 | } () 15 | } 16 | -------------------------------------------------------------------------------- /test/generated/conditional/vivify.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/fixed/calculated/chunked/multiple.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/fixed/calculated/chunked/multiple.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | $start += (() => 8)() * 1 9 | 10 | $start += 1 11 | 12 | return $start 13 | } 14 | } () 15 | } 16 | -------------------------------------------------------------------------------- /test/generated/fixed/calculated/chunked/single.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/fixed/calculated/chunked/single.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | $start += (() => 8)() * 1 9 | 10 | $start += 1 11 | 12 | return $start 13 | } 14 | } () 15 | } 16 | -------------------------------------------------------------------------------- /test/generated/fixed/calculated/chunked/unpadded.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/fixed/calculated/chunked/unpadded.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let $_, $i = [], $I = [], $slice = null 6 | 7 | let object = { 8 | nudge: 0, 9 | array: null, 10 | sentry: 0 11 | } 12 | 13 | object.nudge = $buffer[$start++] 14 | 15 | $I[0] = (() => 8)() 16 | 17 | $slice = $buffer.slice($start, $start + $I[0]) 18 | $start += $I[0] 19 | object.array = [ $slice ] 20 | 21 | object.sentry = $buffer[$start++] 22 | 23 | return object 24 | } 25 | } () 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /test/generated/fixed/calculated/chunked/unpadded.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | $start += (() => 8)() * 1 9 | 10 | $start += 1 11 | 12 | return $start 13 | } 14 | } () 15 | } 16 | -------------------------------------------------------------------------------- /test/generated/fixed/calculated/concat/multiple.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/fixed/calculated/concat/multiple.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | $start += (() => 8)() * 1 9 | 10 | $start += 1 11 | 12 | return $start 13 | } 14 | } () 15 | } 16 | -------------------------------------------------------------------------------- /test/generated/fixed/calculated/concat/single.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/fixed/calculated/concat/single.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | $start += (() => 8)() * 1 9 | 10 | $start += 1 11 | 12 | return $start 13 | } 14 | } () 15 | } 16 | -------------------------------------------------------------------------------- /test/generated/fixed/calculated/concat/unpadded.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/fixed/calculated/concat/unpadded.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let $_, $i = [], $I = [], $slice = null 6 | 7 | let object = { 8 | nudge: 0, 9 | array: null, 10 | sentry: 0 11 | } 12 | 13 | object.nudge = $buffer[$start++] 14 | 15 | $I[0] = (() => 8)() 16 | 17 | $slice = $buffer.slice($start, $start + $I[0]) 18 | $start += $I[0] 19 | object.array = $slice 20 | 21 | object.sentry = $buffer[$start++] 22 | 23 | return object 24 | } 25 | } () 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /test/generated/fixed/calculated/concat/unpadded.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | let $_, $i = [], $I = [] 6 | 7 | $buffer[$start++] = object.nudge & 0xff 8 | 9 | $I[0] = (() => 8)() 10 | 11 | $_ = 0 12 | object.array.copy($buffer, $start) 13 | $start += object.array.length 14 | $_ += object.array.length 15 | 16 | $buffer[$start++] = object.sentry & 0xff 17 | 18 | return { start: $start, serialize: null } 19 | } 20 | } () 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /test/generated/fixed/calculated/concat/unpadded.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | $start += (() => 8)() * 1 9 | 10 | $start += 1 11 | 12 | return $start 13 | } 14 | } () 15 | } 16 | -------------------------------------------------------------------------------- /test/generated/fixed/calculated/nested/array.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/fixed/calculated/nested/array.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0, $i = [] 5 | 6 | $start += 1 7 | 8 | for ($i[0] = 0; $i[0] < object.array.length; $i[0]++) { 9 | $start += 1 10 | 11 | $start += 1 * object.array[$i[0]].length 12 | } 13 | 14 | $start += 1 15 | 16 | return $start 17 | } 18 | } () 19 | } 20 | -------------------------------------------------------------------------------- /test/generated/fixed/calculated/words/multiple.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/fixed/calculated/words/multiple.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | $start += (() => 16)() * 1 9 | 10 | $start += 1 11 | 12 | return $start 13 | } 14 | } () 15 | } 16 | -------------------------------------------------------------------------------- /test/generated/fixed/calculated/words/single.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/fixed/calculated/words/single.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | $start += (() => 8)() * 1 9 | 10 | $start += 1 11 | 12 | return $start 13 | } 14 | } () 15 | } 16 | -------------------------------------------------------------------------------- /test/generated/fixed/calculated/words/unpadded.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/fixed/calculated/words/unpadded.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | let $i = [], $I = [] 6 | 7 | $buffer[$start++] = object.nudge & 0xff 8 | 9 | $I[0] = (() => 4)() 10 | 11 | for ($i[0] = 0; $i[0] < $I[0]; $i[0]++) { 12 | $buffer[$start++] = object.array[$i[0]] >>> 8 & 0xff 13 | $buffer[$start++] = object.array[$i[0]] & 0xff 14 | } 15 | 16 | $buffer[$start++] = object.sentry & 0xff 17 | 18 | return { start: $start, serialize: null } 19 | } 20 | } () 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /test/generated/fixed/calculated/words/unpadded.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | $start += (() => 4)() * 2 9 | 10 | $start += 1 11 | 12 | return $start 13 | } 14 | } () 15 | } 16 | -------------------------------------------------------------------------------- /test/generated/fixed/static/chunked/multiple.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/fixed/static/chunked/multiple.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 10 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/fixed/static/chunked/single.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/fixed/static/chunked/single.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 10 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/fixed/static/chunked/unpadded.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/fixed/static/chunked/unpadded.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let $_, $i = [], $slice = null 6 | 7 | let object = { 8 | nudge: 0, 9 | array: null, 10 | sentry: 0 11 | } 12 | 13 | object.nudge = $buffer[$start++] 14 | 15 | $slice = $buffer.slice($start, $start + 8) 16 | $start += 8 17 | object.array = [ $slice ] 18 | 19 | object.sentry = $buffer[$start++] 20 | 21 | return object 22 | } 23 | } () 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /test/generated/fixed/static/chunked/unpadded.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | let $_, $i = [] 6 | 7 | $buffer[$start++] = object.nudge & 0xff 8 | 9 | $_ = 0 10 | for ($i[0] = 0; $i[0] < object.array.length; $i[0]++) { 11 | object.array[$i[0]].copy($buffer, $start) 12 | $start += object.array[$i[0]].length 13 | $_ += object.array[$i[0]].length 14 | } 15 | 16 | $buffer[$start++] = object.sentry & 0xff 17 | 18 | return { start: $start, serialize: null } 19 | } 20 | } () 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /test/generated/fixed/static/chunked/unpadded.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 10 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/fixed/static/concat/multiple.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/fixed/static/concat/multiple.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | let $_, $i = [] 6 | 7 | $buffer[$start++] = object.nudge & 0xff 8 | 9 | $_ = 0 10 | object.array.copy($buffer, $start) 11 | $start += object.array.length 12 | $_ += object.array.length 13 | 14 | $_ = 8 - $_ 15 | $buffer.fill(Buffer.from([ 0xa, 0xb ]), $start, $start + $_) 16 | $start += $_ 17 | 18 | $buffer[$start++] = object.sentry & 0xff 19 | 20 | return { start: $start, serialize: null } 21 | } 22 | } () 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /test/generated/fixed/static/concat/multiple.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 10 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/fixed/static/concat/single.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/fixed/static/concat/single.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | let $_, $i = [] 6 | 7 | $buffer[$start++] = object.nudge & 0xff 8 | 9 | $_ = 0 10 | object.array.copy($buffer, $start) 11 | $start += object.array.length 12 | $_ += object.array.length 13 | 14 | $_ = 8 - $_ 15 | $buffer.fill(0x0, $start, $start + $_) 16 | $start += $_ 17 | 18 | $buffer[$start++] = object.sentry & 0xff 19 | 20 | return { start: $start, serialize: null } 21 | } 22 | } () 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /test/generated/fixed/static/concat/single.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 10 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/fixed/static/concat/unpadded.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/fixed/static/concat/unpadded.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let $_, $i = [], $slice = null 6 | 7 | let object = { 8 | nudge: 0, 9 | array: null, 10 | sentry: 0 11 | } 12 | 13 | object.nudge = $buffer[$start++] 14 | 15 | $slice = $buffer.slice($start, $start + 8) 16 | $start += 8 17 | object.array = $slice 18 | 19 | object.sentry = $buffer[$start++] 20 | 21 | return object 22 | } 23 | } () 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /test/generated/fixed/static/concat/unpadded.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | let $_, $i = [] 6 | 7 | $buffer[$start++] = object.nudge & 0xff 8 | 9 | $_ = 0 10 | object.array.copy($buffer, $start) 11 | $start += object.array.length 12 | $_ += object.array.length 13 | 14 | $buffer[$start++] = object.sentry & 0xff 15 | 16 | return { start: $start, serialize: null } 17 | } 18 | } () 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /test/generated/fixed/static/concat/unpadded.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 10 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/fixed/static/nested/array.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/fixed/static/nested/array.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0, $i = [] 5 | 6 | $start += 1 7 | 8 | for ($i[0] = 0; $i[0] < object.array.length; $i[0]++) { 9 | $start += 1 10 | 11 | $start += 1 * object.array[$i[0]].length 12 | } 13 | 14 | $start += 1 15 | 16 | return $start 17 | } 18 | } () 19 | } 20 | -------------------------------------------------------------------------------- /test/generated/fixed/static/words/multiple.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/fixed/static/words/multiple.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 18 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/fixed/static/words/single.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/fixed/static/words/single.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 10 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/fixed/static/words/unpadded.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/fixed/static/words/unpadded.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | let $i = [] 6 | 7 | $buffer[$start++] = object.nudge & 0xff 8 | 9 | for ($i[0] = 0; $i[0] < object.array.length; $i[0]++) { 10 | $buffer[$start++] = object.array[$i[0]] >>> 8 & 0xff 11 | $buffer[$start++] = object.array[$i[0]] & 0xff 12 | } 13 | 14 | $buffer[$start++] = object.sentry & 0xff 15 | 16 | return { start: $start, serialize: null } 17 | } 18 | } () 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /test/generated/fixed/static/words/unpadded.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 10 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/ieee/be/double.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/ieee/be/double.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let $_, $i = [], $slice = null 6 | 7 | let object = { 8 | value: null, 9 | sentry: 0 10 | } 11 | 12 | $slice = $buffer.slice($start, $start + 8) 13 | $start += 8 14 | object.value = $slice 15 | 16 | object.value = (function (value) { 17 | return value.readDoubleBE() 18 | })(object.value) 19 | 20 | object.sentry = $buffer[$start++] 21 | 22 | return object 23 | } 24 | } () 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /test/generated/ieee/be/double.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | let $_, $i = [], $$ = [] 6 | 7 | $$[0] = (function (value) { 8 | const buffer = Buffer.alloc(8) 9 | buffer.writeDoubleBE(value) 10 | return buffer 11 | })(object.value) 12 | 13 | $_ = 0 14 | $$[0].copy($buffer, $start) 15 | $start += $$[0].length 16 | $_ += $$[0].length 17 | 18 | $buffer[$start++] = object.sentry & 0xff 19 | 20 | return { start: $start, serialize: null } 21 | } 22 | } () 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /test/generated/ieee/be/double.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 9 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/ieee/be/float.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/ieee/be/float.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let $_, $i = [], $slice = null 6 | 7 | let object = { 8 | value: null, 9 | sentry: 0 10 | } 11 | 12 | $slice = $buffer.slice($start, $start + 4) 13 | $start += 4 14 | object.value = $slice 15 | 16 | object.value = (function (value) { 17 | return value.readFloatBE() 18 | })(object.value) 19 | 20 | object.sentry = $buffer[$start++] 21 | 22 | return object 23 | } 24 | } () 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /test/generated/ieee/be/float.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | let $_, $i = [], $$ = [] 6 | 7 | $$[0] = (function (value) { 8 | const buffer = Buffer.alloc(4) 9 | buffer.writeFloatBE(value) 10 | return buffer 11 | })(object.value) 12 | 13 | $_ = 0 14 | $$[0].copy($buffer, $start) 15 | $start += $$[0].length 16 | $_ += $$[0].length 17 | 18 | $buffer[$start++] = object.sentry & 0xff 19 | 20 | return { start: $start, serialize: null } 21 | } 22 | } () 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /test/generated/ieee/be/float.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 5 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/ieee/le/double.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/ieee/le/double.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let $_, $i = [], $slice = null 6 | 7 | let object = { 8 | value: null, 9 | sentry: 0 10 | } 11 | 12 | $slice = $buffer.slice($start, $start + 8) 13 | $start += 8 14 | object.value = $slice 15 | 16 | object.value = (function (value) { 17 | return value.readDoubleBE() 18 | })(object.value) 19 | 20 | object.sentry = $buffer[$start++] 21 | 22 | return object 23 | } 24 | } () 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /test/generated/ieee/le/double.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | let $_, $i = [], $$ = [] 6 | 7 | $$[0] = (function (value) { 8 | const buffer = Buffer.alloc(8) 9 | buffer.writeDoubleBE(value) 10 | return buffer 11 | })(object.value) 12 | 13 | $_ = 0 14 | $$[0].copy($buffer, $start) 15 | $start += $$[0].length 16 | $_ += $$[0].length 17 | 18 | $buffer[$start++] = object.sentry & 0xff 19 | 20 | return { start: $start, serialize: null } 21 | } 22 | } () 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /test/generated/ieee/le/double.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 9 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/ieee/le/float.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/ieee/le/float.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let $_, $i = [], $slice = null 6 | 7 | let object = { 8 | value: null, 9 | sentry: 0 10 | } 11 | 12 | $slice = $buffer.slice($start, $start + 4) 13 | $start += 4 14 | object.value = $slice 15 | 16 | object.value = (function (value) { 17 | return value.readFloatBE() 18 | })(object.value) 19 | 20 | object.sentry = $buffer[$start++] 21 | 22 | return object 23 | } 24 | } () 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /test/generated/ieee/le/float.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | let $_, $i = [], $$ = [] 6 | 7 | $$[0] = (function (value) { 8 | const buffer = Buffer.alloc(4) 9 | buffer.writeFloatBE(value) 10 | return buffer 11 | })(object.value) 12 | 13 | $_ = 0 14 | $$[0].copy($buffer, $start) 15 | $start += $$[0].length 16 | $_ += $$[0].length 17 | 18 | $buffer[$start++] = object.sentry & 0xff 19 | 20 | return { start: $start, serialize: null } 21 | } 22 | } () 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /test/generated/ieee/le/float.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 5 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/ieee/specified/be/double.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/ieee/specified/be/double.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let $_, $i = [], $slice = null 6 | 7 | let object = { 8 | value: null, 9 | sentry: 0 10 | } 11 | 12 | $slice = $buffer.slice($start, $start + 8) 13 | $start += 8 14 | object.value = $slice 15 | 16 | object.value = (function (value) { 17 | return value.readDoubleBE() 18 | })(object.value) 19 | 20 | object.sentry = $buffer[$start++] 21 | 22 | return object 23 | } 24 | } () 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /test/generated/ieee/specified/be/double.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | let $_, $i = [], $$ = [] 6 | 7 | $$[0] = (function (value) { 8 | const buffer = Buffer.alloc(8) 9 | buffer.writeDoubleBE(value) 10 | return buffer 11 | })(object.value) 12 | 13 | $_ = 0 14 | $$[0].copy($buffer, $start) 15 | $start += $$[0].length 16 | $_ += $$[0].length 17 | 18 | $buffer[$start++] = object.sentry & 0xff 19 | 20 | return { start: $start, serialize: null } 21 | } 22 | } () 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /test/generated/ieee/specified/be/double.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 9 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/ieee/specified/be/float.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/ieee/specified/be/float.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let $_, $i = [], $slice = null 6 | 7 | let object = { 8 | value: null, 9 | sentry: 0 10 | } 11 | 12 | $slice = $buffer.slice($start, $start + 4) 13 | $start += 4 14 | object.value = $slice 15 | 16 | object.value = (function (value) { 17 | return value.readFloatBE() 18 | })(object.value) 19 | 20 | object.sentry = $buffer[$start++] 21 | 22 | return object 23 | } 24 | } () 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /test/generated/ieee/specified/be/float.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | let $_, $i = [], $$ = [] 6 | 7 | $$[0] = (function (value) { 8 | const buffer = Buffer.alloc(4) 9 | buffer.writeFloatBE(value) 10 | return buffer 11 | })(object.value) 12 | 13 | $_ = 0 14 | $$[0].copy($buffer, $start) 15 | $start += $$[0].length 16 | $_ += $$[0].length 17 | 18 | $buffer[$start++] = object.sentry & 0xff 19 | 20 | return { start: $start, serialize: null } 21 | } 22 | } () 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /test/generated/ieee/specified/be/float.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 5 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/ieee/specified/le/double.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/ieee/specified/le/double.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let $_, $i = [], $slice = null 6 | 7 | let object = { 8 | value: null, 9 | sentry: 0 10 | } 11 | 12 | $slice = $buffer.slice($start, $start + 8) 13 | $start += 8 14 | object.value = $slice 15 | 16 | object.value = (function (value) { 17 | return value.readDoubleLE() 18 | })(object.value) 19 | 20 | object.sentry = $buffer[$start++] 21 | 22 | return object 23 | } 24 | } () 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /test/generated/ieee/specified/le/double.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | let $_, $i = [], $$ = [] 6 | 7 | $$[0] = (function (value) { 8 | const buffer = Buffer.alloc(8) 9 | buffer.writeDoubleLE(value) 10 | return buffer 11 | })(object.value) 12 | 13 | $_ = 0 14 | $$[0].copy($buffer, $start) 15 | $start += $$[0].length 16 | $_ += $$[0].length 17 | 18 | $buffer[$start++] = object.sentry & 0xff 19 | 20 | return { start: $start, serialize: null } 21 | } 22 | } () 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /test/generated/ieee/specified/le/double.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 9 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/ieee/specified/le/float.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/ieee/specified/le/float.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let $_, $i = [], $slice = null 6 | 7 | let object = { 8 | value: null, 9 | sentry: 0 10 | } 11 | 12 | $slice = $buffer.slice($start, $start + 4) 13 | $start += 4 14 | object.value = $slice 15 | 16 | object.value = (function (value) { 17 | return value.readFloatLE() 18 | })(object.value) 19 | 20 | object.sentry = $buffer[$start++] 21 | 22 | return object 23 | } 24 | } () 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /test/generated/ieee/specified/le/float.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | let $_, $i = [], $$ = [] 6 | 7 | $$[0] = (function (value) { 8 | const buffer = Buffer.alloc(4) 9 | buffer.writeFloatLE(value) 10 | return buffer 11 | })(object.value) 12 | 13 | $_ = 0 14 | $$[0].copy($buffer, $start) 15 | $start += $$[0].length 16 | $_ += $$[0].length 17 | 18 | $buffer[$start++] = object.sentry & 0xff 19 | 20 | return { start: $start, serialize: null } 21 | } 22 | } () 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /test/generated/ieee/specified/le/float.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 5 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/inline/after.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/inline/after.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let object = { 6 | value: 0, 7 | sentry: 0 8 | } 9 | 10 | object.value = 11 | $buffer[$start++] << 8 | 12 | $buffer[$start++] 13 | 14 | object.value = (value => value)(object.value) 15 | 16 | object.sentry = $buffer[$start++] 17 | 18 | return object 19 | } 20 | } () 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /test/generated/inline/after.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | $buffer[$start++] = object.value >>> 8 & 0xff 6 | $buffer[$start++] = object.value & 0xff 7 | 8 | $buffer[$start++] = object.sentry & 0xff 9 | 10 | return { start: $start, serialize: null } 11 | } 12 | } () 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /test/generated/inline/after.serializer.bff.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object) { 5 | return function ($buffer, $start, $end) { 6 | if ($end - $start < 1 + 2) { 7 | return $incremental.object(object, 0)($buffer, $start, $end) 8 | } 9 | 10 | $buffer[$start++] = object.value >>> 8 & 0xff 11 | $buffer[$start++] = object.value & 0xff 12 | 13 | $buffer[$start++] = object.sentry & 0xff 14 | 15 | return { start: $start, serialize: null } 16 | } 17 | } 18 | } () 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /test/generated/inline/after.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 3 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/inline/array.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/inline/array.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0, $$ = [] 5 | 6 | $start += 1 7 | 8 | $$[0] = (function ($_) { 9 | return $_.slice().reverse() 10 | })(object.value) 11 | 12 | $start += 1 13 | 14 | $start += 1 * $$[0].length 15 | 16 | $start += 1 17 | 18 | return $start 19 | } 20 | } () 21 | } 22 | -------------------------------------------------------------------------------- /test/generated/inline/before.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/inline/before.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let object = { 6 | value: 0, 7 | sentry: 0 8 | } 9 | 10 | object.value = 11 | $buffer[$start++] << 8 | 12 | $buffer[$start++] 13 | 14 | object.sentry = $buffer[$start++] 15 | 16 | return object 17 | } 18 | } () 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /test/generated/inline/before.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | let $$ = [] 6 | 7 | $$[0] = (value => value)(object.value) 8 | 9 | $buffer[$start++] = $$[0] >>> 8 & 0xff 10 | $buffer[$start++] = $$[0] & 0xff 11 | 12 | $buffer[$start++] = object.sentry & 0xff 13 | 14 | return { start: $start, serialize: null } 15 | } 16 | } () 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /test/generated/inline/before.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 3 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/inline/both.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/inline/both.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let $_ 6 | 7 | let object = { 8 | value: 0, 9 | sentry: 0 10 | } 11 | 12 | $_ = 13 | $buffer[$start++] << 8 | 14 | $buffer[$start++] 15 | 16 | object.value = $_ & 0x8000 ? (0xffff - $_ + 1) * -1 : $_ 17 | 18 | object.value = (value => -value)(object.value) 19 | 20 | object.sentry = $buffer[$start++] 21 | 22 | return object 23 | } 24 | } () 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /test/generated/inline/both.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | let $$ = [] 6 | 7 | $$[0] = (value => -value)(object.value) 8 | 9 | $buffer[$start++] = $$[0] >>> 8 & 0xff 10 | $buffer[$start++] = $$[0] & 0xff 11 | 12 | $buffer[$start++] = object.sentry & 0xff 13 | 14 | return { start: $start, serialize: null } 15 | } 16 | } () 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /test/generated/inline/both.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 3 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/inline/converted.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/inline/converted.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let $_, $i = [] 6 | 7 | let object = { 8 | value: null, 9 | sentry: 0 10 | } 11 | 12 | $_ = $buffer.indexOf(Buffer.from([ 0 ]), $start) 13 | $_ = ~$_ ? $_ : $start 14 | object.value = $buffer.slice($start, $_) 15 | $start = $_ + 1 16 | 17 | object.value = ((value) => parseInt(value.toString(), 10))(object.value) 18 | 19 | object.sentry = $buffer[$start++] 20 | 21 | return object 22 | } 23 | } () 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /test/generated/inline/converted.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | let $i = [], $$ = [] 6 | 7 | $$[0] = ((value) => Buffer.from(String(value)))(object.value) 8 | 9 | $$[0].copy($buffer, $start, 0, $$[0].length) 10 | $start += $$[0].length 11 | 12 | $buffer[$start++] = 0x0 13 | 14 | $buffer[$start++] = object.sentry & 0xff 15 | 16 | return { start: $start, serialize: null } 17 | } 18 | } () 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /test/generated/inline/converted.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0, $$ = [] 5 | 6 | $$[0] = ((value) => Buffer.from(String(value)))(object.value) 7 | 8 | $start += 1 * $$[0].length + 1 9 | 10 | $start += 1 11 | 12 | return $start 13 | } 14 | } () 15 | } 16 | -------------------------------------------------------------------------------- /test/generated/inline/elided.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/inline/elided.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let object = { 6 | value: 0 7 | } 8 | 9 | object.value = 10 | $buffer[$start++] << 8 | 11 | $buffer[$start++] 12 | 13 | object = (value => value)(object) 14 | 15 | return object 16 | } 17 | } () 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /test/generated/inline/elided.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | let $$ = [] 6 | 7 | $$[0] = (value => value)(object) 8 | 9 | $buffer[$start++] = $$[0].value >>> 8 & 0xff 10 | $buffer[$start++] = $$[0].value & 0xff 11 | 12 | return { start: $start, serialize: null } 13 | } 14 | } () 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /test/generated/inline/elided.serializer.bff.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object) { 5 | return function ($buffer, $start, $end) { 6 | let $$ = [] 7 | 8 | if ($end - $start < 2) { 9 | return $incremental.object(object, 0, $$)($buffer, $start, $end) 10 | } 11 | 12 | $$[0] = (value => value)(object) 13 | 14 | $buffer[$start++] = $$[0].value >>> 8 & 0xff 15 | $buffer[$start++] = $$[0].value & 0xff 16 | 17 | return { start: $start, serialize: null } 18 | } 19 | } 20 | } () 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /test/generated/inline/elided.serializer.chk.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object) { 5 | return function ($buffer, $start, $end) { 6 | let $$ = [] 7 | 8 | $$[0] = (value => value)(object) 9 | 10 | if ($end - $start < 2) { 11 | return $incremental.object(object, 1, $$)($buffer, $start, $end) 12 | } 13 | 14 | $buffer[$start++] = $$[0].value >>> 8 & 0xff 15 | $buffer[$start++] = $$[0].value & 0xff 16 | 17 | return { start: $start, serialize: null } 18 | } 19 | } 20 | } () 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /test/generated/inline/elided.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 2 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/inline/mirrored.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/inline/mirrored.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let object = { 6 | value: 0, 7 | sentry: 0 8 | } 9 | 10 | object.value = ( 11 | $buffer[$start++] << 24 | 12 | $buffer[$start++] << 16 | 13 | $buffer[$start++] << 8 | 14 | $buffer[$start++] 15 | ) >>> 0 16 | 17 | object.value = (value => ~value)(object.value) 18 | 19 | object.sentry = $buffer[$start++] 20 | 21 | return object 22 | } 23 | } () 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /test/generated/inline/mirrored.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | let $$ = [] 6 | 7 | $$[0] = (value => ~value)(object.value) 8 | 9 | $buffer[$start++] = $$[0] >>> 24 & 0xff 10 | $buffer[$start++] = $$[0] >>> 16 & 0xff 11 | $buffer[$start++] = $$[0] >>> 8 & 0xff 12 | $buffer[$start++] = $$[0] & 0xff 13 | 14 | $buffer[$start++] = object.sentry & 0xff 15 | 16 | return { start: $start, serialize: null } 17 | } 18 | } () 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /test/generated/inline/mirrored.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 5 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/inline/named.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/inline/named.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 5 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/integer/be/compliment/int.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/integer/be/compliment/int.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let $_ 6 | 7 | let object = { 8 | value: 0 9 | } 10 | 11 | $_ = ( 12 | $buffer[$start++] << 24 | 13 | $buffer[$start++] << 16 | 14 | $buffer[$start++] << 8 | 15 | $buffer[$start++] 16 | ) >>> 0 17 | 18 | object.value = $_ & 0x80000000 ? (0xffffffff - $_ + 1) * -1 : $_ 19 | 20 | return object 21 | } 22 | } () 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /test/generated/integer/be/compliment/int.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | $buffer[$start++] = object.value >>> 24 & 0xff 6 | $buffer[$start++] = object.value >>> 16 & 0xff 7 | $buffer[$start++] = object.value >>> 8 & 0xff 8 | $buffer[$start++] = object.value & 0xff 9 | 10 | return { start: $start, serialize: null } 11 | } 12 | } () 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /test/generated/integer/be/compliment/int.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 4 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/integer/be/compliment/long.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | $lookup.push.apply($lookup, []) 3 | } 4 | -------------------------------------------------------------------------------- /test/generated/integer/be/compliment/long.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ sizeOf }) { 2 | sizeOf.object = function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 8 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/integer/be/compliment/short.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/integer/be/compliment/short.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let $_ 6 | 7 | let object = { 8 | value: 0 9 | } 10 | 11 | $_ = 12 | $buffer[$start++] << 8 | 13 | $buffer[$start++] 14 | 15 | object.value = $_ & 0x8000 ? (0xffff - $_ + 1) * -1 : $_ 16 | 17 | return object 18 | } 19 | } () 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /test/generated/integer/be/compliment/short.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | $buffer[$start++] = object.value >>> 8 & 0xff 6 | $buffer[$start++] = object.value & 0xff 7 | 8 | return { start: $start, serialize: null } 9 | } 10 | } () 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /test/generated/integer/be/compliment/short.serializer.bff.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object) { 5 | return function ($buffer, $start, $end) { 6 | if ($end - $start < 2) { 7 | return $incremental.object(object, 0)($buffer, $start, $end) 8 | } 9 | 10 | $buffer[$start++] = object.value >>> 8 & 0xff 11 | $buffer[$start++] = object.value & 0xff 12 | 13 | return { start: $start, serialize: null } 14 | } 15 | } 16 | } () 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /test/generated/integer/be/compliment/short.serializer.chk.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object) { 5 | return function ($buffer, $start, $end) { 6 | if ($end - $start < 2) { 7 | return $incremental.object(object, 0)($buffer, $start, $end) 8 | } 9 | 10 | $buffer[$start++] = object.value >>> 8 & 0xff 11 | $buffer[$start++] = object.value & 0xff 12 | 13 | return { start: $start, serialize: null } 14 | } 15 | } 16 | } () 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /test/generated/integer/be/compliment/short.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 2 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/integer/be/word/int.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/integer/be/word/int.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let object = { 6 | value: 0 7 | } 8 | 9 | object.value = ( 10 | $buffer[$start++] << 24 | 11 | $buffer[$start++] << 16 | 12 | $buffer[$start++] << 8 | 13 | $buffer[$start++] 14 | ) >>> 0 15 | 16 | return object 17 | } 18 | } () 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /test/generated/integer/be/word/int.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | $buffer[$start++] = object.value >>> 24 & 0xff 6 | $buffer[$start++] = object.value >>> 16 & 0xff 7 | $buffer[$start++] = object.value >>> 8 & 0xff 8 | $buffer[$start++] = object.value & 0xff 9 | 10 | return { start: $start, serialize: null } 11 | } 12 | } () 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /test/generated/integer/be/word/int.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 4 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/integer/be/word/long.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | $lookup.push.apply($lookup, []) 3 | } 4 | -------------------------------------------------------------------------------- /test/generated/integer/be/word/long.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ parsers, $lookup }) { 2 | parsers.all.object = function () { 3 | return function ($buffer, $start) { 4 | let object = { 5 | value: 0 6 | } 7 | 8 | object.value = 9 | (BigInt($buffer[$start++]) << 56n) + 10 | (BigInt($buffer[$start++]) << 48n) + 11 | (BigInt($buffer[$start++]) << 40n) + 12 | (BigInt($buffer[$start++]) << 32n) + 13 | (BigInt($buffer[$start++]) << 24n) + 14 | (BigInt($buffer[$start++]) << 16n) + 15 | (BigInt($buffer[$start++]) << 8n) + 16 | BigInt($buffer[$start++]) 17 | 18 | return object 19 | } 20 | } () 21 | } 22 | -------------------------------------------------------------------------------- /test/generated/integer/be/word/long.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ sizeOf }) { 2 | sizeOf.object = function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 8 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/integer/be/word/short.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/integer/be/word/short.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let object = { 6 | value: 0 7 | } 8 | 9 | object.value = 10 | $buffer[$start++] << 8 | 11 | $buffer[$start++] 12 | 13 | return object 14 | } 15 | } () 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /test/generated/integer/be/word/short.parser.bff.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function () { 5 | return function ($buffer, $start, $end) { 6 | let object = { 7 | value: 0 8 | } 9 | 10 | if ($end - $start < 2) { 11 | return $incremental.object(object, 1)($buffer, $start, $end) 12 | } 13 | 14 | object.value = 15 | $buffer[$start++] << 8 | 16 | $buffer[$start++] 17 | 18 | return { start: $start, object: object, parse: null } 19 | } 20 | } () 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /test/generated/integer/be/word/short.parser.chk.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function () { 5 | return function ($buffer, $start, $end) { 6 | let object = { 7 | value: 0 8 | } 9 | 10 | if ($end - $start < 2) { 11 | return $incremental.object(object, 1)($buffer, $start, $end) 12 | } 13 | 14 | object.value = 15 | $buffer[$start++] << 8 | 16 | $buffer[$start++] 17 | 18 | return { start: $start, object: object, parse: null } 19 | } 20 | } () 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /test/generated/integer/be/word/short.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | $buffer[$start++] = object.value >>> 8 & 0xff 6 | $buffer[$start++] = object.value & 0xff 7 | 8 | return { start: $start, serialize: null } 9 | } 10 | } () 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /test/generated/integer/be/word/short.serializer.bff.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object) { 5 | return function ($buffer, $start, $end) { 6 | if ($end - $start < 2) { 7 | return $incremental.object(object, 0)($buffer, $start, $end) 8 | } 9 | 10 | $buffer[$start++] = object.value >>> 8 & 0xff 11 | $buffer[$start++] = object.value & 0xff 12 | 13 | return { start: $start, serialize: null } 14 | } 15 | } 16 | } () 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /test/generated/integer/be/word/short.serializer.chk.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object) { 5 | return function ($buffer, $start, $end) { 6 | if ($end - $start < 2) { 7 | return $incremental.object(object, 0)($buffer, $start, $end) 8 | } 9 | 10 | $buffer[$start++] = object.value >>> 8 & 0xff 11 | $buffer[$start++] = object.value & 0xff 12 | 13 | return { start: $start, serialize: null } 14 | } 15 | } 16 | } () 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /test/generated/integer/be/word/short.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 2 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/integer/byte/whole.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/integer/byte/whole.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let object = { 6 | word: 0 7 | } 8 | 9 | object.word = $buffer[$start++] 10 | 11 | return object 12 | } 13 | } () 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /test/generated/integer/byte/whole.parser.bff.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function () { 5 | return function ($buffer, $start, $end) { 6 | let object = { 7 | word: 0 8 | } 9 | 10 | if ($end - $start < 1) { 11 | return $incremental.object(object, 1)($buffer, $start, $end) 12 | } 13 | 14 | object.word = $buffer[$start++] 15 | 16 | return { start: $start, object: object, parse: null } 17 | } 18 | } () 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /test/generated/integer/byte/whole.parser.chk.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function () { 5 | return function ($buffer, $start, $end) { 6 | let object = { 7 | word: 0 8 | } 9 | 10 | if ($end - $start < 1) { 11 | return $incremental.object(object, 1)($buffer, $start, $end) 12 | } 13 | 14 | object.word = $buffer[$start++] 15 | 16 | return { start: $start, object: object, parse: null } 17 | } 18 | } () 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /test/generated/integer/byte/whole.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | $buffer[$start++] = object.word & 0xff 6 | 7 | return { start: $start, serialize: null } 8 | } 9 | } () 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/integer/byte/whole.serializer.bff.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object) { 5 | return function ($buffer, $start, $end) { 6 | if ($end - $start < 1) { 7 | return $incremental.object(object, 0)($buffer, $start, $end) 8 | } 9 | 10 | $buffer[$start++] = object.word & 0xff 11 | 12 | return { start: $start, serialize: null } 13 | } 14 | } 15 | } () 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /test/generated/integer/byte/whole.serializer.chk.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object) { 5 | return function ($buffer, $start, $end) { 6 | if ($end - $start < 1) { 7 | return $incremental.object(object, 0)($buffer, $start, $end) 8 | } 9 | 10 | $buffer[$start++] = object.word & 0xff 11 | 12 | return { start: $start, serialize: null } 13 | } 14 | } 15 | } () 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /test/generated/integer/byte/whole.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/integer/le/compliment/int.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/integer/le/compliment/int.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let $_ 6 | 7 | let object = { 8 | value: 0 9 | } 10 | 11 | $_ = ( 12 | $buffer[$start++] | 13 | $buffer[$start++] << 8 | 14 | $buffer[$start++] << 16 | 15 | $buffer[$start++] << 24 16 | ) >>> 0 17 | 18 | object.value = $_ & 0x80000000 ? (0xffffffff - $_ + 1) * -1 : $_ 19 | 20 | return object 21 | } 22 | } () 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /test/generated/integer/le/compliment/int.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | $buffer[$start++] = object.value & 0xff 6 | $buffer[$start++] = object.value >>> 8 & 0xff 7 | $buffer[$start++] = object.value >>> 16 & 0xff 8 | $buffer[$start++] = object.value >>> 24 & 0xff 9 | 10 | return { start: $start, serialize: null } 11 | } 12 | } () 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /test/generated/integer/le/compliment/int.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 4 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/integer/le/compliment/long.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | $lookup.push.apply($lookup, []) 3 | } 4 | -------------------------------------------------------------------------------- /test/generated/integer/le/compliment/long.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ sizeOf }) { 2 | sizeOf.object = function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 8 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/integer/le/compliment/short.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/integer/le/compliment/short.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let $_ 6 | 7 | let object = { 8 | value: 0 9 | } 10 | 11 | $_ = 12 | $buffer[$start++] | 13 | $buffer[$start++] << 8 14 | 15 | object.value = $_ & 0x8000 ? (0xffff - $_ + 1) * -1 : $_ 16 | 17 | return object 18 | } 19 | } () 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /test/generated/integer/le/compliment/short.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | $buffer[$start++] = object.value & 0xff 6 | $buffer[$start++] = object.value >>> 8 & 0xff 7 | 8 | return { start: $start, serialize: null } 9 | } 10 | } () 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /test/generated/integer/le/compliment/short.serializer.bff.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object) { 5 | return function ($buffer, $start, $end) { 6 | if ($end - $start < 2) { 7 | return $incremental.object(object, 0)($buffer, $start, $end) 8 | } 9 | 10 | $buffer[$start++] = object.value & 0xff 11 | $buffer[$start++] = object.value >>> 8 & 0xff 12 | 13 | return { start: $start, serialize: null } 14 | } 15 | } 16 | } () 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /test/generated/integer/le/compliment/short.serializer.chk.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object) { 5 | return function ($buffer, $start, $end) { 6 | if ($end - $start < 2) { 7 | return $incremental.object(object, 0)($buffer, $start, $end) 8 | } 9 | 10 | $buffer[$start++] = object.value & 0xff 11 | $buffer[$start++] = object.value >>> 8 & 0xff 12 | 13 | return { start: $start, serialize: null } 14 | } 15 | } 16 | } () 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /test/generated/integer/le/compliment/short.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 2 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/integer/le/word/int.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/integer/le/word/int.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let object = { 6 | value: 0 7 | } 8 | 9 | object.value = ( 10 | $buffer[$start++] | 11 | $buffer[$start++] << 8 | 12 | $buffer[$start++] << 16 | 13 | $buffer[$start++] << 24 14 | ) >>> 0 15 | 16 | return object 17 | } 18 | } () 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /test/generated/integer/le/word/int.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | $buffer[$start++] = object.value & 0xff 6 | $buffer[$start++] = object.value >>> 8 & 0xff 7 | $buffer[$start++] = object.value >>> 16 & 0xff 8 | $buffer[$start++] = object.value >>> 24 & 0xff 9 | 10 | return { start: $start, serialize: null } 11 | } 12 | } () 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /test/generated/integer/le/word/int.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 4 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/integer/le/word/long.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | $lookup.push.apply($lookup, []) 3 | } 4 | -------------------------------------------------------------------------------- /test/generated/integer/le/word/long.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ parsers, $lookup }) { 2 | parsers.all.object = function () { 3 | return function ($buffer, $start) { 4 | let object = { 5 | value: 0 6 | } 7 | 8 | object.value = 9 | BigInt($buffer[$start++]) + 10 | (BigInt($buffer[$start++]) << 8n) + 11 | (BigInt($buffer[$start++]) << 16n) + 12 | (BigInt($buffer[$start++]) << 24n) + 13 | (BigInt($buffer[$start++]) << 32n) + 14 | (BigInt($buffer[$start++]) << 40n) + 15 | (BigInt($buffer[$start++]) << 48n) + 16 | (BigInt($buffer[$start++]) << 56n) 17 | 18 | return object 19 | } 20 | } () 21 | } 22 | -------------------------------------------------------------------------------- /test/generated/integer/le/word/long.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ sizeOf }) { 2 | sizeOf.object = function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 8 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/integer/le/word/short.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/integer/le/word/short.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let object = { 6 | value: 0 7 | } 8 | 9 | object.value = 10 | $buffer[$start++] | 11 | $buffer[$start++] << 8 12 | 13 | return object 14 | } 15 | } () 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /test/generated/integer/le/word/short.parser.bff.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function () { 5 | return function ($buffer, $start, $end) { 6 | let object = { 7 | value: 0 8 | } 9 | 10 | if ($end - $start < 2) { 11 | return $incremental.object(object, 1)($buffer, $start, $end) 12 | } 13 | 14 | object.value = 15 | $buffer[$start++] | 16 | $buffer[$start++] << 8 17 | 18 | return { start: $start, object: object, parse: null } 19 | } 20 | } () 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /test/generated/integer/le/word/short.parser.chk.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function () { 5 | return function ($buffer, $start, $end) { 6 | let object = { 7 | value: 0 8 | } 9 | 10 | if ($end - $start < 2) { 11 | return $incremental.object(object, 1)($buffer, $start, $end) 12 | } 13 | 14 | object.value = 15 | $buffer[$start++] | 16 | $buffer[$start++] << 8 17 | 18 | return { start: $start, object: object, parse: null } 19 | } 20 | } () 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /test/generated/integer/le/word/short.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | $buffer[$start++] = object.value & 0xff 6 | $buffer[$start++] = object.value >>> 8 & 0xff 7 | 8 | return { start: $start, serialize: null } 9 | } 10 | } () 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /test/generated/integer/le/word/short.serializer.bff.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object) { 5 | return function ($buffer, $start, $end) { 6 | if ($end - $start < 2) { 7 | return $incremental.object(object, 0)($buffer, $start, $end) 8 | } 9 | 10 | $buffer[$start++] = object.value & 0xff 11 | $buffer[$start++] = object.value >>> 8 & 0xff 12 | 13 | return { start: $start, serialize: null } 14 | } 15 | } 16 | } () 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /test/generated/integer/le/word/short.serializer.chk.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object) { 5 | return function ($buffer, $start, $end) { 6 | if ($end - $start < 2) { 7 | return $incremental.object(object, 0)($buffer, $start, $end) 8 | } 9 | 10 | $buffer[$start++] = object.value & 0xff 11 | $buffer[$start++] = object.value >>> 8 & 0xff 12 | 13 | return { start: $start, serialize: null } 14 | } 15 | } 16 | } () 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /test/generated/integer/le/word/short.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 2 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/integer/spread/set/short.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/integer/spread/set/short.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let object = { 6 | nudge: 0, 7 | value: 0, 8 | sentry: 0 9 | } 10 | 11 | object.nudge = $buffer[$start++] 12 | 13 | object.value = 14 | ($buffer[$start++] & 0x7f) << 7 | 15 | $buffer[$start++] 16 | 17 | object.sentry = $buffer[$start++] 18 | 19 | return object 20 | } 21 | } () 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /test/generated/integer/spread/set/short.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | $buffer[$start++] = object.nudge & 0xff 6 | 7 | $buffer[$start++] = object.value >>> 7 & 0x7f | 0x80 8 | $buffer[$start++] = object.value & 0x7f 9 | 10 | $buffer[$start++] = object.sentry & 0xff 11 | 12 | return { start: $start, serialize: null } 13 | } 14 | } () 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /test/generated/integer/spread/set/short.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 4 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/integer/spread/short.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | $lookup.push.apply($lookup, []) 3 | } 4 | -------------------------------------------------------------------------------- /test/generated/integer/spread/short.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ parsers, $lookup }) { 2 | parsers.all.object = function () { 3 | return function ($buffer, $start) { 4 | let object = { 5 | nudge: 0, 6 | value: 0, 7 | sentry: 0 8 | } 9 | 10 | object.nudge = ($buffer[$start++]) 11 | 12 | object.value = 13 | ($buffer[$start++]) * 0x80 + 14 | ($buffer[$start++]) 15 | 16 | object.sentry = ($buffer[$start++]) 17 | 18 | return object 19 | } 20 | } () 21 | } 22 | -------------------------------------------------------------------------------- /test/generated/integer/spread/short.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ serializers, $lookup }) { 2 | serializers.all.object = function () { 3 | return function (object, $buffer, $start) { 4 | $buffer[$start++] = (object.nudge & 0xff) 5 | 6 | $buffer[$start++] = (object.value >>> 7 & 0x7f) 7 | $buffer[$start++] = (object.value & 0x7f) 8 | 9 | $buffer[$start++] = (object.sentry & 0xff) 10 | 11 | return { start: $start, serialize: null } 12 | } 13 | } () 14 | } 15 | -------------------------------------------------------------------------------- /test/generated/integer/spread/short.serializer.bff.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ serializers, $lookup }) { 2 | serializers.bff.object = function () { 3 | return function (object) { 4 | return function ($buffer, $start, $end) { 5 | if ($end - $start < 4) { 6 | return serializers.inc.object(object, 0)($buffer, $start, $end) 7 | } 8 | 9 | $buffer[$start++] = (object.nudge & 0xff) 10 | 11 | $buffer[$start++] = (object.value >>> 7 & 0x7f) 12 | $buffer[$start++] = (object.value & 0x7f) 13 | 14 | $buffer[$start++] = (object.sentry & 0xff) 15 | 16 | return { start: $start, serialize: null } 17 | } 18 | } 19 | } () 20 | } 21 | -------------------------------------------------------------------------------- /test/generated/integer/spread/short.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ sizeOf }) { 2 | sizeOf.object = function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 4 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/integer/spread/unset/short.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/integer/spread/unset/short.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let object = { 6 | nudge: 0, 7 | value: 0, 8 | sentry: 0 9 | } 10 | 11 | object.nudge = $buffer[$start++] 12 | 13 | object.value = 14 | $buffer[$start++] << 7 | 15 | $buffer[$start++] 16 | 17 | object.sentry = $buffer[$start++] 18 | 19 | return object 20 | } 21 | } () 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /test/generated/integer/spread/unset/short.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | $buffer[$start++] = object.nudge & 0xff 6 | 7 | $buffer[$start++] = object.value >>> 7 & 0x7f 8 | $buffer[$start++] = object.value & 0x7f 9 | 10 | $buffer[$start++] = object.sentry & 0xff 11 | 12 | return { start: $start, serialize: null } 13 | } 14 | } () 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /test/generated/integer/spread/unset/short.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 4 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/literal/constant.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/literal/constant.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let object = { 6 | nudge: 0, 7 | sentry: 0 8 | } 9 | 10 | object.nudge = $buffer[$start++] 11 | 12 | $start += 1 13 | 14 | 15 | object.sentry = $buffer[$start++] 16 | 17 | return object 18 | } 19 | } () 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /test/generated/literal/constant.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | $buffer[$start++] = object.nudge & 0xff 6 | 7 | $buffer.write('fc', $start, $start + 1, 'hex') 8 | $start += 1 9 | 10 | 11 | $buffer[$start++] = object.sentry & 0xff 12 | 13 | return { start: $start, serialize: null } 14 | } 15 | } () 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /test/generated/literal/constant.serializer.bff.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object) { 5 | return function ($buffer, $start, $end) { 6 | if ($end - $start < 3) { 7 | return $incremental.object(object, 0)($buffer, $start, $end) 8 | } 9 | 10 | $buffer[$start++] = object.nudge & 0xff 11 | 12 | $buffer.write('fc', $start, $start + 1, 'hex') 13 | $start += 1 14 | 15 | 16 | $buffer[$start++] = object.sentry & 0xff 17 | 18 | return { start: $start, serialize: null } 19 | } 20 | } 21 | } () 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /test/generated/literal/constant.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 3 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/literal/repeated.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/literal/repeated.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let object = { 6 | nudge: 0, 7 | padded: 0, 8 | sentry: 0 9 | } 10 | 11 | object.nudge = $buffer[$start++] 12 | 13 | $start += 6 14 | 15 | object.padded = 16 | $buffer[$start++] << 8 | 17 | $buffer[$start++] 18 | 19 | $start += 6 20 | 21 | object.sentry = $buffer[$start++] 22 | 23 | return object 24 | } 25 | } () 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /test/generated/literal/repeated.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 16 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/literal/single.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/literal/single.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let object = { 6 | nudge: 0, 7 | padded: 0, 8 | sentry: 0 9 | } 10 | 11 | object.nudge = $buffer[$start++] 12 | 13 | $start += 3 14 | 15 | object.padded = 16 | $buffer[$start++] << 8 | 17 | $buffer[$start++] 18 | 19 | $start += 3 20 | 21 | object.sentry = $buffer[$start++] 22 | 23 | return object 24 | } 25 | } () 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /test/generated/literal/single.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | $buffer[$start++] = object.nudge & 0xff 6 | 7 | $buffer.write('0faded', $start, $start + 3, 'hex') 8 | $start += 3 9 | 10 | $buffer[$start++] = object.padded >>> 8 & 0xff 11 | $buffer[$start++] = object.padded & 0xff 12 | 13 | $buffer.write('facade', $start, $start + 3, 'hex') 14 | $start += 3 15 | 16 | $buffer[$start++] = object.sentry & 0xff 17 | 18 | return { start: $start, serialize: null } 19 | } 20 | } () 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /test/generated/literal/single.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 10 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/locket/key.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/locket/key.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 8 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/locket/meta.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [ [ 'del', 'put' ] ] 2 | -------------------------------------------------------------------------------- /test/generated/locket/meta.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 16 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/lookup.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [ 2 | [ 'off', 'on' ], 3 | [ 'no', 'yes' ], 4 | { 5 | forward: { '0': 'off', '1': 'on' }, 6 | reverse: { off: '0', on: '1' } 7 | } 8 | ] 9 | -------------------------------------------------------------------------------- /test/generated/lookup.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 6 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/miscelaneous/include.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/miscelaneous/include.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let $i = [], $I = [] 6 | 7 | let object = { 8 | nudge: 0, 9 | value: [], 10 | sentry: 0 11 | } 12 | 13 | object.nudge = $buffer[$start++] 14 | 15 | $I[0] = $buffer[$start++] 16 | $i[0] = 0 17 | 18 | for (; $i[0] < $I[0]; $i[0]++) { 19 | object.value[$i[0]] = $buffer[$start++] 20 | } 21 | 22 | object.sentry = $buffer[$start++] 23 | 24 | return object 25 | } 26 | } () 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /test/generated/miscelaneous/include.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | let $i = [] 6 | 7 | $buffer[$start++] = object.nudge & 0xff 8 | 9 | $buffer[$start++] = object.value.length & 0xff 10 | $i[0] = 0 11 | 12 | for (; $i[0] < object.value.length; $i[0]++) { 13 | $buffer[$start++] = object.value[$i[0]] & 0xff 14 | } 15 | 16 | $buffer[$start++] = object.sentry & 0xff 17 | 18 | return { start: $start, serialize: null } 19 | } 20 | } () 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /test/generated/miscelaneous/include.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | $start += 1 9 | 10 | $start += 1 * object.value.length 11 | 12 | $start += 1 13 | 14 | return $start 15 | } 16 | } () 17 | } 18 | -------------------------------------------------------------------------------- /test/generated/mqtt.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [ 2 | [ 3 | 'connect', 'connack', 4 | 'publish', 'puback', 5 | 'pubrec', 'pubrel', 6 | 'pubcomp', 'subscribe', 7 | 'suback', 'unsubscribe', 8 | 'unsuback', 'pingreq', 9 | 'pingresp', 'disconnect', 10 | 'auth' 11 | ] 12 | ] 13 | -------------------------------------------------------------------------------- /test/generated/mqtt.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/packed/elided.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [ [ 'zero', 'one', 'two', 'three' ] ] 2 | -------------------------------------------------------------------------------- /test/generated/packed/elided.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 6 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/packed/nested.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [ [ 'zero', 'one', 'two', 'three' ] ] 2 | -------------------------------------------------------------------------------- /test/generated/packed/nested.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 6 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/require/module.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/require/module.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | const twiddle = require('../../cycle/twiddle') 5 | 6 | return function (object, $buffer, $start) { 7 | let $$ = [] 8 | 9 | $$[0] = (value => twiddle(value))(object.value) 10 | 11 | $buffer[$start++] = $$[0] >>> 24 & 0xff 12 | $buffer[$start++] = $$[0] >>> 16 & 0xff 13 | $buffer[$start++] = $$[0] >>> 8 & 0xff 14 | $buffer[$start++] = $$[0] & 0xff 15 | 16 | $buffer[$start++] = object.sentry & 0xff 17 | 18 | return { start: $start, serialize: null } 19 | } 20 | } () 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /test/generated/require/module.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | const twiddle = require('../../cycle/twiddle') 4 | 5 | return function (object) { 6 | let $start = 0 7 | 8 | $start += 5 9 | 10 | return $start 11 | } 12 | } () 13 | } 14 | -------------------------------------------------------------------------------- /test/generated/required.js: -------------------------------------------------------------------------------- 1 | module.exports = function (ignore) { 2 | return 0xaaaa 3 | } 4 | -------------------------------------------------------------------------------- /test/generated/structure/elided.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/structure/elided.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let object = { 6 | first: 0, 7 | second: 0, 8 | sentry: 0 9 | } 10 | 11 | object.first = $buffer[$start++] 12 | 13 | object.second = $buffer[$start++] 14 | 15 | object.sentry = $buffer[$start++] 16 | 17 | return object 18 | } 19 | } () 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /test/generated/structure/elided.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | $buffer[$start++] = object.first & 0xff 6 | 7 | $buffer[$start++] = object.second & 0xff 8 | 9 | $buffer[$start++] = object.sentry & 0xff 10 | 11 | return { start: $start, serialize: null } 12 | } 13 | } () 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /test/generated/structure/elided.serializer.bff.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object) { 5 | return function ($buffer, $start, $end) { 6 | if ($end - $start < 1 + 2) { 7 | return $incremental.object(object, 0)($buffer, $start, $end) 8 | } 9 | 10 | $buffer[$start++] = object.first & 0xff 11 | 12 | $buffer[$start++] = object.second & 0xff 13 | 14 | $buffer[$start++] = object.sentry & 0xff 15 | 16 | return { start: $start, serialize: null } 17 | } 18 | } 19 | } () 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /test/generated/structure/elided.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 3 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/structure/flatten.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/structure/flatten.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let object = { 6 | first: 0, 7 | second: 0, 8 | sentry: 0 9 | } 10 | 11 | object.first = $buffer[$start++] 12 | 13 | object.second = $buffer[$start++] 14 | 15 | object.sentry = $buffer[$start++] 16 | 17 | return object 18 | } 19 | } () 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /test/generated/structure/flatten.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | $buffer[$start++] = object.first & 0xff 6 | 7 | $buffer[$start++] = object.second & 0xff 8 | 9 | $buffer[$start++] = object.sentry & 0xff 10 | 11 | return { start: $start, serialize: null } 12 | } 13 | } () 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /test/generated/structure/flatten.serializer.bff.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object) { 5 | return function ($buffer, $start, $end) { 6 | if ($end - $start < 1 + 2) { 7 | return $incremental.object(object, 0)($buffer, $start, $end) 8 | } 9 | 10 | $buffer[$start++] = object.first & 0xff 11 | 12 | $buffer[$start++] = object.second & 0xff 13 | 14 | $buffer[$start++] = object.sentry & 0xff 15 | 16 | return { start: $start, serialize: null } 17 | } 18 | } 19 | } () 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /test/generated/structure/flatten.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 3 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/structure/nested.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/structure/nested.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let object = { 6 | value: { 7 | first: 0, 8 | second: 0 9 | }, 10 | sentry: 0 11 | } 12 | 13 | object.value.first = $buffer[$start++] 14 | 15 | object.value.second = $buffer[$start++] 16 | 17 | object.sentry = $buffer[$start++] 18 | 19 | return object 20 | } 21 | } () 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /test/generated/structure/nested.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | $buffer[$start++] = object.value.first & 0xff 6 | 7 | $buffer[$start++] = object.value.second & 0xff 8 | 9 | $buffer[$start++] = object.sentry & 0xff 10 | 11 | return { start: $start, serialize: null } 12 | } 13 | } () 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /test/generated/structure/nested.serializer.bff.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object) { 5 | return function ($buffer, $start, $end) { 6 | if ($end - $start < 1 + 2) { 7 | return $incremental.object(object, 0)($buffer, $start, $end) 8 | } 9 | 10 | $buffer[$start++] = object.value.first & 0xff 11 | 12 | $buffer[$start++] = object.value.second & 0xff 13 | 14 | $buffer[$start++] = object.sentry & 0xff 15 | 16 | return { start: $start, serialize: null } 17 | } 18 | } 19 | } () 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /test/generated/structure/nested.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 3 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/structure/vivify.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/structure/vivify.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let object = { 6 | value: { 7 | first: 0, 8 | second: 0 9 | }, 10 | sentry: 0 11 | } 12 | 13 | object.value.first = $buffer[$start++] 14 | 15 | object.value.second = $buffer[$start++] 16 | 17 | object.sentry = $buffer[$start++] 18 | 19 | return object 20 | } 21 | } () 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /test/generated/structure/vivify.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | $buffer[$start++] = object.value.first & 0xff 6 | 7 | $buffer[$start++] = object.value.second & 0xff 8 | 9 | $buffer[$start++] = object.sentry & 0xff 10 | 11 | return { start: $start, serialize: null } 12 | } 13 | } () 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /test/generated/structure/vivify.serializer.bff.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $incremental, $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object) { 5 | return function ($buffer, $start, $end) { 6 | if ($end - $start < 1 + 2) { 7 | return $incremental.object(object, 0)($buffer, $start, $end) 8 | } 9 | 10 | $buffer[$start++] = object.value.first & 0xff 11 | 12 | $buffer[$start++] = object.value.second & 0xff 13 | 14 | $buffer[$start++] = object.sentry & 0xff 15 | 16 | return { start: $start, serialize: null } 17 | } 18 | } 19 | } () 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /test/generated/structure/vivify.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 3 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/switch/named.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/switch/named.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | switch ((({ $ }) => $.type)({ 9 | $: object 10 | })) { 11 | case 0: 12 | 13 | $start += 1 14 | 15 | break 16 | 17 | case 1: 18 | 19 | $start += 2 20 | 21 | break 22 | 23 | default: 24 | 25 | $start += 3 26 | 27 | break 28 | } 29 | 30 | $start += 1 31 | 32 | return $start 33 | } 34 | } () 35 | } 36 | -------------------------------------------------------------------------------- /test/generated/switch/packed/named.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/switch/packed/named.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 2 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/switch/packed/variant.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/switch/packed/variant.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 2 7 | 8 | return $start 9 | } 10 | } () 11 | } 12 | -------------------------------------------------------------------------------- /test/generated/switch/variant.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/switch/variant.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | switch (($ => $.type)(object)) { 9 | case 0: 10 | 11 | $start += 1 12 | 13 | break 14 | 15 | case 1: 16 | 17 | $start += 2 18 | 19 | break 20 | 21 | default: 22 | 23 | $start += 3 24 | 25 | break 26 | } 27 | 28 | $start += 1 29 | 30 | return $start 31 | } 32 | } () 33 | } 34 | -------------------------------------------------------------------------------- /test/generated/switch/vivify.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/terminated/chunked.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/terminated/chunked.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let $_, $i = [] 6 | 7 | let object = { 8 | nudge: 0, 9 | array: null, 10 | sentry: 0 11 | } 12 | 13 | object.nudge = $buffer[$start++] 14 | 15 | $_ = $buffer.indexOf(Buffer.from([ 13, 10 ]), $start) 16 | $_ = ~$_ ? $_ : $start 17 | object.array = [ $buffer.slice($start, $_) ] 18 | $start = $_ + 2 19 | 20 | object.sentry = $buffer[$start++] 21 | 22 | return object 23 | } 24 | } () 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /test/generated/terminated/chunked.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | $start += object.array.reduce((sum, buffer) => sum + buffer.length, 0) + 9 | 2 10 | 11 | $start += 1 12 | 13 | return $start 14 | } 15 | } () 16 | } 17 | -------------------------------------------------------------------------------- /test/generated/terminated/concat.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/terminated/concat.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let $_, $i = [] 6 | 7 | let object = { 8 | nudge: 0, 9 | array: null, 10 | sentry: 0 11 | } 12 | 13 | object.nudge = $buffer[$start++] 14 | 15 | $_ = $buffer.indexOf(Buffer.from([ 13, 10 ]), $start) 16 | $_ = ~$_ ? $_ : $start 17 | object.array = $buffer.slice($start, $_) 18 | $start = $_ + 2 19 | 20 | object.sentry = $buffer[$start++] 21 | 22 | return object 23 | } 24 | } () 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /test/generated/terminated/concat.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | let $i = [] 6 | 7 | $buffer[$start++] = object.nudge & 0xff 8 | 9 | object.array.copy($buffer, $start, 0, object.array.length) 10 | $start += object.array.length 11 | 12 | $buffer[$start++] = 0xd 13 | $buffer[$start++] = 0xa 14 | 15 | $buffer[$start++] = object.sentry & 0xff 16 | 17 | return { start: $start, serialize: null } 18 | } 19 | } () 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /test/generated/terminated/concat.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | $start += 1 * object.array.length + 2 9 | 10 | $start += 1 11 | 12 | return $start 13 | } 14 | } () 15 | } 16 | -------------------------------------------------------------------------------- /test/generated/terminated/nested.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/terminated/nested.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0, $i = [] 5 | 6 | $start += 1 7 | 8 | for ($i[0] = 0; $i[0] < object.array.length; $i[0]++) { 9 | $start += 2 * object.array[$i[0]].length + 2 10 | } 11 | $start += 2 12 | 13 | $start += 1 14 | 15 | return $start 16 | } 17 | } () 18 | } 19 | -------------------------------------------------------------------------------- /test/generated/terminated/rewind.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/terminated/rewind.parser.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function ($buffer, $start) { 5 | let $_, $i = [] 6 | 7 | let object = { 8 | nudge: 0, 9 | array: null, 10 | sentry: 0 11 | } 12 | 13 | object.nudge = $buffer[$start++] 14 | 15 | $_ = $buffer.indexOf(Buffer.from([ 97, 98, 99, 97, 98, 100 ]), $start) 16 | $_ = ~$_ ? $_ : $start 17 | object.array = $buffer.slice($start, $_) 18 | $start = $_ + 6 19 | 20 | object.sentry = $buffer[$start++] 21 | 22 | return object 23 | } 24 | } () 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /test/generated/terminated/rewind.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | $start += 1 * object.array.length + 6 9 | 10 | $start += 1 11 | 12 | return $start 13 | } 14 | } () 15 | } 16 | -------------------------------------------------------------------------------- /test/generated/terminated/words.lookup.js: -------------------------------------------------------------------------------- 1 | module.exports = [] 2 | -------------------------------------------------------------------------------- /test/generated/terminated/words.serializer.all.js: -------------------------------------------------------------------------------- 1 | module.exports = function ({ $lookup }) { 2 | return { 3 | object: function () { 4 | return function (object, $buffer, $start) { 5 | let $i = [] 6 | 7 | $buffer[$start++] = object.nudge & 0xff 8 | 9 | for ($i[0] = 0; $i[0] < object.array.length; $i[0]++) { 10 | $buffer[$start++] = object.array[$i[0]] >>> 8 & 0xff 11 | $buffer[$start++] = object.array[$i[0]] & 0xff 12 | } 13 | 14 | $buffer[$start++] = 0x0 15 | $buffer[$start++] = 0x0 16 | 17 | $buffer[$start++] = object.sentry & 0xff 18 | 19 | return { start: $start, serialize: null } 20 | } 21 | } () 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /test/generated/terminated/words.sizeof.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | object: function () { 3 | return function (object) { 4 | let $start = 0 5 | 6 | $start += 1 7 | 8 | $start += 2 * object.array.length + 2 9 | 10 | $start += 1 11 | 12 | return $start 13 | } 14 | } () 15 | } 16 | -------------------------------------------------------------------------------- /test/issues/empty-array.t.js: -------------------------------------------------------------------------------- 1 | // https://github.com/bigeasy/packet/issues/590 2 | require('proof')(1, okay => { 3 | const packetize = require('../../packetize') 4 | const source = packetize({ 5 | object: { 6 | numero: 8, 7 | array: [ 8, [ 8 ] ], 8 | other: 8 9 | } 10 | }) 11 | const mechanics = function () { 12 | const module = {} 13 | new Function('module', source)(module) 14 | return module.exports 15 | } () 16 | 17 | const SyncSerializer = require('../../sync/serializer') 18 | const serializer = new SyncSerializer(mechanics) 19 | const buffer = serializer.serialize('object', { numero: 1, array: [], other: 1 }) 20 | okay(buffer.toJSON().data, [ 0x1, 0x0, 0x1 ], 'zero length') 21 | }) 22 | -------------------------------------------------------------------------------- /test/language/minimal.t.js: -------------------------------------------------------------------------------- 1 | require('proof')(1, okay => { 2 | const language = require('../../language') 3 | okay(language({ packet: { value: 16 } }), [{ 4 | type: 'structure', 5 | vivify: 'object', 6 | name: 'packet', 7 | fixed: true, 8 | bits: 16, 9 | dotted: '', 10 | fields: [{ 11 | name: 'value', 12 | dotted: '.value', 13 | type: 'integer', 14 | vivify: 'number', 15 | fixed: true, 16 | bits: 16, 17 | bytes: [{ 18 | mask: 255, size: 8, shift: 8, upper: 0 19 | }, { 20 | mask: 255, size: 8, shift: 0, upper: 0 21 | }], 22 | endianness: 'big', 23 | compliment: false 24 | }] 25 | }], 'minimal') 26 | }) 27 | -------------------------------------------------------------------------------- /test/language/print.t.js: -------------------------------------------------------------------------------- 1 | require('proof')(1, okay => { 2 | const print = require('../../print') 3 | console.log(print({ 4 | ip: 32 5 | }, [ 'ip' ], 'integers must be devisible by 8')) 6 | console.log(print({ 7 | packet: { 8 | value: 32, 9 | array: [ 32, [ null ]] 10 | } 11 | }, [ 'packet', 'array' ], 'unable to parse length-encoded element type')) 12 | okay('dummy') 13 | }) 14 | -------------------------------------------------------------------------------- /test/language/require.t.js: -------------------------------------------------------------------------------- 1 | require('proof')(1, okay => { 2 | const required = require('../../required') 3 | okay(required({ a: 'a', b: 'b' }), [ 4 | 'const a = require(\'a\')', 5 | 'const b = require(\'b\')' 6 | ].join('\n'), 'required') 7 | }) 8 | -------------------------------------------------------------------------------- /test/parse/unpack.t.js: -------------------------------------------------------------------------------- 1 | require('proof')(2, function (okay) { 2 | const unpack = require('../../fiddle/unpack') // satisfy coverage 3 | let f 4 | f = new Function('value', 'return ' + unpack(16, 4, 8, 'value')) 5 | okay(f(0x0aa0).toString(16), 'aa', 'unpack') 6 | console.log(unpack(16, 4, 8)) 7 | console.log(unpack(16, 12, 4)) 8 | f = new Function('value', 'return ' + unpack(16, 12, 4, 'value')) 9 | okay(f(0x000a).toString(16), 'a', 'unpack no shift') 10 | }) 11 | -------------------------------------------------------------------------------- /test/sync/parser.t.js: -------------------------------------------------------------------------------- 1 | require('proof')(1, okay => { 2 | const Parser = require('../../sync/parser') 3 | const definition = require('../generated') 4 | 5 | const parser = new Parser(require('../generated')) 6 | 7 | const object = parser.parse('first', Buffer.from([ 0xaa, 0xaa ])) 8 | okay(object, { value: 0xaaaa }, 'parsed') 9 | }) 10 | -------------------------------------------------------------------------------- /test/sync/serializer.t.js: -------------------------------------------------------------------------------- 1 | require('proof')(1, okay => { 2 | const Serializer = require('../../sync/serializer') 3 | const definition = require('../generated') 4 | 5 | const serializer = new Serializer(require('../generated')) 6 | 7 | const buffer = serializer.serialize('first', { value: 0xaaaa }) 8 | okay(buffer.toJSON().data, [ 0xaa, 0xaa ], 'serialize') 9 | }) 10 | --------------------------------------------------------------------------------