Home | History | Annotate | Download | only in Framework
      1 //
      2 //  ANTLRRewriteRuleNodeStream.m
      3 //  ANTLR
      4 //
      5 //  Created by Kay Rpke on 7/16/07.
      6 //  Copyright 2007 classDump. All rights reserved.
      7 //
      8 
      9 #import "ANTLRRewriteRuleNodeStream.h"
     10 #import "ANTLRRuntimeException.h"
     11 
     12 @implementation ANTLRRewriteRuleNodeStream
     13 
     14 + (ANTLRRewriteRuleNodeStream*) newANTLRRewriteRuleNodeStream:(id<ANTLRTreeAdaptor>)aTreeAdaptor description:(NSString *)anElementDescription;
     15 {
     16     return [[ANTLRRewriteRuleNodeStream alloc] initWithTreeAdaptor:aTreeAdaptor description:anElementDescription];
     17 }
     18 
     19 + (ANTLRRewriteRuleNodeStream*) newANTLRRewriteRuleNodeStream:(id<ANTLRTreeAdaptor>)aTreeAdaptor description:(NSString *)anElementDescription element:(id)anElement;
     20 {
     21     return [[ANTLRRewriteRuleNodeStream alloc] initWithTreeAdaptor:aTreeAdaptor description:anElementDescription element:anElement];
     22 }
     23 
     24 + (ANTLRRewriteRuleNodeStream*) newANTLRRewriteRuleNode:(id<ANTLRTreeAdaptor>)aTreeAdaptor description:(NSString *)anElementDescription elements:(NSArray *)theElements;
     25 {
     26     return [[ANTLRRewriteRuleNodeStream alloc] initWithTreeAdaptor:aTreeAdaptor description:anElementDescription elements:theElements];
     27 }
     28 
     29 - (id) initWithTreeAdaptor:(id<ANTLRTreeAdaptor>)aTreeAdaptor description:(NSString *)anElementDescription
     30 {
     31     if ((self = [super initWithTreeAdaptor:aTreeAdaptor description:anElementDescription]) != nil) {
     32         dirty = NO;
     33         isSingleElement = YES;
     34     }
     35     return self;
     36 }
     37 
     38 - (id) initWithTreeAdaptor:(id<ANTLRTreeAdaptor>)aTreeAdaptor description:(NSString *)anElementDescription element:(id)anElement
     39 {
     40     if ((self = [super initWithTreeAdaptor:aTreeAdaptor description:anElementDescription element:anElement]) != nil) {
     41         dirty = NO;
     42     }
     43     return self;
     44 }
     45 
     46 - (id) initWithTreeAdaptor:(id<ANTLRTreeAdaptor>)aTreeAdaptor description:(NSString *)anElementDescription elements:(NSArray *)theElements
     47 {
     48     if ((self = [super init]) != nil) {
     49         dirty = NO;
     50     }
     51     return self;
     52 }
     53 
     54 
     55 - (id) nextNode
     56 {
     57     if (dirty || (cursor >= [self size] && [self size] == 1))
     58         return [treeAdaptor dupNode:[self _next]];
     59     else 
     60         return [self _next];
     61 }
     62 
     63 - (id<ANTLRBaseTree>) toTree:(id<ANTLRBaseTree>)element
     64 {
     65     return [treeAdaptor dupNode:element];
     66 }
     67 
     68 - (id) dup:(id)element
     69 {
     70     return [treeAdaptor dupTree:element];
     71     @throw [ANTLRRuntimeException newException:@"ANTLRUnsupportedOperationException" reason:@"dup can't be called for a node stream."];
     72 }
     73 
     74 @end
     75