UNPKG

typescript-closure-tools

Version:

Command-line tools to convert closure-style JSDoc annotations to typescript, and to convert typescript sources to closure externs files

237 lines (206 loc) 10.8 kB
/// <reference path="../../../globals.d.ts" /> /// <reference path="./node.d.ts" /> declare module goog.structs { class TreeNode<KEY, VALUE> extends TreeNode__Class<KEY, VALUE> { } /** Fake class which should be extended to avoid inheriting static properties */ class TreeNode__Class<KEY, VALUE> extends goog.structs.Node__Class<KEY,VALUE> { /** * Generic tree node data structure with arbitrary number of child nodes. * It is possible to create a dynamic tree structure by overriding * {@link #getParent} and {@link #getChildren} in a subclass. All other getters * will automatically work. * * @param {KEY} key Key. * @param {VALUE} value Value. * @constructor * @extends {goog.structs.Node.<KEY, VALUE>} * @template KEY, VALUE */ constructor(key: KEY, value: VALUE); /** * @return {!goog.structs.TreeNode} Clone of the subtree with this node as root. */ deepClone(): goog.structs.TreeNode<any, any>; /** * @return {goog.structs.TreeNode.<KEY, VALUE>} Parent node or null if it has no * parent. */ getParent(): goog.structs.TreeNode<KEY,VALUE>; /** * @return {boolean} Whether the node is a leaf node. */ isLeaf(): boolean; /** * Tells if the node is the last child of its parent. This method helps how to * connect the tree nodes with lines: L shapes should be used before the last * children and |- shapes before the rest. Schematic tree visualization: * * <pre> * Node1 * |-Node2 * | L-Node3 * | |-Node4 * | L-Node5 * L-Node6 * </pre> * * @return {boolean} Whether the node has parent and is the last child of it. */ isLastChild(): boolean; /** * @return {!Array.<!goog.structs.TreeNode.<KEY, VALUE>>} Immutable child nodes. */ getChildren(): goog.structs.TreeNode<KEY,VALUE>[]; /** * Gets the child node of this node at the given index. * @param {number} index Child index. * @return {goog.structs.TreeNode.<KEY, VALUE>} The node at the given index or * null if not found. */ getChildAt(index: number): goog.structs.TreeNode<KEY,VALUE>; /** * @return {number} The number of children. */ getChildCount(): number; /** * @return {number} The number of ancestors of the node. */ getDepth(): number; /** * @return {!Array.<!goog.structs.TreeNode.<KEY, VALUE>>} All ancestor nodes in * bottom-up order. */ getAncestors(): goog.structs.TreeNode<KEY,VALUE>[]; /** * @return {!goog.structs.TreeNode.<KEY, VALUE>} The root of the tree structure, * i.e. the farthest ancestor of the node or the node itself if it has no * parents. */ getRoot(): goog.structs.TreeNode<KEY,VALUE>; /** * Builds a nested array structure from the node keys in this node's subtree to * facilitate testing tree operations that change the hierarchy. * @return {!Array.<KEY>} The structure of this node's descendants as nested * array of node keys. The number of unclosed opening brackets up to a * particular node is proportional to the indentation of that node in the * graphical representation of the tree. Example: * <pre> * this * |- child1 * | L- grandchild * L- child2 * </pre> * is represented as ['child1', ['grandchild'], 'child2']. */ getSubtreeKeys(): KEY[]; /** * Tells whether this node is the ancestor of the given node. * @param {!goog.structs.TreeNode.<KEY, VALUE>} node A node. * @return {boolean} Whether this node is the ancestor of {@code node}. */ contains(node: goog.structs.TreeNode<KEY,VALUE>): boolean; /** * Returns a node whose key matches the given one in the hierarchy rooted at * this node. The hierarchy is searched using an in-order traversal. * @param {KEY} key The key to search for. * @return {goog.structs.TreeNode.<KEY, VALUE>} The node with the given key, or * null if no node with the given key exists in the hierarchy. */ getNodeByKey(key: KEY): goog.structs.TreeNode<KEY,VALUE>; /** * Traverses all child nodes. * @param {function(this:THIS, !goog.structs.TreeNode.<KEY, VALUE>, number, * !Array.<!goog.structs.TreeNode.<KEY, VALUE>>)} f Callback function. It * takes the node, its index and the array of all child nodes as arguments. * @param {THIS=} opt_this The object to be used as the value of {@code this} * within {@code f}. * @template THIS */ forEachChild<THIS>(f: { (_0: goog.structs.TreeNode<KEY,VALUE>, _1: number, _2: goog.structs.TreeNode<KEY,VALUE>[]): any /*missing*/ }, opt_this?: THIS): void; /** * Traverses all child nodes recursively in preorder. * @param {function(!goog.structs.TreeNode.<KEY, VALUE>)} f Callback function. * It takes the node as argument. * @param {Object=} opt_this The object to be used as the value of {@code this} * within {@code f}. */ forEachDescendant(f: { (_0: goog.structs.TreeNode<KEY,VALUE>): any /*missing*/ }, opt_this?: Object): void; /** * Traverses the subtree with the possibility to skip branches. Starts with * this node, and visits the descendant nodes depth-first, in preorder. * @param {function(this:THIS, !goog.structs.TreeNode.<KEY, VALUE>): * (boolean|undefined)} f Callback function. It takes the node as argument. * The children of this node will be visited if the callback returns true or * undefined, and will be skipped if the callback returns false. * @param {THIS=} opt_this The object to be used as the value of {@code this} * within {@code f}. * @template THIS */ traverse<THIS>(f: { (_0: goog.structs.TreeNode<KEY,VALUE>): boolean|any /*undefined*/ }, opt_this?: THIS): void; /** * Sets the parent node of this node. The callers must ensure that the parent * node and only that has this node among its children. * @param {goog.structs.TreeNode.<KEY, VALUE>} parent The parent to set. If * null, the node will be detached from the tree. * @protected */ setParent(parent: goog.structs.TreeNode<KEY,VALUE>): void; /** * Appends a child node to this node. * @param {!goog.structs.TreeNode.<KEY, VALUE>} child Orphan child node. */ addChild(child: goog.structs.TreeNode<KEY,VALUE>): void; /** * Inserts a child node at the given index. * @param {!goog.structs.TreeNode.<KEY, VALUE>} child Orphan child node. * @param {number} index The position to insert at. */ addChildAt(child: goog.structs.TreeNode<KEY,VALUE>, index: number): void; /** * Replaces a child node at the given index. * @param {!goog.structs.TreeNode.<KEY, VALUE>} newChild Child node to set. It * must not have parent node. * @param {number} index Valid index of the old child to replace. * @return {!goog.structs.TreeNode.<KEY, VALUE>} The original child node, * detached from its parent. */ replaceChildAt(newChild: goog.structs.TreeNode<KEY,VALUE>, index: number): goog.structs.TreeNode<KEY,VALUE>; /** * Replaces the given child node. * @param {!goog.structs.TreeNode.<KEY, VALUE>} newChild New node to replace * {@code oldChild}. It must not have parent node. * @param {!goog.structs.TreeNode.<KEY, VALUE>} oldChild Existing child node to * be replaced. * @return {!goog.structs.TreeNode.<KEY, VALUE>} The replaced child node * detached from its parent. */ replaceChild(newChild: goog.structs.TreeNode<KEY,VALUE>, oldChild: goog.structs.TreeNode<KEY,VALUE>): goog.structs.TreeNode<KEY,VALUE>; /** * Removes the child node at the given index. * @param {number} index The position to remove from. * @return {goog.structs.TreeNode.<KEY, VALUE>} The removed node if any. */ removeChildAt(index: number): goog.structs.TreeNode<KEY,VALUE>; /** * Removes the given child node of this node. * @param {goog.structs.TreeNode.<KEY, VALUE>} child The node to remove. * @return {goog.structs.TreeNode.<KEY, VALUE>} The removed node if any. */ removeChild(child: goog.structs.TreeNode<KEY,VALUE>): goog.structs.TreeNode<KEY,VALUE>; /** * Removes all child nodes of this node. */ removeChildren(): void; } } declare module goog.structs.TreeNode { /** * Finds the deepest common ancestor of the given nodes. The concept of * ancestor is not strict in this case, it includes the node itself. * @param {...!goog.structs.TreeNode.<KEY, VALUE>} var_args The nodes. * @return {goog.structs.TreeNode.<KEY, VALUE>} The common ancestor of the nodes * or null if they are from different trees. * @template KEY, VALUE */ function findCommonAncestor<KEY, VALUE>(...var_args: goog.structs.TreeNode<KEY,VALUE>[]): goog.structs.TreeNode<KEY,VALUE>; }