-
Notifications
You must be signed in to change notification settings - Fork 202
Open
kaitai-io/kaitai_struct_compiler
#309Labels
Description
Hello, i'm trying to understand how enum:s are resolved. I assumed first that enum were resolve something like this:
- If no namespace, just a name, look in current types enums
- If namespace, has
::, look up type first then look in enums.
But when i trying some thing in webide and with ksdump things got confusing, for example:
meta:
id: enum_resolve
seq:
- id: s0
type: u1
enum: e
- id: s1
type: u1
enum: a::e
- id: s2
type: u1
enum: a::a::e
- id: s3
type: u1
enum: b::e
- id: s4
type: u1
enum: b::b::e
- id: s5
type: u1
enum: a::b::e
- id: s6
type: u1
enum: b::a::e
types:
a:
enums:
e:
0: zero2
b: {}
enums:
e:
0: zeroBoth ksdump and webide result in:
$ docker run -v "$PWD:/share" -i --entrypoint=ksdump kaitai/ksv -f json /dev/zero enum_resolve.ksy
{
"s0": "e_zero",
"s1": "e_zero2",
"s2": "e_zero2",
"s3": "e_zero",
"s4": "e_zero",
"s5": "e_zero",
"s6": "e_zero2"
}So seems to behave something like this: If last part(s?) of type namespace resolve to a type that has the enum then use it, otherwise ignore type namespace and just look in current types enums.