Home | History | Annotate | Download | only in Framework
      1 //
      2 //  ANTLRMapElement.m
      3 //  ANTLR
      4 //
      5 //  Created by Alan Condit on 6/8/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 <Cocoa/Cocoa.h>
     33 #import "ANTLRMapElement.h"
     34 
     35 
     36 @implementation ANTLRMapElement
     37 
     38 @synthesize name;
     39 @synthesize node;
     40 
     41 + (id) newANTLRMapElement
     42 {
     43     return [[ANTLRMapElement alloc] init];
     44 }
     45 
     46 + (id) newANTLRMapElementWithName:(NSString *)aName Type:(NSInteger)aTType
     47 {
     48     return [[ANTLRMapElement alloc] initWithName:aName Type:aTType];
     49 }
     50 
     51 + (id) newANTLRMapElementWithNode:(NSInteger)aTType Node:(id)aNode
     52 {
     53     return [[ANTLRMapElement alloc] initWithNode:aTType Node:aNode];
     54 }
     55 
     56 + (id) newANTLRMapElementWithName:(NSString *)aName Node:(id)aNode
     57 {
     58     return [[ANTLRMapElement alloc] initWithName:aName Node:aNode];
     59 }
     60 
     61 + (id) newANTLRMapElementWithObj1:(id)anObj1 Obj2:(id)anObj2
     62 {
     63     return [[ANTLRMapElement alloc] initWithObj1:anObj1 Obj2:anObj2];
     64 }
     65 
     66 - (id) init
     67 {
     68     self = [super init];
     69     if ( self != nil ) {
     70         index = nil;
     71         name  = nil;
     72     }
     73     return self;
     74 }
     75 
     76 - (id) initWithName:(NSString *)aName Type:(NSInteger)aTType
     77 {
     78     self = [super init];
     79     if ( self != nil ) {
     80         index = [[NSNumber numberWithInteger: aTType] retain];
     81         name  = [[NSString stringWithString:aName] retain];
     82     }
     83     return self;
     84 }
     85 
     86 - (id) initWithNode:(NSInteger)aTType Node:(id)aNode
     87 {
     88     self = [super initWithAnIndex:[NSNumber numberWithInteger:aTType]];
     89     if ( self != nil ) {
     90         node  = aNode;
     91         if ( node ) [node retain];
     92     }
     93     return self;
     94 }
     95 
     96 - (id) initWithName:(NSString *)aName Node:(id)aNode
     97 {
     98     self = [super init];
     99     if ( self != nil ) {
    100         name  = [[NSString stringWithString:aName] retain];
    101         node = aNode;
    102         if ( node ) [node retain];
    103     }
    104     return self;
    105 }
    106 
    107 - (id) initWithObj1:(id)anIndex Obj2:(id)aNode
    108 {
    109     self = [super initWithAnIndex:anIndex];
    110     if ( self != nil ) {
    111         node = aNode;
    112         if ( node ) [node retain];
    113     }
    114     return self;
    115 }
    116 
    117 - (void) dealloc
    118 {
    119 #ifdef DEBUG_DEALLOC
    120     NSLog( @"called dealloc in ANTLRMapElement" );
    121 #endif
    122     if ( name ) [name release];
    123     if ( node ) [node release];
    124     [super dealloc];
    125 }
    126 
    127 - (id) copyWithZone:(NSZone *)aZone
    128 {
    129     ANTLRMapElement *copy;
    130 
    131     copy = [super copyWithZone:aZone];
    132     if (name) copy.name = name;
    133     if (node) copy.node = node;
    134     return( copy );
    135 }
    136 
    137 - (NSInteger) count
    138 {
    139     NSInteger aCnt = 0;
    140     if (name != nil) aCnt++;;
    141     if (node != nil) aCnt++;;
    142     return aCnt;
    143 }
    144 
    145 - (NSInteger)size
    146 {
    147     NSInteger aSize = 0;
    148     if ( name ) aSize += sizeof(id);
    149     if ( node ) aSize += sizeof(id);
    150     return aSize;
    151 }
    152 
    153 
    154 - (NSString *)getName
    155 {
    156     return name;
    157 }
    158 
    159 - (void)setName:(NSString *)aName
    160 {
    161     if ( aName != name ) {
    162         if ( name ) [name release];
    163         [aName retain];
    164     }
    165     name = aName;
    166 }
    167 
    168 - (id)getNode
    169 {
    170     return node;
    171 }
    172 
    173 - (void)setNode:(id)aNode
    174 {   if ( aNode != node ) {
    175         if ( node ) [node release];
    176         [aNode retain];
    177     }
    178     node = aNode;
    179 }
    180 
    181 - (void)putNode:(id)aNode
    182 {
    183     index = ((ANTLRMapElement *)aNode).index;
    184     if (((ANTLRMapElement *)aNode).name) {
    185         name = [((ANTLRMapElement *)aNode).name retain];
    186         node = nil;
    187     }
    188     if (((ANTLRMapElement *)aNode).node) {
    189         name = nil;
    190         node = [((ANTLRMapElement *)aNode).node retain];
    191     }
    192 }
    193 
    194 - (void)putNode:(id)aNode With:(NSInteger)uniqueID
    195 {
    196     index = ((ANTLRMapElement *)aNode).index;
    197     if (((ANTLRMapElement *)aNode).name) {
    198         name = [((ANTLRMapElement *)aNode).name retain];
    199         node = nil;
    200     }
    201     if (((ANTLRMapElement *)aNode).node) {
    202         name = nil;
    203         node = [((ANTLRMapElement *)aNode).node retain];
    204     }
    205 }
    206 
    207 @end
    208