1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver/* 2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * [The "BSD licence"] 3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * Copyright (c) 2011 Terence Parr 4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * All rights reserved. 5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * 6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * Conversion to C#: 7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * Copyright (c) 2011 Sam Harwell, Pixel Mine, Inc. 8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * All rights reserved. 9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * 10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * Redistribution and use in source and binary forms, with or without 11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * modification, are permitted provided that the following conditions 12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * are met: 13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * 1. Redistributions of source code must retain the above copyright 14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * notice, this list of conditions and the following disclaimer. 15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * 2. Redistributions in binary form must reproduce the above copyright 16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * notice, this list of conditions and the following disclaimer in the 17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * documentation and/or other materials provided with the distribution. 18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * 3. The name of the author may not be used to endorse or promote products 19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * derived from this software without specific prior written permission. 20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * 21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver */ 32324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruvernamespace Antlr.Runtime.Debug 34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver{ 35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver using ITreeAdaptor = Antlr.Runtime.Tree.ITreeAdaptor; 36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver /** <summary> 38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * A TreeAdaptor proxy that fires debugging events to a DebugEventListener 39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * delegate and uses the TreeAdaptor delegate to do the actual work. All 40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * AST events are triggered by this adaptor; no code gen changes are needed 41324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * in generated rules. Debugging events are triggered *after* invoking 42324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * tree adaptor routines. 43324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * </summary> 44324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * 45324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * <remarks> 46324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * Trees created with actions in rewrite actions like "-> ^(ADD {foo} {bar})" 47324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * cannot be tracked as they might not use the adaptor to create foo, bar. 48324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * The debug listener has to deal with tree node IDs for which it did 49324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * not see a createNode event. A single <unknown> node is sufficient even 50324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * if it represents a whole tree. 51324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * </remarks> 52324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver */ 53324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public class DebugTreeAdaptor : ITreeAdaptor 54324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 55324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver protected IDebugEventListener dbg; 56324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver protected ITreeAdaptor adaptor; 57324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 58324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public DebugTreeAdaptor( IDebugEventListener dbg, ITreeAdaptor adaptor ) 59324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 60324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver this.dbg = dbg; 61324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver this.adaptor = adaptor; 62324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 63324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 64324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual object Create( IToken payload ) 65324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 66324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if ( payload.TokenIndex < 0 ) 67324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 68324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // could be token conjured up during error recovery 69324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return Create( payload.Type, payload.Text ); 70324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 71324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver object node = adaptor.Create( payload ); 72324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver dbg.CreateNode( node, payload ); 73324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return node; 74324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 75324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 76324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual object ErrorNode( ITokenStream input, IToken start, IToken stop, 77324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver RecognitionException e ) 78324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 79324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver object node = adaptor.ErrorNode( input, start, stop, e ); 80324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if ( node != null ) 81324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 82324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver dbg.ErrorNode( node ); 83324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 84324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return node; 85324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 86324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 87324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual object DupTree( object tree ) 88324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 89324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver object t = adaptor.DupTree( tree ); 90324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // walk the tree and emit create and add child events 91324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // to simulate what dupTree has done. dupTree does not call this debug 92324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // adapter so I must simulate. 93324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver SimulateTreeConstruction( t ); 94324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return t; 95324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 96324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 97324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver /** <summary>^(A B C): emit create A, create B, add child, ...</summary> */ 98324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver protected virtual void SimulateTreeConstruction( object t ) 99324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 100324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver dbg.CreateNode( t ); 101324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver int n = adaptor.GetChildCount( t ); 102324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver for ( int i = 0; i < n; i++ ) 103324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 104324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver object child = adaptor.GetChild( t, i ); 105324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver SimulateTreeConstruction( child ); 106324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver dbg.AddChild( t, child ); 107324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 108324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 109324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 110324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual object DupNode( object treeNode ) 111324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 112324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver object d = adaptor.DupNode( treeNode ); 113324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver dbg.CreateNode( d ); 114324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return d; 115324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 116324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 117324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public object DupNode(int type, object treeNode) 118324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 119324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver object d = adaptor.DupNode(type, treeNode); 120324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver dbg.CreateNode(d); 121324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return d; 122324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 123324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 124324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public object DupNode(object treeNode, string text) 125324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 126324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver object d = adaptor.DupNode(treeNode, text); 127324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver dbg.CreateNode(d); 128324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return d; 129324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 130324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 131324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public object DupNode(int type, object treeNode, string text) 132324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 133324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver object d = adaptor.DupNode(type, treeNode, text); 134324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver dbg.CreateNode(d); 135324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return d; 136324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 137324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 138324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual object Nil() 139324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 140324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver object node = adaptor.Nil(); 141324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver dbg.NilNode( node ); 142324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return node; 143324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 144324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 145324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual bool IsNil( object tree ) 146324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 147324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return adaptor.IsNil( tree ); 148324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 149324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 150324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual void AddChild( object t, object child ) 151324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 152324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if ( t == null || child == null ) 153324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 154324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return; 155324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 156324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver adaptor.AddChild( t, child ); 157324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver dbg.AddChild( t, child ); 158324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 159324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 160324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual object BecomeRoot( object newRoot, object oldRoot ) 161324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 162324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver object n = adaptor.BecomeRoot( newRoot, oldRoot ); 163324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver dbg.BecomeRoot( newRoot, oldRoot ); 164324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return n; 165324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 166324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 167324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual object RulePostProcessing( object root ) 168324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 169324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return adaptor.RulePostProcessing( root ); 170324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 171324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 172324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual void AddChild( object t, IToken child ) 173324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 174324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver object n = this.Create( child ); 175324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver this.AddChild( t, n ); 176324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 177324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 178324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual object BecomeRoot( IToken newRoot, object oldRoot ) 179324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 180324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver object n = this.Create( newRoot ); 181324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver adaptor.BecomeRoot( n, oldRoot ); 182324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver dbg.BecomeRoot( newRoot, oldRoot ); 183324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return n; 184324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 185324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 186324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual object Create( int tokenType, IToken fromToken ) 187324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 188324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver object node = adaptor.Create( tokenType, fromToken ); 189324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver dbg.CreateNode( node ); 190324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return node; 191324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 192324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 193324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual object Create( int tokenType, IToken fromToken, string text ) 194324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 195324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver object node = adaptor.Create( tokenType, fromToken, text ); 196324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver dbg.CreateNode( node ); 197324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return node; 198324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 199324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 200324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual object Create( int tokenType, string text ) 201324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 202324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver object node = adaptor.Create( tokenType, text ); 203324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver dbg.CreateNode( node ); 204324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return node; 205324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 206324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 207324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public object Create(IToken fromToken, string text) 208324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 209324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver object node = adaptor.Create(fromToken, text); 210324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver dbg.CreateNode(node); 211324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return node; 212324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 213324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 214324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual int GetType( object t ) 215324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 216324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return adaptor.GetType( t ); 217324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 218324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 219324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual void SetType( object t, int type ) 220324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 221324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver adaptor.SetType( t, type ); 222324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 223324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 224324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual string GetText( object t ) 225324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 226324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return adaptor.GetText( t ); 227324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 228324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 229324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual void SetText( object t, string text ) 230324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 231324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver adaptor.SetText( t, text ); 232324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 233324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 234324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual IToken GetToken( object t ) 235324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 236324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return adaptor.GetToken( t ); 237324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 238324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 239324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual void SetTokenBoundaries( object t, IToken startToken, IToken stopToken ) 240324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 241324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver adaptor.SetTokenBoundaries( t, startToken, stopToken ); 242324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if ( t != null && startToken != null && stopToken != null ) 243324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 244324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver dbg.SetTokenBoundaries( 245324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t, startToken.TokenIndex, 246324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stopToken.TokenIndex ); 247324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 248324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 249324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 250324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual int GetTokenStartIndex( object t ) 251324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 252324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return adaptor.GetTokenStartIndex( t ); 253324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 254324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 255324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual int GetTokenStopIndex( object t ) 256324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 257324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return adaptor.GetTokenStopIndex( t ); 258324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 259324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 260324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual object GetChild( object t, int i ) 261324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 262324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return adaptor.GetChild( t, i ); 263324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 264324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 265324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual void SetChild( object t, int i, object child ) 266324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 267324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver adaptor.SetChild( t, i, child ); 268324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 269324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 270324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual object DeleteChild( object t, int i ) 271324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 272324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return DeleteChild( t, i ); 273324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 274324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 275324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual int GetChildCount( object t ) 276324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 277324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return adaptor.GetChildCount( t ); 278324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 279324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 280324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual int GetUniqueID( object node ) 281324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 282324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return adaptor.GetUniqueID( node ); 283324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 284324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 285324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual object GetParent( object t ) 286324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 287324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return adaptor.GetParent( t ); 288324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 289324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 290324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual int GetChildIndex( object t ) 291324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 292324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return adaptor.GetChildIndex( t ); 293324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 294324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 295324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual void SetParent( object t, object parent ) 296324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 297324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver adaptor.SetParent( t, parent ); 298324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 299324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 300324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual void SetChildIndex( object t, int index ) 301324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 302324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver adaptor.SetChildIndex( t, index ); 303324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 304324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 305324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual void ReplaceChildren( object parent, int startChildIndex, int stopChildIndex, object t ) 306324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 307324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver adaptor.ReplaceChildren( parent, startChildIndex, stopChildIndex, t ); 308324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 309324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 310324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver #region support 311324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 312324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual IDebugEventListener GetDebugListener() 313324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 314324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return dbg; 315324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 316324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 317324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual void SetDebugListener( IDebugEventListener dbg ) 318324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 319324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver this.dbg = dbg; 320324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 321324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 322324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public virtual ITreeAdaptor GetTreeAdaptor() 323324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 324324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return adaptor; 325324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 326324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 327324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver #endregion 328324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 329324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver} 330