Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/AST/Node.cpp

    r76ed81f r10a1225  
    1616#include "Node.hpp"
    1717#include "Fwd.hpp"
    18 
    19 #include <iostream>
    2018
    2119#include "Attribute.hpp"
     
    2725#include "TypeSubstitution.hpp"
    2826
    29 #include "Print.hpp"
    30 
    3127template< typename node_t, enum ast::Node::ref_type ref_t >
    3228void ast::ptr_base<node_t, ref_t>::_inc( const node_t * node ) { node->increment(ref_t); }
     
    3531void ast::ptr_base<node_t, ref_t>::_dec( const node_t * node ) { node->decrement(ref_t); }
    3632
     33/// Sets this pointer to a mutated version of a pointer (possibly) owned elsehere.
     34/// Returns a mutable version of the pointer in this node.
    3735template< typename node_t, enum ast::Node::ref_type ref_t >
    38 node_t * ast::ptr_base<node_t, ref_t>::get_and_mutate() {
     36node_t * ast::ptr_base<node_t, ref_t>::set_and_mutate( const node_t * n ) {
     37        // ensure ownership of `n` by this node to avoid spurious single-owner mutates
     38        assign( n );
    3939        // get mutable version of `n`
    4040        auto r = mutate( node );
     
    4242        assign( r );
    4343        return r;
    44 }
    45 
    46 template< typename node_t, enum ast::Node::ref_type ref_t >
    47 node_t * ast::ptr_base<node_t, ref_t>::set_and_mutate( const node_t * n ) {
    48         // ensure ownership of `n` by this node to avoid spurious single-owner mutates
    49         assign( n );
    50         // return mutable version
    51         return get_and_mutate();
    52 }
    53 
    54 std::ostream & ast::operator<< ( std::ostream & out, const ast::Node * node ) {
    55         print(out, node);
    56         return out;
    5744}
    5845
Note: See TracChangeset for help on using the changeset viewer.