blob: 8dfedd7e7dd6f7e0133f86dd59bfaeb62868d38e [file] [log] [blame]
//
// ANTLRRewriteRuleNodeStream.m
// ANTLR
//
// Created by Kay Röpke on 7/16/07.
// Copyright 2007 classDump. All rights reserved.
//
#import "ANTLRRewriteRuleNodeStream.h"
#import "ANTLRRuntimeException.h"
@implementation ANTLRRewriteRuleNodeStream
+ (ANTLRRewriteRuleNodeStream*) newANTLRRewriteRuleNodeStream:(id<ANTLRTreeAdaptor>)aTreeAdaptor description:(NSString *)anElementDescription;
{
return [[ANTLRRewriteRuleNodeStream alloc] initWithTreeAdaptor:aTreeAdaptor description:anElementDescription];
}
+ (ANTLRRewriteRuleNodeStream*) newANTLRRewriteRuleNodeStream:(id<ANTLRTreeAdaptor>)aTreeAdaptor description:(NSString *)anElementDescription element:(id)anElement;
{
return [[ANTLRRewriteRuleNodeStream alloc] initWithTreeAdaptor:aTreeAdaptor description:anElementDescription element:anElement];
}
+ (ANTLRRewriteRuleNodeStream*) newANTLRRewriteRuleNode:(id<ANTLRTreeAdaptor>)aTreeAdaptor description:(NSString *)anElementDescription elements:(NSArray *)theElements;
{
return [[ANTLRRewriteRuleNodeStream alloc] initWithTreeAdaptor:aTreeAdaptor description:anElementDescription elements:theElements];
}
- (id) initWithTreeAdaptor:(id<ANTLRTreeAdaptor>)aTreeAdaptor description:(NSString *)anElementDescription
{
if ((self = [super initWithTreeAdaptor:aTreeAdaptor description:anElementDescription]) != nil) {
dirty = NO;
isSingleElement = YES;
}
return self;
}
- (id) initWithTreeAdaptor:(id<ANTLRTreeAdaptor>)aTreeAdaptor description:(NSString *)anElementDescription element:(id)anElement
{
if ((self = [super initWithTreeAdaptor:aTreeAdaptor description:anElementDescription element:anElement]) != nil) {
dirty = NO;
}
return self;
}
- (id) initWithTreeAdaptor:(id<ANTLRTreeAdaptor>)aTreeAdaptor description:(NSString *)anElementDescription elements:(NSArray *)theElements
{
if ((self = [super init]) != nil) {
dirty = NO;
}
return self;
}
- (id) nextNode
{
if (dirty || (cursor >= [self size] && [self size] == 1))
return [treeAdaptor dupNode:[self _next]];
else
return [self _next];
}
- (id<ANTLRBaseTree>) toTree:(id<ANTLRBaseTree>)element
{
return [treeAdaptor dupNode:element];
}
- (id) dup:(id)element
{
return [treeAdaptor dupTree:element];
@throw [ANTLRRuntimeException newException:@"ANTLRUnsupportedOperationException" reason:@"dup can't be called for a node stream."];
}
@end