1// 2// ANTLRNodeMapElement.m 3// ANTLR 4// 5// Created by Alan Condit on 6/16/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 "ANTLRNodeMapElement.h" 33 34static NSInteger _aUniqueID; 35 36@implementation ANTLRNodeMapElement 37 38@synthesize node; 39 40+ (void)initialize 41{ 42 _aUniqueID = 0; 43} 44 45+ (ANTLRNodeMapElement *)newANTLRNodeMapElement 46{ 47 return [[ANTLRNodeMapElement alloc] init]; 48} 49 50+ (ANTLRNodeMapElement *)newANTLRNodeMapElementWithIndex:(id)anIndex Node:(id<ANTLRBaseTree>)aNode 51{ 52 return [[ANTLRNodeMapElement alloc] initWithAnIndex:anIndex Node:aNode]; 53} 54 55- (id) init 56{ 57 if ((self = [super init]) != nil ) { 58 index = nil; 59 node = nil; 60 } 61 return (self); 62} 63 64- (id) initWithAnIndex:(id)anIndex Node:(id)aNode 65{ 66 self = [super initWithAnIndex:anIndex]; 67 if ( self ) { 68 if ( aNode != node ) { 69 if ( node ) [node release]; 70 [aNode retain]; 71 } 72 node = aNode; 73 } 74 return (self); 75} 76 77- (id) copyWithZone:(NSZone *)aZone 78{ 79 ANTLRNodeMapElement *copy; 80 81 copy = [super copyWithZone:aZone]; 82 copy.node = node; 83 return( copy ); 84} 85 86- (id<ANTLRBaseTree>)getNode 87{ 88 return node; 89} 90 91- (void)setNode:(id<ANTLRBaseTree>)aNode 92{ 93 if ( aNode != node ) { 94 if ( node ) [node release]; 95 [aNode retain]; 96 } 97 node = aNode; 98} 99 100- (NSInteger)size 101{ 102 NSInteger aSize = 0; 103 if (node != nil) aSize += sizeof(id); 104 if (index != nil) aSize += sizeof(id); 105 return( aSize ); 106} 107 108@end 109