1*16467b97STreehugger Robot // [The "BSD licence"] 2*16467b97STreehugger Robot // Copyright (c) 2006-2007 Kay Roepke 2010 Alan Condit 3*16467b97STreehugger Robot // All rights reserved. 4*16467b97STreehugger Robot // 5*16467b97STreehugger Robot // Redistribution and use in source and binary forms, with or without 6*16467b97STreehugger Robot // modification, are permitted provided that the following conditions 7*16467b97STreehugger Robot // are met: 8*16467b97STreehugger Robot // 1. Redistributions of source code must retain the above copyright 9*16467b97STreehugger Robot // notice, this list of conditions and the following disclaimer. 10*16467b97STreehugger Robot // 2. Redistributions in binary form must reproduce the above copyright 11*16467b97STreehugger Robot // notice, this list of conditions and the following disclaimer in the 12*16467b97STreehugger Robot // documentation and/or other materials provided with the distribution. 13*16467b97STreehugger Robot // 3. The name of the author may not be used to endorse or promote products 14*16467b97STreehugger Robot // derived from this software without specific prior written permission. 15*16467b97STreehugger Robot // 16*16467b97STreehugger Robot // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 17*16467b97STreehugger Robot // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 18*16467b97STreehugger Robot // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19*16467b97STreehugger Robot // IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 20*16467b97STreehugger Robot // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 21*16467b97STreehugger Robot // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22*16467b97STreehugger Robot // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23*16467b97STreehugger Robot // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24*16467b97STreehugger Robot // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25*16467b97STreehugger Robot // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26*16467b97STreehugger Robot 27*16467b97STreehugger Robot #import <Foundation/Foundation.h> 28*16467b97STreehugger Robot #import "CommonToken.h" 29*16467b97STreehugger Robot #import "BaseTree.h" 30*16467b97STreehugger Robot 31*16467b97STreehugger Robot @interface CommonTree : BaseTree <Tree> { 32*16467b97STreehugger Robot __strong CommonToken *token; 33*16467b97STreehugger Robot NSInteger startIndex; 34*16467b97STreehugger Robot NSInteger stopIndex; 35*16467b97STreehugger Robot __strong CommonTree *parent; 36*16467b97STreehugger Robot NSInteger childIndex; 37*16467b97STreehugger Robot } 38*16467b97STreehugger Robot 39*16467b97STreehugger Robot + (CommonTree *) invalidNode; 40*16467b97STreehugger Robot + (CommonTree *) newTree; 41*16467b97STreehugger Robot + (CommonTree *) newTreeWithTree:(CommonTree *)aTree; 42*16467b97STreehugger Robot + (CommonTree *) newTreeWithToken:(CommonToken *)aToken; 43*16467b97STreehugger Robot + (CommonTree *) newTreeWithTokenType:(NSInteger)tokenType; 44*16467b97STreehugger Robot + (CommonTree *) newTreeWithTokenType:(NSInteger)aTType Text:(NSString *)theText; 45*16467b97STreehugger Robot 46*16467b97STreehugger Robot - (id) init; 47*16467b97STreehugger Robot - (id) initWithTreeNode:(CommonTree *)aNode; 48*16467b97STreehugger Robot - (id) initWithToken:(CommonToken *)aToken; 49*16467b97STreehugger Robot - (id) initWithTokenType:(NSInteger)aTokenType; 50*16467b97STreehugger Robot - (id) initWithTokenType:(NSInteger)aTokenType Text:(NSString *)theText; 51*16467b97STreehugger Robot 52*16467b97STreehugger Robot - (id<BaseTree>) copyWithZone:(NSZone *)aZone; 53*16467b97STreehugger Robot 54*16467b97STreehugger Robot - (BOOL) isNil; 55*16467b97STreehugger Robot 56*16467b97STreehugger Robot - (CommonToken *) getToken; 57*16467b97STreehugger Robot - (void) setToken:(CommonToken *)aToken; 58*16467b97STreehugger Robot - (CommonToken *) dupNode; 59*16467b97STreehugger Robot - (NSInteger)type; 60*16467b97STreehugger Robot - (NSString *)text; 61*16467b97STreehugger Robot - (NSUInteger)line; 62*16467b97STreehugger Robot - (void) setLine:(NSUInteger)aLine; 63*16467b97STreehugger Robot - (NSUInteger)charPositionInLine; 64*16467b97STreehugger Robot - (void) setCharPositionInLine:(NSUInteger)pos; 65*16467b97STreehugger Robot - (CommonTree *) getParent; 66*16467b97STreehugger Robot - (void) setParent:(CommonTree *) t; 67*16467b97STreehugger Robot 68*16467b97STreehugger Robot #ifdef DONTUSENOMO 69*16467b97STreehugger Robot - (NSString *) treeDescription; 70*16467b97STreehugger Robot #endif 71*16467b97STreehugger Robot - (NSString *) description; 72*16467b97STreehugger Robot - (void) setUnknownTokenBoundaries; 73*16467b97STreehugger Robot - (NSInteger) getTokenStartIndex; 74*16467b97STreehugger Robot - (void) setTokenStartIndex: (NSInteger) aStartIndex; 75*16467b97STreehugger Robot - (NSInteger) getTokenStopIndex; 76*16467b97STreehugger Robot - (void) setTokenStopIndex: (NSInteger) aStopIndex; 77*16467b97STreehugger Robot 78*16467b97STreehugger Robot /* 79*16467b97STreehugger Robot @property (retain, getter=getCommonToken, setter=setCommonToken:) CommonToken *token; 80*16467b97STreehugger Robot @property (assign, getter=getTokenStartIndex, setter=setTokenStartIndex:) NSInteger startIndex; 81*16467b97STreehugger Robot @property (assign, getter=getTokenStopIndex, setter=setTokenStopIndex:) NSInteger stopIndex; 82*16467b97STreehugger Robot @property (retain, getter=getParent, setter=setParent:) id<BaseTree> parentparent; 83*16467b97STreehugger Robot @property (assign, getter=getChildIndex, setter=setChildIndex:) NSInteger childIndex; 84*16467b97STreehugger Robot */ 85*16467b97STreehugger Robot 86*16467b97STreehugger Robot @property (retain) CommonToken *token; 87*16467b97STreehugger Robot @property (assign) NSInteger startIndex; 88*16467b97STreehugger Robot @property (assign) NSInteger stopIndex; 89*16467b97STreehugger Robot @property (retain) CommonTree *parent; 90*16467b97STreehugger Robot @property (assign) NSInteger childIndex; 91*16467b97STreehugger Robot 92*16467b97STreehugger Robot @end 93