def _render_pre(self): result = [ self.env_expr.render_pre(), self.key_expr.render_pre(), self.lookup_kind_expr.render_pre(), self.categories.render_pre() ] args = [('Self', self.env_expr.render_expr()), ('Key', self.key_expr.render_expr()), ('Lookup_Kind', 'To_Lookup_Kind_Type ({})'.format( self.lookup_kind_expr.render_expr())), ('Categories', self.categories.render_expr())] # Pass the From parameter if the user wants sequential semantics if self.sequential_from: result.append(self.sequential_from.render_pre()) args.append(('From', self.sequential_from.render_expr())) if self.only_first: result_expr = 'AST_Envs.Get_First ({})'.format(', '.join( '{} => {}'.format(n, v) for n, v in args)) else: result_expr = ( 'Construct_Entity_Array (AST_Envs.Get ({}))'.format( ', '.join('{} => {}'.format(n, v) for n, v in args))) # In both cases above, the expression is going to be a function # call that returns a new ownership share, so there is no need for # an inc-ref for the storage in the result variable. result.append( assign_var(self.result_var.ref_expr, result_expr, requires_incref=False)) return '\n'.join(result)
def _render_pre(self): target = ('{}.Node' if self.expr.type.is_entity_type else '{}').format(self.expr.render_expr()) result_expr = ( '{target} /= null \nand then {target}.all in {nodes}'.format( target=target, nodes=' | '.join( "{}_Type'Class".format(a.name.camel_with_underscores) for a in self.astnodes))) return '{}\n{}'.format( self.expr.render_pre(), assign_var(self.result_var.ref_expr, result_expr))
def _render_pre(self): target = T.root_node.internal_conversion( self.expr.type, ('{}.Node' if self.expr.type.is_entity_type else '{}').format( self.expr.render_expr())) result_expr = ( '{target} /= null \nand then {target}.Kind in {nodes}'.format( target=target, nodes=' | '.join(a.ada_kind_range_name for a in self.astnodes))) return '{}\n{}'.format( self.expr.render_pre(), assign_var(self.result_var.ref_expr, result_expr))
def _render_pre(self): record_expr = '({})'.format(', '.join( '{} => {}'.format(name.camel_with_underscores, expr.render_expr()) for name, expr in self._iter_ordered())) return '{}\n{}'.format( self._render_fields(), # We must not inc-ref the resulting record as we already # inc-ref'd manually all the ref-counted members. assign_var(self.result_var.ref_expr, record_expr, requires_incref=False))