Lines Matching refs:self
30 def __init__(self, slicc, type_ast, type_modifier, expr_ast):
31 super(StaticCastAST, self).__init__(slicc)
33 self.type_ast = type_ast
34 self.expr_ast = expr_ast
35 self.type_modifier = type_modifier
37 def __repr__(self):
38 return "[StaticCastAST: %r]" % self.expr_ast
40 def generate(self, code):
41 actual_type, ecode = self.expr_ast.inline(True)
42 if self.type_modifier == "pointer":
43 code('static_cast<${{self.type_ast.type.c_ident}} *>($ecode)')
45 code('static_cast<${{self.type_ast.type.c_ident}} &>($ecode)')
47 if not "interface" in self.type_ast.type:
48 self.expr_ast.error("static cast only premitted for those types " \
52 if str(actual_type) != str(self.type_ast.type["interface"]):
53 self.expr_ast.error("static cast miss-match, type is '%s'," \
55 actual_type, self.type_ast.type["interface"])
57 return self.type_ast.type