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
Exemplo n.º 2
0
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