com.jogamp.gluegen.cgram

## Class TNode

- java.lang.Object
- - CommonAST
  - - com.jogamp.gluegen.cgram.TNode

-     public class TNode
      extends CommonAST

  Class TNode is an implementation of the AST interface and adds many useful features: It is double-linked for reverse searching. (this is currently incomplete, in that method doubleLink() must be called after any changes to the tree to maintain the reverse links). It can store a definition node (defNode), so that nodes such as scoped names can refer to the node that defines the name. It stores line numbers for nodes. Searches for parents and children of a tree can be done based on their type. The tree can be printed to System.out using a lisp-style syntax.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Hashtable<String,Object>` | `attributes`
    `protected TNode` | `defNode`
    `protected TNode` | `left`
    `protected int` | `lineNum`
    `protected boolean` | `marker`
    `protected String` | `text`
    `protected int` | `ttype`
    `protected TNode` | `up`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `TNode()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addSibling(AST node)` add the new node as a new sibling, inserting it ahead of any existing next sibling.
    `TNode` | `deepCopy()` return a deep copy of this node, and all sub nodes.
    `TNode` | `deepCopyWithRightSiblings()` return a deep copy of this node, all sub nodes, and right siblings.
    `void` | `doubleLink()` set up reverse links between this node and its first child and its first sibling, and link those as well
    `TNode` | `firstChildOfType(int type)` find the first child of the node of the given type, return null on failure
    `TNode` | `firstSiblingOfType(int type)` find the first sibling of the node of the given type, return null on failure
    `String` | `getAllChildrenText()` Returns the text for this node and all children
    `Object` | `getAttribute(String attrName)` lookup the attribute name in the attribute table.
    `Hashtable<String,Object>` | `getAttributesTable()` get the hashtable that holds attribute values.
    `TNode` | `getDefNode()` return the def node for this node
    `TNode` | `getFirstSibling()` return the first sibling of this node, which is this if the prev sibling is null
    `TNode` | `getLastChild()` return the last child of this node, or null if there is none
    `TNode` | `getLastSibling()` return the last sibling of this node, which is this if the next sibling is null
    `int` | `getLineNum()` Get the line number for this node.
    `int` | `getLocalLineNum()`
    `boolean` | `getMarker()` Get the marker value for this node.
    `static String` | `getNameForType(int t)` converts an int tree token type to a name.
    `TNode` | `getParent()` return the parent node of this node
    `String` | `getText()` Get the token text for this node
    `int` | `getType()` Get the token type for this node
    `void` | `initialize(AST tr)`
    `void` | `initialize(Token token)`
    `int` | `numberOfChildren()` return the number of children of this node
    `TNode` | `parentOfType(int type)` find first parent of the given type, return null on failure
    `protected static void` | `printASTNode(AST t, int indent)` protected method that does the work of printing
    `static void` | `printTree(AST t)` print given tree to System.out
    `void` | `removeSelf()` remove this node from the tree, resetting sibling and parent pointers as necessary.
    `void` | `setAttribute(String attrName, Object value)` set an attribute in the attribute table.
    `void` | `setDefNode(TNode n)` set the def node for this node
    `void` | `setLineNum(int lineNum_)` Set the line number for this node
    `void` | `setMarker(boolean marker_)` Set the marker value for this node.
    `void` | `setText(String text_)` Set the token text for this node
    `static void` | `setTokenVocabulary(String s)` Set the token vocabulary to a tokentypes class generated by antlr.
    `void` | `setType(int ttype_)` Set the token type for this node
    `String` | `toString()` return a short string representation of the node

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### ttype

          protected int ttype

    - #### text

          protected String text

    - #### lineNum

          protected int lineNum

    - #### defNode

          protected TNode defNode

    - #### up

          protected TNode up

    - #### left

          protected TNode left

    - #### marker

          protected boolean marker

    - #### attributes

          protected Hashtable<String,Object> attributes

  - ### Constructor Detail

    - #### TNode

          public TNode()

  - ### Method Detail

    - #### setTokenVocabulary

          public static void setTokenVocabulary(String s)

      Set the token vocabulary to a tokentypes class generated by antlr.

    - #### initialize

          public void initialize(Token token)

    - #### initialize

          public void initialize(AST tr)

    - #### getType

          public int getType()

      Get the token type for this node

    - #### setType

          public void setType(int ttype_)

      Set the token type for this node

    - #### getMarker

          public boolean getMarker()

      Get the marker value for this node. This member is a general-use marker.

    - #### setMarker

          public void setMarker(boolean marker_)

      Set the marker value for this node. This property is a general-use boolean marker.

    - #### getAttributesTable

          public Hashtable<String,Object> getAttributesTable()

      get the hashtable that holds attribute values.

    - #### setAttribute

          public void setAttribute(String attrName,
                          Object value)

      set an attribute in the attribute table.

    - #### getAttribute

          public Object getAttribute(String attrName)

      lookup the attribute name in the attribute table. If the value does not exist, it returns null.

    - #### getLineNum

          public int getLineNum()

      Get the line number for this node. If the line number is 0, search for a non-zero line num among children

    - #### getLocalLineNum

          public int getLocalLineNum()

    - #### setLineNum

          public void setLineNum(int lineNum_)

      Set the line number for this node

    - #### getText

          public String getText()

      Get the token text for this node

    - #### setText

          public void setText(String text_)

      Set the token text for this node

    - #### getAllChildrenText

          public String getAllChildrenText()

      Returns the text for this node and all children

    - #### getLastChild

          public TNode getLastChild()

      return the last child of this node, or null if there is none

    - #### getLastSibling

          public TNode getLastSibling()

      return the last sibling of this node, which is this if the next sibling is null

    - #### getFirstSibling

          public TNode getFirstSibling()

      return the first sibling of this node, which is this if the prev sibling is null

    - #### getParent

          public TNode getParent()

      return the parent node of this node

    - #### addSibling

          public void addSibling(AST node)

      add the new node as a new sibling, inserting it ahead of any existing next sibling. This method maintains double-linking. if node is null, nothing happens. If the node has siblings, then they are added in as well.

    - #### numberOfChildren

          public int numberOfChildren()

      return the number of children of this node

    - #### removeSelf

          public void removeSelf()

      remove this node from the tree, resetting sibling and parent pointers as necessary. This method maintains double-linking

    - #### getDefNode

          public TNode getDefNode()

      return the def node for this node

    - #### setDefNode

          public void setDefNode(TNode n)

      set the def node for this node

    - #### deepCopy

          public TNode deepCopy()

      return a deep copy of this node, and all sub nodes. New tree is doubleLinked, with no parent or siblings. Marker value is not copied!

    - #### deepCopyWithRightSiblings

          public TNode deepCopyWithRightSiblings()

      return a deep copy of this node, all sub nodes, and right siblings. New tree is doubleLinked, with no parent or left siblings. defNode is not copied

    - #### toString

          public String toString()

      return a short string representation of the node

    - #### printTree

          public static void printTree(AST t)

      print given tree to System.out

    - #### printASTNode

          protected static void printASTNode(AST t,
                          int indent)

      protected method that does the work of printing

    - #### getNameForType

          public static String getNameForType(int t)

      converts an int tree token type to a name. Does this by reflecting on nsdidl.IDLTreeTokenTypes, and is dependent on how ANTLR 2.00 outputs that class.

    - #### doubleLink

          public void doubleLink()

      set up reverse links between this node and its first child and its first sibling, and link those as well

    - #### parentOfType

          public TNode parentOfType(int type)

      find first parent of the given type, return null on failure

    - #### firstChildOfType

          public TNode firstChildOfType(int type)

      find the first child of the node of the given type, return null on failure

    - #### firstSiblingOfType

          public TNode firstSiblingOfType(int type)

      find the first sibling of the node of the given type, return null on failure