xref: /aosp_15_r20/external/antlr/runtime/ObjC/Framework/MapElement.m (revision 16467b971bd3e2009fad32dd79016f2c7e421deb)
1*16467b97STreehugger Robot//
2*16467b97STreehugger Robot//  MapElement.m
3*16467b97STreehugger Robot//  ANTLR
4*16467b97STreehugger Robot//
5*16467b97STreehugger Robot//  Created by Alan Condit on 6/8/10.
6*16467b97STreehugger Robot// [The "BSD licence"]
7*16467b97STreehugger Robot// Copyright (c) 2010 Alan Condit
8*16467b97STreehugger Robot// All rights reserved.
9*16467b97STreehugger Robot//
10*16467b97STreehugger Robot// Redistribution and use in source and binary forms, with or without
11*16467b97STreehugger Robot// modification, are permitted provided that the following conditions
12*16467b97STreehugger Robot// are met:
13*16467b97STreehugger Robot// 1. Redistributions of source code must retain the above copyright
14*16467b97STreehugger Robot//    notice, this list of conditions and the following disclaimer.
15*16467b97STreehugger Robot// 2. Redistributions in binary form must reproduce the above copyright
16*16467b97STreehugger Robot//    notice, this list of conditions and the following disclaimer in the
17*16467b97STreehugger Robot//    documentation and/or other materials provided with the distribution.
18*16467b97STreehugger Robot// 3. The name of the author may not be used to endorse or promote products
19*16467b97STreehugger Robot//    derived from this software without specific prior written permission.
20*16467b97STreehugger Robot//
21*16467b97STreehugger Robot// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
22*16467b97STreehugger Robot// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
23*16467b97STreehugger Robot// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
24*16467b97STreehugger Robot// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
25*16467b97STreehugger Robot// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
26*16467b97STreehugger Robot// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27*16467b97STreehugger Robot// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28*16467b97STreehugger Robot// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29*16467b97STreehugger Robot// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
30*16467b97STreehugger Robot// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31*16467b97STreehugger Robot
32*16467b97STreehugger Robot#import <Foundation/Foundation.h>
33*16467b97STreehugger Robot#import "MapElement.h"
34*16467b97STreehugger Robot
35*16467b97STreehugger Robot
36*16467b97STreehugger Robot@implementation MapElement
37*16467b97STreehugger Robot
38*16467b97STreehugger Robot@synthesize name;
39*16467b97STreehugger Robot@synthesize node;
40*16467b97STreehugger Robot
41*16467b97STreehugger Robot+ (id) newMapElement
42*16467b97STreehugger Robot{
43*16467b97STreehugger Robot    return [[MapElement alloc] init];
44*16467b97STreehugger Robot}
45*16467b97STreehugger Robot
46*16467b97STreehugger Robot+ (id) newMapElementWithName:(NSString *)aName Type:(NSInteger)aTType
47*16467b97STreehugger Robot{
48*16467b97STreehugger Robot    return [[MapElement alloc] initWithName:aName Type:aTType];
49*16467b97STreehugger Robot}
50*16467b97STreehugger Robot
51*16467b97STreehugger Robot+ (id) newMapElementWithNode:(NSInteger)aTType Node:(id)aNode
52*16467b97STreehugger Robot{
53*16467b97STreehugger Robot    return [[MapElement alloc] initWithNode:aTType Node:aNode];
54*16467b97STreehugger Robot}
55*16467b97STreehugger Robot
56*16467b97STreehugger Robot+ (id) newMapElementWithName:(NSString *)aName Node:(id)aNode
57*16467b97STreehugger Robot{
58*16467b97STreehugger Robot    return [[MapElement alloc] initWithName:aName Node:aNode];
59*16467b97STreehugger Robot}
60*16467b97STreehugger Robot
61*16467b97STreehugger Robot+ (id) newMapElementWithObj1:(id)anObj1 Obj2:(id)anObj2
62*16467b97STreehugger Robot{
63*16467b97STreehugger Robot    return [[MapElement alloc] initWithObj1:anObj1 Obj2:anObj2];
64*16467b97STreehugger Robot}
65*16467b97STreehugger Robot
66*16467b97STreehugger Robot- (id) init
67*16467b97STreehugger Robot{
68*16467b97STreehugger Robot    self = [super init];
69*16467b97STreehugger Robot    if ( self != nil ) {
70*16467b97STreehugger Robot        index = nil;
71*16467b97STreehugger Robot        name  = nil;
72*16467b97STreehugger Robot    }
73*16467b97STreehugger Robot    return self;
74*16467b97STreehugger Robot}
75*16467b97STreehugger Robot
76*16467b97STreehugger Robot- (id) initWithName:(NSString *)aName Type:(NSInteger)aTType
77*16467b97STreehugger Robot{
78*16467b97STreehugger Robot    self = [super init];
79*16467b97STreehugger Robot    if ( self != nil ) {
80*16467b97STreehugger Robot        index = [[ACNumber numberWithInteger: aTType] retain];
81*16467b97STreehugger Robot        name  = [[NSString stringWithString:aName] retain];
82*16467b97STreehugger Robot    }
83*16467b97STreehugger Robot    return self;
84*16467b97STreehugger Robot}
85*16467b97STreehugger Robot
86*16467b97STreehugger Robot- (id) initWithNode:(NSInteger)aTType Node:(id)aNode
87*16467b97STreehugger Robot{
88*16467b97STreehugger Robot    self = [super initWithAnIndex:[ACNumber numberWithInteger:aTType]];
89*16467b97STreehugger Robot    if ( self != nil ) {
90*16467b97STreehugger Robot        node  = aNode;
91*16467b97STreehugger Robot        if ( node ) [node retain];
92*16467b97STreehugger Robot    }
93*16467b97STreehugger Robot    return self;
94*16467b97STreehugger Robot}
95*16467b97STreehugger Robot
96*16467b97STreehugger Robot- (id) initWithName:(NSString *)aName Node:(id)aNode
97*16467b97STreehugger Robot{
98*16467b97STreehugger Robot    self = [super init];
99*16467b97STreehugger Robot    if ( self != nil ) {
100*16467b97STreehugger Robot        name  = [[NSString stringWithString:aName] retain];
101*16467b97STreehugger Robot        node = aNode;
102*16467b97STreehugger Robot        if ( node ) [node retain];
103*16467b97STreehugger Robot    }
104*16467b97STreehugger Robot    return self;
105*16467b97STreehugger Robot}
106*16467b97STreehugger Robot
107*16467b97STreehugger Robot- (id) initWithObj1:(id)anIndex Obj2:(id)aNode
108*16467b97STreehugger Robot{
109*16467b97STreehugger Robot    self = [super initWithAnIndex:anIndex];
110*16467b97STreehugger Robot    if ( self != nil ) {
111*16467b97STreehugger Robot        node = aNode;
112*16467b97STreehugger Robot        if ( node ) [node retain];
113*16467b97STreehugger Robot    }
114*16467b97STreehugger Robot    return self;
115*16467b97STreehugger Robot}
116*16467b97STreehugger Robot
117*16467b97STreehugger Robot- (void) dealloc
118*16467b97STreehugger Robot{
119*16467b97STreehugger Robot#ifdef DEBUG_DEALLOC
120*16467b97STreehugger Robot    NSLog( @"called dealloc in MapElement" );
121*16467b97STreehugger Robot#endif
122*16467b97STreehugger Robot    if ( name ) [name release];
123*16467b97STreehugger Robot    if ( node ) [node release];
124*16467b97STreehugger Robot    [super dealloc];
125*16467b97STreehugger Robot}
126*16467b97STreehugger Robot
127*16467b97STreehugger Robot- (id) copyWithZone:(NSZone *)aZone
128*16467b97STreehugger Robot{
129*16467b97STreehugger Robot    MapElement *copy;
130*16467b97STreehugger Robot
131*16467b97STreehugger Robot    copy = [super copyWithZone:aZone];
132*16467b97STreehugger Robot    if (name) copy.name = name;
133*16467b97STreehugger Robot    if (node) copy.node = node;
134*16467b97STreehugger Robot    return( copy );
135*16467b97STreehugger Robot}
136*16467b97STreehugger Robot
137*16467b97STreehugger Robot- (NSInteger) count
138*16467b97STreehugger Robot{
139*16467b97STreehugger Robot    NSInteger aCnt = 0;
140*16467b97STreehugger Robot    if (name != nil) aCnt++;;
141*16467b97STreehugger Robot    if (node != nil) aCnt++;;
142*16467b97STreehugger Robot    return aCnt;
143*16467b97STreehugger Robot}
144*16467b97STreehugger Robot
145*16467b97STreehugger Robot- (NSInteger)size
146*16467b97STreehugger Robot{
147*16467b97STreehugger Robot    NSInteger aSize = 0;
148*16467b97STreehugger Robot    if ( name ) aSize += sizeof(id);
149*16467b97STreehugger Robot    if ( node ) aSize += sizeof(id);
150*16467b97STreehugger Robot    return aSize;
151*16467b97STreehugger Robot}
152*16467b97STreehugger Robot
153*16467b97STreehugger Robot
154*16467b97STreehugger Robot- (NSString *)getName
155*16467b97STreehugger Robot{
156*16467b97STreehugger Robot    return name;
157*16467b97STreehugger Robot}
158*16467b97STreehugger Robot
159*16467b97STreehugger Robot- (void)setName:(NSString *)aName
160*16467b97STreehugger Robot{
161*16467b97STreehugger Robot    if ( aName != name ) {
162*16467b97STreehugger Robot        if ( name ) [name release];
163*16467b97STreehugger Robot        [aName retain];
164*16467b97STreehugger Robot    }
165*16467b97STreehugger Robot    name = aName;
166*16467b97STreehugger Robot}
167*16467b97STreehugger Robot
168*16467b97STreehugger Robot- (id)getNode
169*16467b97STreehugger Robot{
170*16467b97STreehugger Robot    return node;
171*16467b97STreehugger Robot}
172*16467b97STreehugger Robot
173*16467b97STreehugger Robot- (void)setNode:(id)aNode
174*16467b97STreehugger Robot{   if ( aNode != node ) {
175*16467b97STreehugger Robot        if ( node ) [node release];
176*16467b97STreehugger Robot        [aNode retain];
177*16467b97STreehugger Robot    }
178*16467b97STreehugger Robot    node = aNode;
179*16467b97STreehugger Robot}
180*16467b97STreehugger Robot
181*16467b97STreehugger Robot- (void)putNode:(id)aNode
182*16467b97STreehugger Robot{
183*16467b97STreehugger Robot    index = ((MapElement *)aNode).index;
184*16467b97STreehugger Robot    if (((MapElement *)aNode).name) {
185*16467b97STreehugger Robot        name = [((MapElement *)aNode).name retain];
186*16467b97STreehugger Robot        node = nil;
187*16467b97STreehugger Robot    }
188*16467b97STreehugger Robot    if (((MapElement *)aNode).node) {
189*16467b97STreehugger Robot        name = nil;
190*16467b97STreehugger Robot        node = [((MapElement *)aNode).node retain];
191*16467b97STreehugger Robot    }
192*16467b97STreehugger Robot}
193*16467b97STreehugger Robot
194*16467b97STreehugger Robot- (void)putNode:(id)aNode With:(NSInteger)uniqueID
195*16467b97STreehugger Robot{
196*16467b97STreehugger Robot    index = ((MapElement *)aNode).index;
197*16467b97STreehugger Robot    if (((MapElement *)aNode).name) {
198*16467b97STreehugger Robot        name = [((MapElement *)aNode).name retain];
199*16467b97STreehugger Robot        node = nil;
200*16467b97STreehugger Robot    }
201*16467b97STreehugger Robot    if (((MapElement *)aNode).node) {
202*16467b97STreehugger Robot        name = nil;
203*16467b97STreehugger Robot        node = [((MapElement *)aNode).node retain];
204*16467b97STreehugger Robot    }
205*16467b97STreehugger Robot}
206*16467b97STreehugger Robot
207*16467b97STreehugger Robot@end
208