12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import {Frame} from './frame';
- import {WeightedNode} from './weightedNode';
- export class CallTreeNode extends WeightedNode {
- readonly frame: Frame;
- private locked = false;
- parent: CallTreeNode | null;
- recursive: CallTreeNode | null;
- children: CallTreeNode[] = [];
- constructor(frame: Frame, parent: CallTreeNode | null) {
- super();
- this.recursive = null;
- this.parent = parent;
- this.frame = frame;
- }
- setParent(parent: CallTreeNode): void {
- this.parent = parent;
- }
- setRecursiveThroughNode(node: CallTreeNode): void {
- this.recursive = node;
- }
- isRecursive(): boolean {
- return !!this.recursive;
- }
- isDirectRecursive(): boolean {
- if (!this.parent) {
- return false;
- }
- return this.parent.frame === this.frame;
- }
- isLocked(): boolean {
- return this.locked;
- }
- lock(): void {
- this.locked = true;
- }
- isRoot(): boolean {
- return Frame.Root.name === this.frame.name;
- }
- static readonly Root = new CallTreeNode(Frame.Root, null);
- }
|