Home | History | Annotate | Download | only in Framework
      1 //
      2 //  ANTLRLinkBase.m
      3 //  ANTLR
      4 //
      5 //  Created by Alan Condit on 6/14/10.
      6 //  [The "BSD licence"]
      7 //  Copyright (c) 2010 Alan Condit
      8 //  All rights reserved.
      9 //
     10 // Redistribution and use in source and binary forms, with or without
     11 // modification, are permitted provided that the following conditions
     12 // are met:
     13 // 1. Redistributions of source code must retain the above copyright
     14 //    notice, this list of conditions and the following disclaimer.
     15 // 2. Redistributions in binary form must reproduce the above copyright
     16 //    notice, this list of conditions and the following disclaimer in the
     17 //    documentation and/or other materials provided with the distribution.
     18 // 3. The name of the author may not be used to endorse or promote products
     19 //    derived from this software without specific prior written permission.
     20 //
     21 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     22 // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     23 // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     24 // IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
     25 // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     26 // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     27 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     28 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     29 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     30 // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     31 
     32 #import "ANTLRLinkBase.h"
     33 
     34 @implementation ANTLRLinkBase
     35 
     36 @synthesize fPrev;
     37 @synthesize fNext;
     38 
     39 +(id<ANTLRLinkList>)newANTLRLinkBase
     40 {
     41 	return [[ANTLRLinkBase alloc] init];
     42 }
     43 
     44 +(id<ANTLRLinkList>)newANTLRLinkBase:(id<ANTLRLinkList>)np Prev:(id<ANTLRLinkList>)pp
     45 {
     46 	return [[ANTLRLinkBase alloc] initWithPtr:np Prev:pp];
     47 }
     48 
     49 -(id<ANTLRLinkList>)init
     50 {
     51 	if ((self = [super init]) != nil) {
     52 		fNext = nil;
     53 		fPrev = nil;
     54 	}
     55 	return(self);
     56 }
     57 
     58 -(id<ANTLRLinkList>)initWithPtr:(id<ANTLRLinkList>)np Prev:(id<ANTLRLinkList>)pp
     59 {
     60 	if ((self = [super init]) != nil) {
     61 		fNext = np;
     62 		fPrev = pp;
     63 	}
     64 	return(self);
     65 }
     66 
     67 -(void)dealloc
     68 {
     69 #ifdef DEBUG_DEALLOC
     70     NSLog( @"called dealloc in ANTLRLinkBase" );
     71 #endif
     72 	if (fNext) [fNext dealloc];
     73 	if (fPrev) [fPrev dealloc];
     74 	[super dealloc];
     75 }
     76 
     77 - (id) copyWithZone:(NSZone *)aZone
     78 {
     79     ANTLRLinkBase *copy;
     80     
     81     copy = [[self class] allocWithZone:aZone];
     82     copy.fPrev = fPrev;
     83     copy.fNext = fNext;
     84     return( copy );
     85 }
     86 
     87 -(id<ANTLRLinkList>)append:(id<ANTLRLinkList>)node
     88 {
     89 	node.fPrev = (id<ANTLRLinkList>)self;
     90 	node.fNext = (id<ANTLRLinkList>)self.fNext;
     91 	if (node.fNext != nil)
     92         node.fNext.fPrev = node;
     93     self.fNext = node;
     94     return( node );
     95 }
     96 
     97 -(id<ANTLRLinkList>)insert:(id<ANTLRLinkList>)node
     98 {
     99 	node.fNext = self;
    100 	node.fPrev = self.fPrev;
    101     if (node.fPrev != nil) 
    102         node.fPrev.fNext = node;
    103 	self.fPrev = node;
    104 	return( node );
    105 }
    106 
    107 -(id<ANTLRLinkList>)getfNext
    108 {
    109 	return(fNext);
    110 }
    111 
    112 -(void)setfNext:(id<ANTLRLinkList>)np
    113 {
    114 	fNext = np;
    115 }
    116 
    117 -(id<ANTLRLinkList>)getfPrev
    118 {
    119 	return(fPrev);
    120 }
    121 
    122 -(void)setfPrev:(id<ANTLRLinkList>)pp
    123 {
    124 	fPrev = pp;
    125 }
    126 
    127 @end
    128