class CNameDeclaratorNode(CDeclaratorNode):
- # name string The Pyrex name being declared
- # cname string or None C name, if specified
- # rhs ExprNode or None the value assigned on declaration
+ # name string The Pyrex name being declared
+ # cname string or None C name, if specified
+ # default ExprNode or None the value assigned on declaration
- child_attrs = []
+ child_attrs = ['default']
def analyse(self, base_type, env, nonempty = 0):
if nonempty and self.name == '':
def analyse_expressions(self, env):
self.entry = env.lookup(self.name)
- if self.rhs is not None:
- env.control_flow.set_state(self.rhs.end_pos(), (self.entry.name, 'initalized'), True)
- env.control_flow.set_state(self.rhs.end_pos(), (self.entry.name, 'source'), 'assignment')
+ if self.default is not None:
+ env.control_flow.set_state(self.default.end_pos(), (self.entry.name, 'initalized'), True)
+ env.control_flow.set_state(self.default.end_pos(), (self.entry.name, 'source'), 'assignment')
self.entry.used = 1
if self.type.is_pyobject:
self.entry.init_to_none = False
self.entry.init = 0
- self.rhs.analyse_types(env)
- self.rhs = self.rhs.coerce_to(self.type, env)
- self.rhs.allocate_temps(env)
- self.rhs.release_temp(env)
+ self.default.analyse_types(env)
+ self.default = self.default.coerce_to(self.type, env)
+ self.default.allocate_temps(env)
+ self.default.release_temp(env)
def generate_execution_code(self, code):
- if self.rhs is not None:
- self.rhs.generate_evaluation_code(code)
+ if self.default is not None:
+ self.default.generate_evaluation_code(code)
if self.type.is_pyobject:
- self.rhs.make_owned_reference(code)
- code.putln('%s = %s;' % (self.entry.cname, self.rhs.result_as(self.entry.type)))
- self.rhs.generate_post_assignment_code(code)
+ self.default.make_owned_reference(code)
+ code.putln('%s = %s;' % (self.entry.cname, self.default.result_as(self.entry.type)))
+ self.default.generate_post_assignment_code(code)
code.putln()
class CPtrDeclaratorNode(CDeclaratorNode):