Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/AST/Node.hpp

    rf685679 r10a1225  
    1010// Created On       : Wed May 8 10:27:04 2019
    1111// Last Modified By : Andrew Beach
    12 // Last Modified On : Thu May 23 16:00:00 2019
    13 // Update Count     : 4
     12// Last Modified On : Wed May 15 16:02:00 2019
     13// Update Count     : 3
    1414//
    1515
     
    9494std::ostream& operator<< ( std::ostream& out, const Node * node );
    9595
    96 /// Call a visitor on a possibly-null node
    97 template<typename node_t>
    98 auto maybe_accept( const node_t * n, Visitor & v ) -> decltype( n->accept(v) ) {
    99         return n ? n->accept( v ) : nullptr;
    100 }
    101 
    10296/// Base class for the smart pointer types
    10397/// should never really be used.
     
    108102        ptr_base( const node_t * n ) : node(n) { if( node ) _inc(node); }
    109103        ~ptr_base() { if( node ) _dec(node); }
    110 
    111         ptr_base( const ptr_base & o ) : node(o.node) {
    112                 if( node ) _inc(node);
    113         }
    114 
    115         ptr_base( ptr_base && o ) : node(o.node) {
    116                 if( node ) _inc(node);
    117         }
    118104
    119105        template< enum Node::ref_type o_ref_t >
     
    129115        template<typename o_node_t>
    130116        ptr_base & operator=( const o_node_t * node ) {
    131                 assign( node ? strict_dynamic_cast<const node_t *>(node) : nullptr );
    132                 return *this;
    133         }
    134 
    135         ptr_base & operator=( const ptr_base & o ) {
    136                 assign(o.node);
    137                 return *this;
    138         }
    139 
    140         ptr_base & operator=( ptr_base && o ) {
    141                 assign(o.node);
     117                assign(strict_dynamic_cast<const node_t *>(node));
    142118                return *this;
    143119        }
     
    164140        template<typename o_node_t>
    165141        const o_node_t * as() const { return dynamic_cast<const o_node_t *>(node); }
    166 
    167         /// Returns a mutable version of the pointer in this node.
    168         node_t * get_and_mutate();
    169142
    170143        /// Sets this pointer to a mutated version of a pointer (possibly) owned elsehere.
Note: See TracChangeset for help on using the changeset viewer.