def __init__( self, base, *args): # type: (Expression, *Tuple[str, SafeExpType]) -> None super().__init__() self.base = base if not isinstance(args, OrderedDict): args = OrderedDict(args) self.args = OrderedDict() for key, value in args.items(): if value is None: continue exp = safe_exp(value) self.args[key] = exp
class StructInitializer(Expression): __slots__ = ("base", "args") def __init__(self, base: Expression, *args: Tuple[str, Optional[SafeExpType]]): self.base = base # TODO: args is always a Tuple, is this check required? if not isinstance(args, OrderedDict): args = OrderedDict(args) self.args = OrderedDict() for key, value in args.items(): if value is None: continue exp = safe_exp(value) self.args[key] = exp def __str__(self): cpp = f'{self.base}{{\n' for key, value in self.args.items(): cpp += f' .{key} = {value},\n' cpp += '}' return cpp
class StructInitializer(Expression): def __init__( self, base, *args): # type: (Expression, *Tuple[str, SafeExpType]) -> None super().__init__() self.base = base if not isinstance(args, OrderedDict): args = OrderedDict(args) self.args = OrderedDict() for key, value in args.items(): if value is None: continue exp = safe_exp(value) self.args[key] = exp def __str__(self): cpp = f'{self.base}{{\n' for key, value in self.args.items(): cpp += f' .{key} = {value},\n' cpp += '}' return cpp