View Javadoc

    1   /*
    2    * Copyright (c) 2001-2003 The XDoclet team
    3    * All rights reserved.
    4    */
    5   package xjavadoc;
    6
    7   public class SimpleNode implements Node
    8   {
    9
    10  	public static int  instanceCount = 0;
    11  	protected Node     parent;
    12  	protected Node[]   children;
    13  	protected int      id;
    14  	protected JavaParser parser;
    15  	protected Token    first, last;
    16
    17  	public SimpleNode( int i )
    18  	{
    19  		id = i;
    20  		instanceCount++;
    21  	}
    22
    23  	public SimpleNode( final JavaParser p, int i )
    24  	{
    25  		this( i );
    26  		parser = p;
    27  	}
    28
    29  	/***
    30  	 * Returns our position under our parent.
    31  	 *
    32  	 * @return   our position under our parent.
    33  	 */
    34  	public int getPosition()
    35  	{
    36  		int i;
    37
    38  		for( i = 0; i < jjtGetParent().jjtGetNumChildren(); i++ )
    39  		{
    40  			if( jjtGetParent().jjtGetChild( i ) == this )
    41  			{
    42  				break;
    43  			}
    44  		}
    45  		return i;
    46  	}
    47
    48  	public Token getFirstToken()
    49  	{
    50  		return first;
    51  	}
    52
    53  	public Token getLastToken()
    54  	{
    55  		return last;
    56  	}
    57
    58  	public String getType()
    59  	{
    60  		return NodeParserTreeConstants.jjtNodeName[id];
    61  	}
    62
    63  	public void jjtOpen()
    64  	{
    65  		first = parser.getToken( 1 );
    66  	}
    67
    68  	public void jjtClose()
    69  	{
    70  		last = parser.getToken( 0 );
    71  	}
    72
    73  	public void jjtSetParent( Node n )
    74  	{
    75  		parent = n;
    76  	}
    77
    78  	public Node jjtGetParent()
    79  	{
    80  		return parent;
    81  	}
    82
    83  	public void jjtAddChild( Node n, int i )
    84  	{
    85  		if( children == null )
    86  		{
    87  			children = new Node[i + 1];
    88  		}
    89  		else if( i >= children.length )
    90  		{
    91  			Node c[] = new Node[i + 1];
    92
    93  			System.arraycopy( children, 0, c, 0, children.length );
    94  			children = c;
    95  		}
    96  		children[i] = n;
    97  	}
    98
    99  	public Node jjtGetChild( int i )
    100 	{
    101 		return children[i];
    102 	}
    103
    104 	public int jjtGetNumChildren()
    105 	{
    106 		return ( children == null ) ? 0 : children.length;
    107 	}
    108
    109 	public String toString()
    110 	{
    111 		return getType();
    112 	}
    113
    114 	public String toString( String prefix )
    115 	{
    116 		return prefix + toString();
    117 	}
    118
    119 	public String dump()
    120 	{
    121 		StringBuffer sb = new StringBuffer();
    122
    123 		dump( sb, "  " );
    124 		return sb.toString();
    125 	}
    126
    127 	private void dump( StringBuffer sb, String prefix )
    128 	{
    129 		sb.append( toString( prefix ) ).append( System.getProperty( "line.separator" ) );
    130
    131 		if( children != null )
    132 		{
    133 			for( int i = 0; i < children.length; ++i )
    134 			{
    135 				SimpleNode n = ( SimpleNode ) children[i];
    136
    137 				if( n != null )
    138 				{
    139 					n.dump( sb, prefix + prefix );
    140 				}
    141 			}
    142 		}
    143 	}
    144 }
    145