/antlr-3.4/runtime/ObjC/Framework/ANTLRRewriteRuleNodeStream.m

# · Objective C · 74 lines · 54 code · 13 blank · 7 comment · 11 complexity · 4d2745dfce81547be3f6ff20b631b9d4 MD5 · raw file

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