mmiogrok/t32per/perparse.py

91 lines
1.8 KiB
Python

from typing import *
from perrepeat import *
from pertoken import *
T32GroupAttr = Literal['h', 'r', 's', 'w']
T32FieldAttr = Literal['a','r','hex','event','setclr']
T32MaskAttr = Literal['dec','hex','rhex']
T32TreeVisibility = Literal['open','closed']
class T32Field(NamedTuple):
attr: T32FieldAttr
qual: PerTokenQual
thing: int
bitrange: Tuple[int, int] # inclusive
name: str
description: str
values: Sequence[str]
class T32Mask(NamedTuple):
attr: T32MaskAttr
qual: Tuple[PerTokenQual, PerTokenQual]
thing: int
bitrange: Tuple[int, int] # inclusive
mask: int
name: str
description: str
values: Sequence[str]
class T32Line(NamedTuple):
hidden: bool
qual: PerTokenQual
offset: int
name: str
description: str
field:s Sequence[Union[T32Field, T32Mask]]
class T32Group(NamedTuple):
attrs: T32GroupAttr
qual: PerTokenQual
address: Union[T32Address, T32AddressRange]
description: str
regs: Sequence[T32Line]
copy: bool = False
class T32GroupRepeat(NamedTuple):
repeat: T32Repeat
width: int
groups: Sequence[T32Group]
class T32GroupRepeatReplay(NamedTuple):
pass
class T32Tree(NamedTuple):
base: T32Address
width: int
visibility: T32TreeVisibility
groups: Sequence[Union[T32Group, T32GroupRepeat, T32GroupRepeatReplay]]
subtrees: Sequence[Union[T32TreeRepeat, T32Tree]]
class T32TreeRepeat(NamedTuple):
repeat: T32Repeat
subtrees: Sequence[Union[T32TreeRepeat, T32Tree]]
class T32Per(NamedTuple):
title: str
props: str
author: str
changelog: Sequence[str]
manufacturer: str
doc: str
core: str
chip: Sequence[str]
copyright: str
description: str
keywords: str
date: str
id: str
config: Tuple[int, int]
trees: Union[T32Tree, T32TreeRepeat]