Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/libcfa/bits/containers.h

    ra1a17a74 r705e612  
    220220        }
    221221
    222         #define next 0
    223         #define prev 1
     222        #define _next .0
     223        #define _prev .1
    224224        forall(dtype T | sized(T))
    225225        static inline void push_front( __dllist(T) & this, T & node ) with( this ) {
    226                 verify(__get);
    227226                if ( head ) {
    228                         __get( node ).next = head;
    229                         __get( node ).prev = __get( *head ).prev;
     227                        __get( node )_next = head;
     228                        __get( node )_prev = __get( *head )_prev;
    230229                        // inserted node must be consistent before it is seen
    231230                        // prevent code movement across barrier
    232231                        asm( "" : : : "memory" );
    233                         __get( *head ).prev = &node;
    234                         T & _prev = *__get( node ).prev;
    235                         __get( _prev ).next = &node;
     232                        __get( *head )_prev = &node;
     233                        T & prev = *__get( node )_prev;
     234                        __get( prev )_next = &node;
    236235                }
    237236                else {
    238                         __get( node ).next = &node;
    239                         __get( node ).prev = &node;
     237                        __get( node )_next = &node;
     238                        __get( node )_prev = &node;
    240239                }
    241240
     
    247246        forall(dtype T | sized(T))
    248247        static inline void remove( __dllist(T) & this, T & node ) with( this ) {
    249                 verify(__get);
    250248                if ( &node == head ) {
    251                         if ( __get( *head ).next == head ) {
     249                        if ( __get( *head )_next == head ) {
    252250                                head = NULL;
    253251                        }
    254252                        else {
    255                                 head = __get( *head ).next;
     253                                head = __get( *head )_next;
    256254                        }
    257255                }
    258                 __get( *__get( node ).next ).prev = __get( node ).prev;
    259                 __get( *__get( node ).prev ).next = __get( node ).next;
    260                 __get( node ).next = NULL;
    261                 __get( node ).prev = NULL;
    262         }
    263         #undef next
    264         #undef prev
     256                __get( *__get( node )_next )_prev = __get( node )_prev;
     257                __get( *__get( node )_prev )_next = __get( node )_next;
     258                __get( node )_next = NULL;
     259                __get( node )_prev = NULL;
     260        }
     261        #undef _next
     262        #undef _prev
    265263#endif
    266264
Note: See TracChangeset for help on using the changeset viewer.