Sha256: 64551a1fce804f1d403cb3110b1e6b415b25cb0f699a66c89da162cf51b4d84f
Contents?: true
Size: 1.88 KB
Versions: 1
Compression:
Stored size: 1.88 KB
Contents
'use strict'; module.exports = class SymbolTreeNode { constructor() { this.parent = null; this.previousSibling = null; this.nextSibling = null; this.firstChild = null; this.lastChild = null; /** This value is incremented anytime a children is added or removed */ this.childrenVersion = 0; /** The last child object which has a cached index */ this.childIndexCachedUpTo = null; /** This value represents the cached node index, as long as * cachedIndexVersion matches with the childrenVersion of the parent */ this.cachedIndex = -1; this.cachedIndexVersion = NaN; // NaN is never equal to anything } get isAttached() { return !!(this.parent || this.previousSibling || this.nextSibling); } get hasChildren() { return !!this.firstChild; } childrenChanged() { /* jshint -W016 */ // integer wrap around this.childrenVersion = (this.childrenVersion + 1) & 0xFFFFFFFF; this.childIndexCachedUpTo = null; } getCachedIndex(parentNode) { // (assumes parentNode is actually the parent) if (this.cachedIndexVersion !== parentNode.childrenVersion) { this.cachedIndexVersion = NaN; // cachedIndex is no longer valid return -1; } return this.cachedIndex; // -1 if not cached } setCachedIndex(parentNode, index) { // (assumes parentNode is actually the parent) this.cachedIndexVersion = parentNode.childrenVersion; this.cachedIndex = index; } };
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
select_all-rails-0.3.1 | node_modules/symbol-tree/lib/SymbolTreeNode.js |