Skip to content

Commit 441d246

Browse files
committed
luajit: standardize field names (key/value/type ect.)
1 parent 3561c08 commit 441d246

File tree

3 files changed

+147
-128
lines changed

3 files changed

+147
-128
lines changed

format/luajit/luajit.go

+59-46
Original file line numberDiff line numberDiff line change
@@ -127,15 +127,15 @@ func LuaJITDecodeBCIns(d *decode.D) {
127127
}
128128

129129
func LuaJITDecodeNum(d *decode.D) {
130-
d.FieldAnyFn("num", func(d *decode.D) any {
130+
d.FieldAnyFn("value", func(d *decode.D) any {
131131
lo := d.ULEB128()
132132
hi := d.ULEB128()
133133
return u64tof64((hi << 32) + lo)
134134
})
135135
}
136136

137137
func LuaJITDecodeKTabK(d *decode.D) {
138-
ktabtype := d.FieldULEB128("ktabtype", fallbackUintMapSymStr{
138+
ktabtype := d.FieldULEB128("type", fallbackUintMapSymStr{
139139
fallback: "str",
140140
UintMapSymStr: scalar.UintMapSymStr{
141141
0: "nil",
@@ -146,54 +146,64 @@ func LuaJITDecodeKTabK(d *decode.D) {
146146
},
147147
})
148148

149-
if ktabtype >= 5 {
150-
sz := ktabtype - 5
151-
d.FieldUTF8("str", int(sz))
152-
} else {
153-
switch ktabtype {
154-
case 3:
155-
d.FieldULEB128("int")
149+
switch ktabtype {
150+
case 0:
151+
// nil
152+
d.FieldValueAny("value", nil)
156153

157-
case 4:
158-
LuaJITDecodeNum(d)
159-
}
154+
case 1:
155+
// false
156+
d.FieldValueBool("value", false)
157+
158+
case 2:
159+
// true
160+
d.FieldValueBool("value", true)
161+
162+
case 3:
163+
// int
164+
d.FieldULEB128("value")
165+
166+
case 4:
167+
LuaJITDecodeNum(d)
168+
169+
// ktabtype >= 5
170+
default:
171+
// str
172+
size := ktabtype - 5
173+
d.FieldUTF8("value", int(size))
160174
}
161175
}
162176

163177
func LuaJITDecodeTab(d *decode.D) {
164178
narray := d.FieldULEB128("narray")
165179
nhash := d.FieldULEB128("nhash")
166180

167-
d.FieldArray("karray", func(d *decode.D) {
181+
d.FieldArray("array", func(d *decode.D) {
168182
for i := uint64(0); i < narray; i++ {
169-
d.FieldStruct("ktab", LuaJITDecodeKTabK)
183+
d.FieldStruct("element", LuaJITDecodeKTabK)
170184
}
171185
})
172186

173-
d.FieldArray("khash", func(d *decode.D) {
187+
d.FieldArray("hash", func(d *decode.D) {
174188
for i := uint64(0); i < nhash; i++ {
175-
d.FieldStruct("khash", func(d *decode.D) {
176-
d.FieldStruct("k", LuaJITDecodeKTabK)
177-
d.FieldStruct("v", LuaJITDecodeKTabK)
189+
d.FieldStruct("pair", func(d *decode.D) {
190+
d.FieldStruct("key", LuaJITDecodeKTabK)
191+
d.FieldStruct("value", LuaJITDecodeKTabK)
178192
})
179193
}
180194
})
181195
}
182196

183-
func LuaJITDecodeI64(d *decode.D) {
184-
d.FieldAnyFn("i64", func(d *decode.D) any {
185-
lo := d.ULEB128()
186-
hi := d.ULEB128()
187-
return int64((hi << 32) + lo)
188-
})
197+
func LuaJITDecodeI64(d *decode.D) int64 {
198+
lo := d.ULEB128()
199+
hi := d.ULEB128()
200+
return int64((hi << 32) + lo)
189201
}
190202

191-
func LuaJITDecodeU64(d *decode.D) {
192-
d.FieldAnyFn("u64", func(d *decode.D) any {
193-
lo := d.ULEB128()
194-
hi := d.ULEB128()
195-
return (hi << 32) + lo
196-
})
203+
func LuaJITDecodeU64(d *decode.D) uint64 {
204+
lo := d.ULEB128()
205+
hi := d.ULEB128()
206+
return (hi << 32) + lo
197207
}
198208

199209
func LuaJITDecodeComplex(d *decode.D) {
@@ -224,26 +234,29 @@ func LuaJITDecodeKGC(d *decode.D) {
224234
},
225235
})
226236

227-
if kgctype >= 5 {
228-
sz := kgctype - 5
229-
d.FieldUTF8("str", int(sz))
230-
} else {
231-
switch kgctype {
232-
case 0:
233-
//child
237+
switch kgctype {
238+
case 0:
239+
// child
234240

235-
case 1:
236-
LuaJITDecodeTab(d)
241+
case 1:
242+
LuaJITDecodeTab(d)
237243

238-
case 2:
239-
LuaJITDecodeI64(d)
244+
case 2:
245+
LuaJITDecodeI64(d)
240246

241-
case 3:
242-
LuaJITDecodeU64(d)
247+
case 3:
248+
LuaJITDecodeI64(d)
243249

244-
case 4:
245-
LuaJITDecodeComplex(d)
246-
}
250+
case 4:
251+
// json does not support complex numbers,
252+
// so we use a struct{real: float64, imag: float64}
253+
d.FieldStruct("value", LuaJITDecodeComplex)
254+
255+
// kgctype >= 5
256+
default:
257+
// str
258+
size := kgctype - 5
259+
d.FieldUTF8("value", int(size))
247260
}
248261
}
249262

format/luajit/testdata/simple.fqtest

+44-41
Original file line numberDiff line numberDiff line change
@@ -170,66 +170,69 @@ $ fq dv simple.luac
170170
| | | kgc[0:7]: 0xa9-0x125.7 (125)
171171
| | | [0]{}: kgc 0xa9-0xb6.7 (14)
172172
0x0a0| 12 | . | type: "str" (18) 0xa9-0xa9.7 (1)
173-
0x0a0| 6d 79 66 75 6e 63| myfunc| str: "myfunc_result" 0xaa-0xb6.7 (13)
173+
0x0a0| 6d 79 66 75 6e 63| myfunc| value: "myfunc_result" 0xaa-0xb6.7 (13)
174174
0x0b0|5f 72 65 73 75 6c 74 |_result |
175175
| | | [1]{}: kgc 0xb7-0xbd.7 (7)
176176
0x0b0| 0b | . | type: "str" (11) 0xb7-0xb7.7 (1)
177-
0x0b0| 6d 79 66 75 6e 63 | myfunc | str: "myfunc" 0xb8-0xbd.7 (6)
177+
0x0b0| 6d 79 66 75 6e 63 | myfunc | value: "myfunc" 0xb8-0xbd.7 (6)
178178
| | | [2]{}: kgc 0xbe-0xbe.7 (1)
179179
0x0b0| 00 | . | type: "child" (0) 0xbe-0xbe.7 (1)
180180
| | | [3]{}: kgc 0xbf-0xc4.7 (6)
181181
0x0b0| 0a| .| type: "str" (10) 0xbf-0xbf.7 (1)
182-
0x0c0|6d 79 74 62 6c |mytbl | str: "mytbl" 0xc0-0xc4.7 (5)
182+
0x0c0|6d 79 74 62 6c |mytbl | value: "mytbl" 0xc0-0xc4.7 (5)
183183
| | | [4]{}: kgc 0xc5-0xcb.7 (7)
184184
0x0c0| 0b | . | type: "str" (11) 0xc5-0xc5.7 (1)
185-
0x0c0| 6d 79 63 70 6c 78 | mycplx | str: "mycplx" 0xc6-0xcb.7 (6)
185+
0x0c0| 6d 79 63 70 6c 78 | mycplx | value: "mycplx" 0xc6-0xcb.7 (6)
186186
| | | [5]{}: kgc 0xcc-0xd8.7 (13)
187187
0x0c0| 04 | . | type: "complex" (4) 0xcc-0xcc.7 (1)
188-
0x0c0| 00 00 | .. | real: 0 0xcd-0xce.7 (2)
189-
0x0c0| 9a| .| imag: 3.2 0xcf-0xd8.7 (10)
188+
| | | value{}: 0xcd-0xd8.7 (12)
189+
0x0c0| 00 00 | .. | real: 0 0xcd-0xce.7 (2)
190+
0x0c0| 9a| .| imag: 3.2 0xcf-0xd8.7 (10)
190191
0x0d0|b3 e6 cc 09 99 b3 a6 80 04 |......... |
191192
| | | [6]{}: kgc 0xd9-0x125.7 (77)
192193
0x0d0| 01 | . | type: "tab" (1) 0xd9-0xd9.7 (1)
193194
0x0d0| 00 | . | narray: 0 0xda-0xda.7 (1)
194195
0x0d0| 05 | . | nhash: 5 0xdb-0xdb.7 (1)
195-
| | | karray[0:0]: 0xdc-NA (0)
196-
| | | khash[0:5]: 0xdc-0x125.7 (74)
197-
| | | [0]{}: khash 0xdc-0xe6.7 (11)
198-
| | | k{}: 0xdc-0xe5.7 (10)
199-
0x0d0| 0e | . | ktabtype: "str" (14) 0xdc-0xdc.7 (1)
200-
0x0d0| 73 6f 6d| som| str: "somefalse" 0xdd-0xe5.7 (9)
196+
| | | array[0:0]: 0xdc-NA (0)
197+
| | | hash[0:5]: 0xdc-0x125.7 (74)
198+
| | | [0]{}: pair 0xdc-0xe6.7 (11)
199+
| | | key{}: 0xdc-0xe5.7 (10)
200+
0x0d0| 0e | . | type: "str" (14) 0xdc-0xdc.7 (1)
201+
0x0d0| 73 6f 6d| som| value: "somefalse" 0xdd-0xe5.7 (9)
201202
0x0e0|65 66 61 6c 73 65 |efalse |
202-
| | | v{}: 0xe6-0xe6.7 (1)
203-
0x0e0| 01 | . | ktabtype: "false" (1) 0xe6-0xe6.7 (1)
204-
| | | [1]{}: khash 0xe7-0xf0.7 (10)
205-
| | | k{}: 0xe7-0xef.7 (9)
206-
0x0e0| 0d | . | ktabtype: "str" (13) 0xe7-0xe7.7 (1)
207-
0x0e0| 73 6f 6d 65 74 72 75 65| sometrue| str: "sometrue" 0xe8-0xef.7 (8)
208-
| | | v{}: 0xf0-0xf0.7 (1)
209-
0x0f0|02 |. | ktabtype: "true" (2) 0xf0-0xf0.7 (1)
210-
| | | [2]{}: khash 0xf1-0x104.7 (20)
211-
| | | k{}: 0xf1-0xf8.7 (8)
212-
0x0f0| 0c | . | ktabtype: "str" (12) 0xf1-0xf1.7 (1)
213-
0x0f0| 73 6f 6d 65 73 74 72 | somestr | str: "somestr" 0xf2-0xf8.7 (7)
214-
| | | v{}: 0xf9-0x104.7 (12)
215-
0x0f0| 10 | . | ktabtype: "str" (16) 0xf9-0xf9.7 (1)
216-
0x0f0| 69 74 27 73 20 61| it's a| str: "it's a trap" 0xfa-0x104.7 (11)
203+
| | | value{}: 0xe6-0xe6.7 (1)
204+
0x0e0| 01 | . | type: "false" (1) 0xe6-0xe6.7 (1)
205+
| | | value: false 0xe7-NA (0)
206+
| | | [1]{}: pair 0xe7-0xf0.7 (10)
207+
| | | key{}: 0xe7-0xef.7 (9)
208+
0x0e0| 0d | . | type: "str" (13) 0xe7-0xe7.7 (1)
209+
0x0e0| 73 6f 6d 65 74 72 75 65| sometrue| value: "sometrue" 0xe8-0xef.7 (8)
210+
| | | value{}: 0xf0-0xf0.7 (1)
211+
0x0f0|02 |. | type: "true" (2) 0xf0-0xf0.7 (1)
212+
| | | value: true 0xf1-NA (0)
213+
| | | [2]{}: pair 0xf1-0x104.7 (20)
214+
| | | key{}: 0xf1-0xf8.7 (8)
215+
0x0f0| 0c | . | type: "str" (12) 0xf1-0xf1.7 (1)
216+
0x0f0| 73 6f 6d 65 73 74 72 | somestr | value: "somestr" 0xf2-0xf8.7 (7)
217+
| | | value{}: 0xf9-0x104.7 (12)
218+
0x0f0| 10 | . | type: "str" (16) 0xf9-0xf9.7 (1)
219+
0x0f0| 69 74 27 73 20 61| it's a| value: "it's a trap" 0xfa-0x104.7 (11)
217220
0x100|20 74 72 61 70 | trap |
218-
| | | [3]{}: khash 0x105-0x117.7 (19)
219-
| | | k{}: 0x105-0x10c.7 (8)
220-
0x100| 0c | . | ktabtype: "str" (12) 0x105-0x105.7 (1)
221-
0x100| 73 6f 6d 65 6e 75 6d | somenum | str: "somenum" 0x106-0x10c.7 (7)
222-
| | | v{}: 0x10d-0x117.7 (11)
223-
0x100| 04 | . | ktabtype: "num" (4) 0x10d-0x10d.7 (1)
224-
0x100| 80 80| ..| num: 7.89437298e+11 0x10e-0x117.7 (10)
221+
| | | [3]{}: pair 0x105-0x117.7 (19)
222+
| | | key{}: 0x105-0x10c.7 (8)
223+
0x100| 0c | . | type: "str" (12) 0x105-0x105.7 (1)
224+
0x100| 73 6f 6d 65 6e 75 6d | somenum | value: "somenum" 0x106-0x10c.7 (7)
225+
| | | value{}: 0x10d-0x117.7 (11)
226+
0x100| 04 | . | type: "num" (4) 0x10d-0x10d.7 (1)
227+
0x100| 80 80| ..| value: 7.89437298e+11 0x10e-0x117.7 (10)
225228
0x110|a8 b5 02 c4 f3 9b 93 04 |........ |
226-
| | | [4]{}: khash 0x118-0x125.7 (14)
227-
| | | k{}: 0x118-0x11f.7 (8)
228-
0x110| 0c | . | ktabtype: "str" (12) 0x118-0x118.7 (1)
229-
0x110| 73 6f 6d 65 69 6e 74| someint| str: "someint" 0x119-0x11f.7 (7)
230-
| | | v{}: 0x120-0x125.7 (6)
231-
0x120|03 |. | ktabtype: "int" (3) 0x120-0x120.7 (1)
232-
0x120| fd ff ff ff 0f | ..... | int: 4294967293 0x121-0x125.7 (5)
229+
| | | [4]{}: pair 0x118-0x125.7 (14)
230+
| | | key{}: 0x118-0x11f.7 (8)
231+
0x110| 0c | . | type: "str" (12) 0x118-0x118.7 (1)
232+
0x110| 73 6f 6d 65 69 6e 74| someint| value: "someint" 0x119-0x11f.7 (7)
233+
| | | value{}: 0x120-0x125.7 (6)
234+
0x120|03 |. | type: "int" (3) 0x120-0x120.7 (1)
235+
0x120| fd ff ff ff 0f | ..... | value: 4294967293 0x121-0x125.7 (5)
233236
| | | knum[0:0]: 0x126-NA (0)
234237
| | | debug[0:40]: 0x126-0x14d.7 (40)
235238
0x120| 01 | . | [0]: 1 db 0x126-0x126.7 (1)

0 commit comments

Comments
 (0)