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:
Chuck Lever
2024-10-03 14:54:32 -04:00
parent 1acd13cbc7
commit 189f55d93d
+10
View File
@@ -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):