mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 15:41:52 +02:00
xdrgen: Track constant values
In order to compute the numeric on-the-wire width of XDR types, xdrgen needs to keep track of the numeric value of constants that are defined in the input specification so it can perform calculations with those values. Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
This commit is contained in:
parent
1acd13cbc7
commit
189f55d93d
|
|
@ -19,6 +19,8 @@ public_apis = []
|
|||
structs = set()
|
||||
pass_by_reference = set()
|
||||
|
||||
constants = {}
|
||||
|
||||
|
||||
@dataclass
|
||||
class _XdrAst(ast_utils.Ast):
|
||||
|
|
@ -156,6 +158,10 @@ class _XdrConstant(_XdrAst):
|
|||
name: str
|
||||
value: str
|
||||
|
||||
def __post_init__(self):
|
||||
if self.value not in constants:
|
||||
constants[self.name] = int(self.value, 0)
|
||||
|
||||
|
||||
@dataclass
|
||||
class _XdrEnumerator(_XdrAst):
|
||||
|
|
@ -164,6 +170,10 @@ class _XdrEnumerator(_XdrAst):
|
|||
name: str
|
||||
value: str
|
||||
|
||||
def __post_init__(self):
|
||||
if self.value not in constants:
|
||||
constants[self.name] = int(self.value, 0)
|
||||
|
||||
|
||||
@dataclass
|
||||
class _XdrEnum(_XdrAst):
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user