Home | History | Annotate | Download | only in Framework
      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 
     34 static 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