From 9a795258b498ac10284a90e8ef84f6413fb358ff Mon Sep 17 00:00:00 2001 From: electricessence Date: Tue, 5 Apr 2016 11:52:58 -0700 Subject: [PATCH] Patched bug with validation check on LinkedList node. --- bower.json | 2 +- .../System/Collections/LinkedNodeList.js.map | 2 +- .../commonjs/System/Collections/LinkedList.js | 2 +- .../System/Collections/LinkedList.js.map | 2 +- .../System/Collections/LinkedNodeList.js | 40 +++++++++---------- .../System/Collections/LinkedNodeList.js.map | 2 +- dist/es6/System/Collections/LinkedNodeList.js | 8 ++-- .../System/Collections/LinkedNodeList.js.map | 2 +- .../System/Collections/LinkedNodeList.js | 2 +- .../System/Collections/LinkedNodeList.js.map | 2 +- .../System/Collections/LinkedNodeList.js.map | 2 +- package.json | 2 +- source/System/Collections/LinkedList.js | 2 +- source/System/Collections/LinkedList.js.map | 2 +- source/System/Collections/LinkedList.ts | 2 +- 15 files changed, 37 insertions(+), 37 deletions(-) diff --git a/bower.json b/bower.json index 365cada3..048c177a 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "typescript-dotnet", - "version": "2.7.0", + "version": "2.7.1", "ignore": [ ".bowercc", ".gitignore", diff --git a/dist/amd/System/Collections/LinkedNodeList.js.map b/dist/amd/System/Collections/LinkedNodeList.js.map index 1c7aa0e2..58eeecb2 100644 --- a/dist/amd/System/Collections/LinkedNodeList.js.map +++ b/dist/amd/System/Collections/LinkedNodeList.js.map @@ -1 +1 @@ -{"version":3,"sources":["System/Collections/LinkedNodeList.js","System/Collections/LinkedNodeList.ts"],"names":["define","require","exports","TextUtility","InvalidOperationException_1","ArgumentException_1","ArgumentNullException_1","assertValidDetached","node","propName","next","previous","LinkedNodeList","this","_first","_last","Object","defineProperty","prototype","get","enumerable","configurable","i","forEach","action","current","first","index","clear","n","_","cF","cL","console","warn","dispose","contains","indexOf","getNodeAt","c","removeFirst","removeNode","removeLast","prev","a","b","format","addNode","addNodeAfter","addNodeBefore","before","after","replace","replacement","value"],"mappings":"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","file":"System/Collections/LinkedNodeList.js","sourcesContent":["/*!\n * @author electricessence / https://github.com/electricessence/\n * Licensing: MIT https://github.com/electricessence/TypeScript.NET/blob/master/LICENSE.md\n */\ndefine([\"require\", \"exports\", '../Text/Utility', '../Exceptions/InvalidOperationException', '../Exceptions/ArgumentException', '../Exceptions/ArgumentNullException'], function (require, exports, TextUtility, InvalidOperationException_1, ArgumentException_1, ArgumentNullException_1) {\n 'use strict';\n var LinkedNodeList = (function () {\n function LinkedNodeList() {\n this._first = null;\n this._last = null;\n }\n Object.defineProperty(LinkedNodeList.prototype, \"first\", {\n get: function () {\n return this._first;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LinkedNodeList.prototype, \"last\", {\n get: function () {\n return this._last;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LinkedNodeList.prototype, \"count\", {\n get: function () {\n var next = this._first, i = 0;\n while (next) {\n i++;\n next = next.next;\n }\n return i;\n },\n enumerable: true,\n configurable: true\n });\n LinkedNodeList.prototype.forEach = function (action) {\n var current = null, next = this.first, index = 0;\n do {\n current = next;\n next = current && current.next;\n } while (current\n && action(current, index++) !== false);\n };\n LinkedNodeList.prototype.clear = function () {\n var _ = this, n, cF = 0, cL = 0;\n n = _._first;\n _._first = null;\n while (n) {\n cF++;\n var current = n;\n n = n.next;\n current.next = null;\n }\n n = _._last;\n _._last = null;\n while (n) {\n cL++;\n var current = n;\n n = n.previous;\n current.previous = null;\n }\n if (cF !== cL)\n console.warn('LinkedNodeList: Forward versus reverse count does not match when clearing. Forward: ' + cF + \", Reverse: \" + cL);\n return cF;\n };\n LinkedNodeList.prototype.dispose = function () {\n this.clear();\n };\n LinkedNodeList.prototype.contains = function (node) {\n return this.indexOf(node) != -1;\n };\n LinkedNodeList.prototype.getNodeAt = function (index) {\n if (index < 0)\n return null;\n var next = this._first, i = 0;\n while (next && index < i++) {\n next = next.next;\n }\n return next;\n };\n LinkedNodeList.prototype.indexOf = function (node) {\n if (node && (node.previous || node.next)) {\n var index = 0;\n var c, n = this._first;\n do {\n c = n;\n if (c === node)\n return index;\n index++;\n } while ((n = c && c.next));\n }\n return -1;\n };\n LinkedNodeList.prototype.removeFirst = function () {\n return this.removeNode(this._first);\n };\n LinkedNodeList.prototype.removeLast = function () {\n return this.removeNode(this._last);\n };\n LinkedNodeList.prototype.removeNode = function (node) {\n if (node == null)\n throw new ArgumentNullException_1.default('node');\n var _ = this;\n var prev = node.previous, next = node.next, a = false, b = false;\n if (prev)\n prev.next = next;\n else if (_._first == node)\n _._first = next;\n else\n a = true;\n if (next)\n next.previous = prev;\n else if (_._last == node)\n _._last = prev;\n else\n b = true;\n if (a !== b) {\n throw new ArgumentException_1.default('node', TextUtility.format(\"Provided node is has no {0} reference but is not the {1} node!\", a ? \"previous\" : \"next\", a ? \"first\" : \"last\"));\n }\n return !a && !b;\n };\n LinkedNodeList.prototype.addNode = function (node) {\n this.addNodeAfter(node);\n };\n LinkedNodeList.prototype.addNodeBefore = function (node, before) {\n assertValidDetached(node);\n var _ = this;\n if (!before) {\n before = _._first;\n }\n if (before) {\n var prev = before.previous;\n node.previous = prev;\n node.next = before;\n before.previous = node;\n if (prev)\n prev.next = node;\n if (before == _._first)\n _._last = node;\n }\n else {\n _._first = _._last = node;\n }\n };\n LinkedNodeList.prototype.addNodeAfter = function (node, after) {\n assertValidDetached(node);\n var _ = this;\n if (!after) {\n after = _._last;\n }\n if (after) {\n var next = after.next;\n node.next = next;\n node.previous = after;\n after.next = node;\n if (next)\n next.previous = node;\n if (after == _._last)\n _._last = node;\n }\n else {\n _._first = _._last = node;\n }\n };\n LinkedNodeList.prototype.replace = function (node, replacement) {\n if (node == null)\n throw new ArgumentNullException_1.default('node');\n assertValidDetached(replacement, 'replacement');\n var _ = this;\n replacement.previous = node.previous;\n replacement.next = node.next;\n if (node.previous)\n node.previous.next = replacement;\n if (node.next)\n node.next.previous = replacement;\n if (node == _._first)\n _._first = replacement;\n if (node == _._last)\n _._last = replacement;\n };\n return LinkedNodeList;\n }());\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.default = LinkedNodeList;\n function assertValidDetached(node, propName) {\n if (propName === void 0) { propName = 'node'; }\n if (node == null)\n throw new ArgumentNullException_1.default(propName);\n if (node.next || node.previous)\n throw new InvalidOperationException_1.default(\"Cannot add a node to a LinkedNodeList that is already linked.\");\n }\n});\n","/*!\r\n * @author electricessence / https://github.com/electricessence/\r\n * Licensing: MIT https://github.com/electricessence/TypeScript.NET/blob/master/LICENSE.md\r\n */\r\n\r\n///\r\n'use strict'; // For compatibility with (let, const, function, class);\r\n\r\nimport * as TextUtility from '../Text/Utility';\r\n\r\nimport InvalidOperationException from '../Exceptions/InvalidOperationException';\r\n\r\nimport ArgumentException from '../Exceptions/ArgumentException';\r\nimport ArgumentNullException from '../Exceptions/ArgumentNullException';\r\n\r\n\r\n/*****************************\r\n * IMPORTANT NOTES ABOUT PERFORMANCE:\r\n * http://jsperf.com/simulating-a-queue\r\n *\r\n * Adding to an array is very fast, but modifying is slow.\r\n * LinkedList wins when modifying contents.\r\n * http://stackoverflow.com/questions/166884/array-versus-linked-list\r\n *****************************/\r\n\r\n/**\r\n * This class is useful for managing a list of linked nodes, but it does not protect against modifying individual links.\r\n * If the consumer modifies a link (sets the previous or next value) it will effectively break the collection.\r\n *\r\n * It is possible to declare a node type of any kind as long as it contains a previous and next value that can reference another node.\r\n * Although not as safe as the included LinkedList, this class has less overhead and is more flexible.\r\n *\r\n * The count (or length) of this LinkedNodeList is not tracked since it could be corrupted at any time.\r\n */\r\nexport default\r\nclass LinkedNodeList>\r\nimplements ILinkedNodeList, IDisposable\r\n{\r\n\r\n\tprivate _first:TNode;\r\n\tprivate _last:TNode;\r\n\r\n\tconstructor()\r\n\t{\r\n\t\tthis._first = null;\r\n\t\tthis._last = null;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * The first node. Will be null if the collection is empty.\r\n\t */\r\n\tget first():TNode\r\n\t{\r\n\t\treturn this._first;\r\n\t}\r\n\r\n\t/**\r\n\t * The last node.\r\n\t */\r\n\tget last():TNode\r\n\t{\r\n\t\treturn this._last;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Iteratively counts the number of linked nodes and returns the value.\r\n\t * @returns {number}\r\n\t */\r\n\tget count():number {\r\n\r\n\t\tvar next = this._first, i:number = 0;\r\n\t\twhile(next)\r\n\t\t{\r\n\t\t\ti++;\r\n\t\t\tnext = next.next;\r\n\t\t}\r\n\r\n\t\treturn i;\r\n\t}\r\n\r\n\tforEach(\r\n\t\taction:Predicate | Action):void\r\n\t{\r\n\t\tvar current:TNode = null,\r\n\t\t next:TNode = this.first, // Be sure to track the next node so if current node is removed.\r\n\t\t index:number = 0;\r\n\r\n\t\tdo {\r\n\t\t\tcurrent = next;\r\n\t\t\tnext = current && current.next;\r\n\t\t}\r\n\t\twhile (current\r\n\t\t\t&& action(current, index++)!==false);\r\n\t}\r\n\r\n\t/**\r\n\t * Erases the linked node's references to each other and returns the number of nodes.\r\n\t * @returns {number}\r\n\t */\r\n\tclear():number\r\n\t{\r\n\t\tvar _ = this, n:TNode, cF:number = 0, cL:number = 0;\r\n\r\n\t\t// First, clear in the forward direction.\r\n\t\tn = _._first;\r\n\t\t_._first = null;\r\n\r\n\t\twhile(n) {\r\n\t\t\tcF++;\r\n\t\t\tlet current = n;\r\n\t\t\tn = n.next;\r\n\t\t\tcurrent.next = null;\r\n\t\t}\r\n\r\n\t\t// Last, clear in the reverse direction.\r\n\t\tn = _._last;\r\n\t\t_._last = null;\r\n\r\n\t\twhile(n) {\r\n\t\t\tcL++;\r\n\t\t\tlet current = n;\r\n\t\t\tn = n.previous;\r\n\t\t\tcurrent.previous = null;\r\n\t\t}\r\n\r\n\t\tif(cF!==cL) console.warn('LinkedNodeList: Forward versus reverse count does not match when clearing. Forward: '+cF+\", Reverse: \"+cL);\r\n\r\n\t\treturn cF;\r\n\t}\r\n\r\n\t/**\r\n\t * Clears the list.\r\n\t */\r\n\tdispose():void\r\n\t{\r\n\t\tthis.clear();\r\n\t}\r\n\r\n\t/**\r\n\t * Iterates the list to see if a node exists.\r\n\t * @param node\r\n\t * @returns {boolean}\r\n\t */\r\n\tcontains(node:TNode):boolean\r\n\t{\r\n\t\treturn this.indexOf(node)!=-1;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Gets the index of a particular node.\r\n\t * @param index\r\n\t */\r\n\tgetNodeAt(index:number):TNode\r\n\t{\r\n\t\tif(index<0)\r\n\t\t\treturn null;\r\n\r\n\t\tvar next = this._first, i:number = 0;\r\n\t\twhile(next && index>(node:TNode, propName:string = 'node') {\r\n\r\n\tif(node==null)\r\n\t\tthrow new ArgumentNullException(propName);\r\n\r\n\tif(node.next || node.previous)\r\n\t\tthrow new InvalidOperationException(\"Cannot add a node to a LinkedNodeList that is already linked.\");\r\n\r\n}"]} \ No newline at end of file +{"version":3,"sources":["System/Collections/LinkedNodeList.js","System/Collections/LinkedNodeList.ts"],"names":["define","require","exports","TextUtility","InvalidOperationException_1","ArgumentException_1","ArgumentNullException_1","assertValidDetached","node","propName","next","previous","LinkedNodeList","this","_first","_last","Object","defineProperty","prototype","get","enumerable","configurable","i","forEach","action","current","first","index","clear","n","_","cF","cL","console","warn","dispose","contains","indexOf","getNodeAt","c","removeFirst","removeNode","removeLast","prev","a","b","format","addNode","addNodeAfter","addNodeBefore","before","after","replace","replacement","value"],"mappings":";;;;AAIAA,QAAQ,UAAW,UAAW,kBAAmB,0CAA2C,kCAAmC,uCAAwC,SAAUC,EAASC,EAASC,EAAaC,EAA6BC,EAAqBC,GCElQ,YAyUA,SAAAC,GAA+DC,EAAYC,GAE1E,GAF0E,SAAAA,IAAAA,EAAA,QAEjE,MAAND,EACF,KAAM,IAAIF,GAAAA,WAAsBG,EAEjC,IAAGD,EAAKE,MAAQF,EAAKG,SACpB,KAAM,IAAIP,GAAAA,WAA0B,iEArTtC,GAAAQ,GAAA,WAQC,QAAAA,KAECC,KAAKC,OAAS,KACdD,KAAKE,MAAQ,KAkSf,MA3RCC,QAAAC,eAAIL,EAAAM,UAAA,SDtCOC,ICsCX,WAEC,MAAON,MAAKC,QDrCFM,YAAY,EACZC,cAAc,IC0CzBL,OAAAC,eAAIL,EAAAM,UAAA,QDvCOC,ICuCX,WAEC,MAAON,MAAKE,ODtCFK,YAAY,EACZC,cAAc,IC6CzBL,OAAAC,eAAIL,EAAAM,UAAA,SD1COC,IC0CX,WAGC,IADA,GAAIT,GAAOG,KAAKC,OAAQQ,EAAW,EAC7BZ,GAELY,IACAZ,EAAOA,EAAKA,IAGb,OAAOY,ID3CGF,YAAY,EACZC,cAAc,IC6CzBT,EAAAM,UAAAK,QAAA,SACCC,GAEA,GAAIC,GAAgB,KAChBf,EAAaG,KAAKa,MAClBC,EAAe,CAEnB,GACCF,GAAUf,EACVA,EAAOe,GAAWA,EAAQf,WAEpBe,GACED,EAAOC,EAASE,QAAW,IAOrCf,EAAAM,UAAAU,MAAA,WAEC,GAAcC,GAAVC,EAAIjB,KAAekB,EAAY,EAAGC,EAAY,CAMlD,KAHAH,EAAIC,EAAEhB,OACNgB,EAAEhB,OAAS,KAELe,GAAG,CACRE,GACA,IAAIN,GAAUI,CACdA,GAAIA,EAAEnB,KACNe,EAAQf,KAAO,KAOhB,IAHAmB,EAAIC,EAAEf,MACNe,EAAEf,MAAQ,KAEJc,GAAG,CACRG,GACA,IAAIP,GAAUI,CACdA,GAAIA,EAAElB,SACNc,EAAQd,SAAW,KAKpB,MAFGoB,KAAKC,GAAIC,QAAQC,KAAK,uFAAuFH,EAAG,cAAcC,GAE1HD,GAMRnB,EAAAM,UAAAiB,QAAA,WAECtB,KAAKe,SAQNhB,EAAAM,UAAAkB,SAAA,SAAS5B,GAER,MAA2B,IAApBK,KAAKwB,QAAQ7B,IAQrBI,EAAAM,UAAAoB,UAAA,SAAUX,GAET,GAAS,EAANA,EACF,MAAO,KAGR,KADA,GAAIjB,GAAOG,KAAKC,OAAQQ,EAAW,EAC7BZ,GAAQiB,EAAML,KAEnBZ,EAAOA,EAAKA,IAGb,OAAOA,IASRE,EAAAM,UAAAmB,QAAA,SAAQ7B,GACP,GAAGA,IAASA,EAAKG,UAAYH,EAAKE,MAAO,CAExC,GACI6B,GADAZ,EAAQ,EACCE,EAAUhB,KAAKC,MAC5B,GAAG,CAEF,GADAyB,EAAIV,EACDU,IAAI/B,EAAM,MAAOmB,EACpBA,WACQE,EAAIU,GAAKA,EAAE7B,MAGrB,MAAO,IAORE,EAAAM,UAAAsB,YAAA,WAEC,MAAO3B,MAAK4B,WAAW5B,KAAKC,SAO7BF,EAAAM,UAAAwB,WAAA,WAEC,MAAO7B,MAAK4B,WAAW5B,KAAKE,QAU7BH,EAAAM,UAAAuB,WAAA,SAAWjC,GAEV,GAAS,MAANA,EACF,KAAM,IAAIF,GAAAA,WAAsB,OAEjC,IAAIwB,GAAIjB,KACJ8B,EAAOnC,EAAKG,SAAUD,EAAOF,EAAKE,KAAMkC,GAAY,EAAOC,GAAY,CAU3E,IARGF,EAAMA,EAAKjC,KAAOA,EACboB,EAAEhB,QAAQN,EAAMsB,EAAEhB,OAASJ,EAC9BkC,GAAI,EAENlC,EAAMA,EAAKC,SAAWgC,EACjBb,EAAEf,OAAOP,EAAMsB,EAAEf,MAAQ4B,EAC5BE,GAAI,EAEND,IAAIC,EAEN,KAAM,IAAIxC,GAAAA,WACT,OAAQF,EAAY2C,OACnB,iEACAF,EAAI,WAAa,OAAQA,EAAI,QAAU,QAK1C,QAAQA,IAAMC,GAQfjC,EAAAM,UAAA6B,QAAA,SAAQvC,GACPK,KAAKmC,aAAaxC,IAUnBI,EAAAM,UAAA+B,cAAA,SAAczC,EAAY0C,GAEzB3C,EAAoBC,EAEpB,IAAIsB,GAAIjB,IAMR,IAJIqC,IACHA,EAASpB,EAAEhB,QAGToC,EAAQ,CACV,GAAIP,GAAOO,EAAOvC,QAClBH,GAAKG,SAAWgC,EAChBnC,EAAKE,KAAOwC,EAEZA,EAAOvC,SAAWH,EACfmC,IAAMA,EAAKjC,KAAOF,GAClB0C,GAAQpB,EAAEhB,SAAQgB,EAAEf,MAAQP,OAE/BsB,GAAEhB,OAASgB,EAAEf,MAAQP,GAUvBI,EAAAM,UAAA8B,aAAA,SAAaxC,EAAY2C,GAExB5C,EAAoBC,EAEpB,IAAIsB,GAAIjB,IAMR,IAJIsC,IACHA,EAAQrB,EAAEf,OAGRoC,EAAO,CACT,GAAIzC,GAAOyC,EAAMzC,IACjBF,GAAKE,KAAOA,EACZF,EAAKG,SAAWwC,EAEhBA,EAAMzC,KAAOF,EACVE,IAAMA,EAAKC,SAAWH,GACtB2C,GAAOrB,EAAEf,QAAOe,EAAEf,MAAQP,OAE7BsB,GAAEhB,OAASgB,EAAEf,MAAQP,GASvBI,EAAAM,UAAAkC,QAAA,SAAQ5C,EAAY6C,GAEnB,GAAS,MAAN7C,EACF,KAAM,IAAIF,GAAAA,WAAsB,OAEjCC,GAAoB8C,EAAY,cAEhC,IAAIvB,GAAIjB,IACRwC,GAAY1C,SAAWH,EAAKG,SAC5B0C,EAAY3C,KAAOF,EAAKE,KAErBF,EAAKG,WAAUH,EAAKG,SAASD,KAAO2C,GACpC7C,EAAKE,OAAMF,EAAKE,KAAKC,SAAW0C,GAEhC7C,GAAMsB,EAAEhB,SAAQgB,EAAEhB,OAASuC,GAC3B7C,GAAMsB,EAAEf,QAAOe,EAAEf,MAAQsC,IAG9BzC,IA7SAI,QAAAC,eAAAf,EAAA,cAAAoD,OAAA,IDyJIpD,EAAAA,WAAkBU","file":"System/Collections/LinkedNodeList.js","sourcesContent":["/*!\n * @author electricessence / https://github.com/electricessence/\n * Licensing: MIT https://github.com/electricessence/TypeScript.NET/blob/master/LICENSE.md\n */\ndefine([\"require\", \"exports\", \"../Text/Utility\", \"../Exceptions/InvalidOperationException\", \"../Exceptions/ArgumentException\", \"../Exceptions/ArgumentNullException\"], function (require, exports, TextUtility, InvalidOperationException_1, ArgumentException_1, ArgumentNullException_1) {\n 'use strict';\n var LinkedNodeList = (function () {\n function LinkedNodeList() {\n this._first = null;\n this._last = null;\n }\n Object.defineProperty(LinkedNodeList.prototype, \"first\", {\n get: function () {\n return this._first;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LinkedNodeList.prototype, \"last\", {\n get: function () {\n return this._last;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LinkedNodeList.prototype, \"count\", {\n get: function () {\n var next = this._first, i = 0;\n while (next) {\n i++;\n next = next.next;\n }\n return i;\n },\n enumerable: true,\n configurable: true\n });\n LinkedNodeList.prototype.forEach = function (action) {\n var current = null, next = this.first, index = 0;\n do {\n current = next;\n next = current && current.next;\n } while (current\n && action(current, index++) !== false);\n };\n LinkedNodeList.prototype.clear = function () {\n var _ = this, n, cF = 0, cL = 0;\n n = _._first;\n _._first = null;\n while (n) {\n cF++;\n var current = n;\n n = n.next;\n current.next = null;\n }\n n = _._last;\n _._last = null;\n while (n) {\n cL++;\n var current = n;\n n = n.previous;\n current.previous = null;\n }\n if (cF !== cL)\n console.warn('LinkedNodeList: Forward versus reverse count does not match when clearing. Forward: ' + cF + \", Reverse: \" + cL);\n return cF;\n };\n LinkedNodeList.prototype.dispose = function () {\n this.clear();\n };\n LinkedNodeList.prototype.contains = function (node) {\n return this.indexOf(node) != -1;\n };\n LinkedNodeList.prototype.getNodeAt = function (index) {\n if (index < 0)\n return null;\n var next = this._first, i = 0;\n while (next && index < i++) {\n next = next.next;\n }\n return next;\n };\n LinkedNodeList.prototype.indexOf = function (node) {\n if (node && (node.previous || node.next)) {\n var index = 0;\n var c, n = this._first;\n do {\n c = n;\n if (c === node)\n return index;\n index++;\n } while ((n = c && c.next));\n }\n return -1;\n };\n LinkedNodeList.prototype.removeFirst = function () {\n return this.removeNode(this._first);\n };\n LinkedNodeList.prototype.removeLast = function () {\n return this.removeNode(this._last);\n };\n LinkedNodeList.prototype.removeNode = function (node) {\n if (node == null)\n throw new ArgumentNullException_1.default('node');\n var _ = this;\n var prev = node.previous, next = node.next, a = false, b = false;\n if (prev)\n prev.next = next;\n else if (_._first == node)\n _._first = next;\n else\n a = true;\n if (next)\n next.previous = prev;\n else if (_._last == node)\n _._last = prev;\n else\n b = true;\n if (a !== b) {\n throw new ArgumentException_1.default('node', TextUtility.format(\"Provided node is has no {0} reference but is not the {1} node!\", a ? \"previous\" : \"next\", a ? \"first\" : \"last\"));\n }\n return !a && !b;\n };\n LinkedNodeList.prototype.addNode = function (node) {\n this.addNodeAfter(node);\n };\n LinkedNodeList.prototype.addNodeBefore = function (node, before) {\n assertValidDetached(node);\n var _ = this;\n if (!before) {\n before = _._first;\n }\n if (before) {\n var prev = before.previous;\n node.previous = prev;\n node.next = before;\n before.previous = node;\n if (prev)\n prev.next = node;\n if (before == _._first)\n _._last = node;\n }\n else {\n _._first = _._last = node;\n }\n };\n LinkedNodeList.prototype.addNodeAfter = function (node, after) {\n assertValidDetached(node);\n var _ = this;\n if (!after) {\n after = _._last;\n }\n if (after) {\n var next = after.next;\n node.next = next;\n node.previous = after;\n after.next = node;\n if (next)\n next.previous = node;\n if (after == _._last)\n _._last = node;\n }\n else {\n _._first = _._last = node;\n }\n };\n LinkedNodeList.prototype.replace = function (node, replacement) {\n if (node == null)\n throw new ArgumentNullException_1.default('node');\n assertValidDetached(replacement, 'replacement');\n var _ = this;\n replacement.previous = node.previous;\n replacement.next = node.next;\n if (node.previous)\n node.previous.next = replacement;\n if (node.next)\n node.next.previous = replacement;\n if (node == _._first)\n _._first = replacement;\n if (node == _._last)\n _._last = replacement;\n };\n return LinkedNodeList;\n }());\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.default = LinkedNodeList;\n function assertValidDetached(node, propName) {\n if (propName === void 0) { propName = 'node'; }\n if (node == null)\n throw new ArgumentNullException_1.default(propName);\n if (node.next || node.previous)\n throw new InvalidOperationException_1.default(\"Cannot add a node to a LinkedNodeList that is already linked.\");\n }\n});\n","/*!\r\n * @author electricessence / https://github.com/electricessence/\r\n * Licensing: MIT https://github.com/electricessence/TypeScript.NET/blob/master/LICENSE.md\r\n */\r\n\r\n///\r\n'use strict'; // For compatibility with (let, const, function, class);\r\n\r\nimport * as TextUtility from \"../Text/Utility\";\r\nimport InvalidOperationException from \"../Exceptions/InvalidOperationException\";\r\nimport ArgumentException from \"../Exceptions/ArgumentException\";\r\nimport ArgumentNullException from \"../Exceptions/ArgumentNullException\";\r\n\r\n\r\n/*****************************\r\n * IMPORTANT NOTES ABOUT PERFORMANCE:\r\n * http://jsperf.com/simulating-a-queue\r\n *\r\n * Adding to an array is very fast, but modifying is slow.\r\n * LinkedList wins when modifying contents.\r\n * http://stackoverflow.com/questions/166884/array-versus-linked-list\r\n *****************************/\r\n\r\n/**\r\n * This class is useful for managing a list of linked nodes, but it does not protect against modifying individual links.\r\n * If the consumer modifies a link (sets the previous or next value) it will effectively break the collection.\r\n *\r\n * It is possible to declare a node type of any kind as long as it contains a previous and next value that can reference another node.\r\n * Although not as safe as the included LinkedList, this class has less overhead and is more flexible.\r\n *\r\n * The count (or length) of this LinkedNodeList is not tracked since it could be corrupted at any time.\r\n */\r\nexport default\r\nclass LinkedNodeList>\r\nimplements ILinkedNodeList, IDisposable\r\n{\r\n\r\n\tprivate _first:TNode;\r\n\tprivate _last:TNode;\r\n\r\n\tconstructor()\r\n\t{\r\n\t\tthis._first = null;\r\n\t\tthis._last = null;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * The first node. Will be null if the collection is empty.\r\n\t */\r\n\tget first():TNode\r\n\t{\r\n\t\treturn this._first;\r\n\t}\r\n\r\n\t/**\r\n\t * The last node.\r\n\t */\r\n\tget last():TNode\r\n\t{\r\n\t\treturn this._last;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Iteratively counts the number of linked nodes and returns the value.\r\n\t * @returns {number}\r\n\t */\r\n\tget count():number {\r\n\r\n\t\tvar next = this._first, i:number = 0;\r\n\t\twhile(next)\r\n\t\t{\r\n\t\t\ti++;\r\n\t\t\tnext = next.next;\r\n\t\t}\r\n\r\n\t\treturn i;\r\n\t}\r\n\r\n\tforEach(\r\n\t\taction:Predicate | Action):void\r\n\t{\r\n\t\tvar current:TNode = null,\r\n\t\t next:TNode = this.first, // Be sure to track the next node so if current node is removed.\r\n\t\t index:number = 0;\r\n\r\n\t\tdo {\r\n\t\t\tcurrent = next;\r\n\t\t\tnext = current && current.next;\r\n\t\t}\r\n\t\twhile (current\r\n\t\t\t&& action(current, index++)!==false);\r\n\t}\r\n\r\n\t/**\r\n\t * Erases the linked node's references to each other and returns the number of nodes.\r\n\t * @returns {number}\r\n\t */\r\n\tclear():number\r\n\t{\r\n\t\tvar _ = this, n:TNode, cF:number = 0, cL:number = 0;\r\n\r\n\t\t// First, clear in the forward direction.\r\n\t\tn = _._first;\r\n\t\t_._first = null;\r\n\r\n\t\twhile(n) {\r\n\t\t\tcF++;\r\n\t\t\tlet current = n;\r\n\t\t\tn = n.next;\r\n\t\t\tcurrent.next = null;\r\n\t\t}\r\n\r\n\t\t// Last, clear in the reverse direction.\r\n\t\tn = _._last;\r\n\t\t_._last = null;\r\n\r\n\t\twhile(n) {\r\n\t\t\tcL++;\r\n\t\t\tlet current = n;\r\n\t\t\tn = n.previous;\r\n\t\t\tcurrent.previous = null;\r\n\t\t}\r\n\r\n\t\tif(cF!==cL) console.warn('LinkedNodeList: Forward versus reverse count does not match when clearing. Forward: '+cF+\", Reverse: \"+cL);\r\n\r\n\t\treturn cF;\r\n\t}\r\n\r\n\t/**\r\n\t * Clears the list.\r\n\t */\r\n\tdispose():void\r\n\t{\r\n\t\tthis.clear();\r\n\t}\r\n\r\n\t/**\r\n\t * Iterates the list to see if a node exists.\r\n\t * @param node\r\n\t * @returns {boolean}\r\n\t */\r\n\tcontains(node:TNode):boolean\r\n\t{\r\n\t\treturn this.indexOf(node)!=-1;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Gets the index of a particular node.\r\n\t * @param index\r\n\t */\r\n\tgetNodeAt(index:number):TNode\r\n\t{\r\n\t\tif(index<0)\r\n\t\t\treturn null;\r\n\r\n\t\tvar next = this._first, i:number = 0;\r\n\t\twhile(next && index>(node:TNode, propName:string = 'node') {\r\n\r\n\tif(node==null)\r\n\t\tthrow new ArgumentNullException(propName);\r\n\r\n\tif(node.next || node.previous)\r\n\t\tthrow new InvalidOperationException(\"Cannot add a node to a LinkedNodeList that is already linked.\");\r\n\r\n}"]} \ No newline at end of file diff --git a/dist/commonjs/System/Collections/LinkedList.js b/dist/commonjs/System/Collections/LinkedList.js index 6a32bcf2..6955949b 100644 --- a/dist/commonjs/System/Collections/LinkedList.js +++ b/dist/commonjs/System/Collections/LinkedList.js @@ -45,7 +45,7 @@ function ensureExternal(node, list) { function getInternal(node, list) { if (!node) throw new ArgumentNullException_1.default("Cannot be null."); if (node.list != list) throw new InvalidOperationException_1.default("Provided node does not belong to this list."); - var n = node._node; + var n = node._nodeInternal; if (!n) throw new InvalidOperationException_1.default("Provided node is not valid."); return n; } diff --git a/dist/commonjs/System/Collections/LinkedList.js.map b/dist/commonjs/System/Collections/LinkedList.js.map index d69f5990..40891cd6 100644 --- a/dist/commonjs/System/Collections/LinkedList.js.map +++ b/dist/commonjs/System/Collections/LinkedList.js.map @@ -1 +1 @@ -{"version":3,"sources":["System/Collections/LinkedList.ts","System/Collections/LinkedList.js"],"names":[],"mappings":"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","file":"System/Collections/LinkedList.js","sourcesContent":["/*!\r\n * @author electricessence / https://github.com/electricessence/\r\n * Based Upon: http://msdn.microsoft.com/en-us/library/he2s3bh7%28v=vs.110%29.aspx\r\n * Licensing: MIT https://github.com/electricessence/TypeScript.NET/blob/master/LICENSE.md\r\n */\r\n\r\n///\r\n///\r\n'use strict'; // For compatibility with (let, const, function, class);\r\n\r\nimport * as Values from \"../Compare\";\r\nimport * as ArrayUtility from \"../Collections/Array/Utility\";\r\nimport * as Enumerator from \"./Enumeration/Enumerator\";\r\nimport EnumeratorBase from \"./Enumeration/EnumeratorBase\";\r\nimport LinkedNodeList from \"./LinkedNodeList\";\r\nimport InvalidOperationException from \"../Exceptions/InvalidOperationException\";\r\nimport ArgumentNullException from \"../Exceptions/ArgumentNullException\";\r\n\r\n\r\n/*****************************\r\n * IMPORTANT NOTES ABOUT PERFORMANCE:\r\n * http://jsperf.com/simulating-a-queue\r\n *\r\n * Adding to an array is very fast, but modifying is slow.\r\n * LinkedList wins when modifying contents.\r\n * http://stackoverflow.com/questions/166884/array-versus-linked-list\r\n *****************************/\r\n\r\n/*\r\n * An internal node is used to manage the order without exposing underlying link chain to the consumer.\r\n */\r\nclass InternalNode\r\nimplements ILinkedNode>, INodeWithValue\r\n{\r\n\tconstructor(\r\n\t\tpublic value?:T,\r\n\t\tpublic previous?:InternalNode,\r\n\t\tpublic next?:InternalNode)\r\n\t{\r\n\t}\r\n\r\n\texternal:ILinkedListNode;\r\n\r\n\tassertDetached():void\r\n\t{\r\n\t\tif(this.next || this.previous)\r\n\t\t\tthrow new InvalidOperationException(\r\n\t\t\t\t\"Adding a node that is already placed.\");\r\n\t}\r\n\r\n}\r\n\r\nfunction ensureExternal(node:InternalNode, list:LinkedList):ILinkedListNode\r\n{\r\n\tif(!node)\r\n\t\treturn null;\r\n\r\n\tvar external:ILinkedListNode = node.external;\r\n\tif(!external)\r\n\t\tnode.external = external = new LinkedListNode(list, node);\r\n\r\n\treturn external;\r\n}\r\n\r\nfunction getInternal(node:ILinkedListNode, list:LinkedList):InternalNode\r\n{\r\n\tif(!node)\r\n\t\tthrow new ArgumentNullException(\r\n\t\t\t\"Cannot be null.\");\r\n\r\n\tif(node.list!=list)\r\n\t\tthrow new InvalidOperationException(\r\n\t\t\t\"Provided node does not belong to this list.\");\r\n\r\n\tvar n:InternalNode = (node)._node;\r\n\tif(!n)\r\n\t\tthrow new InvalidOperationException(\r\n\t\t\t\"Provided node is not valid.\");\r\n\r\n\treturn n;\r\n}\r\n\r\nexport default\r\nclass LinkedList\r\nimplements ILinkedList\r\n{\r\n\tprivate _listInternal:LinkedNodeList>;\r\n\tprivate _count:number;\r\n\r\n\tconstructor(source?:IEnumerable);\r\n\tconstructor(source?:IArray);\r\n\tconstructor(source:any)\r\n\t{\r\n\t\tvar _ = this, c = 0;\r\n\t\tvar e = Enumerator.from(source);\r\n\r\n\t\tvar list = _._listInternal = new LinkedNodeList>();\r\n\r\n\t\twhile(e.moveNext())\r\n\t\t{\r\n\t\t\tlist.addNode( new InternalNode(e.current) );\r\n\t\t\t++c;\r\n\t\t}\r\n\r\n\t\t_._count = c;\r\n\t}\r\n\r\n\r\n\t// #region IEnumerateEach\r\n\tforEach(\r\n\t\taction:Predicate | Action,\r\n\t\tuseCopy:boolean = false):void\r\n\t{\r\n\t\tif(useCopy)\r\n\t\t{\r\n\t\t\tvar array = this.toArray();\r\n\t\t\tArrayUtility.forEach(array, action);\r\n\t\t\tarray.length = 0;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis._listInternal.forEach((node, i)=>action(node.value, i));\r\n\t\t}\r\n\t}\r\n\r\n\t// #endregion\r\n\r\n\t// #region IEnumerable\r\n\tgetEnumerator():IEnumerator\r\n\t{\r\n\t\tvar _ = this,\r\n\t\t current:InternalNode,\r\n\t\t next:InternalNode;\r\n\r\n\t\treturn new EnumeratorBase(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\t// Initialize anchor...\r\n\t\t\t\tcurrent = null;\r\n\t\t\t\tnext = _._listInternal.first;\r\n\t\t\t},\r\n\t\t\t(yielder)=>\r\n\t\t\t{\r\n\r\n\t\t\t\tif(next)\r\n\t\t\t\t{\r\n\t\t\t\t\tcurrent = next;\r\n\t\t\t\t\tnext = current && current.next;\r\n\t\t\t\t\treturn yielder.yieldReturn(current.value);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn yielder.yieldBreak();\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\t// #endregion\r\n\r\n\tprivate _findFirst(entry:T):InternalNode\r\n\t{\r\n\t\tvar equals = Values.areEqual,\r\n\t\t next = this._listInternal.first;\r\n\t\twhile(next)\r\n\t\t{\r\n\t\t\tif(equals(entry, next.value))\r\n\t\t\t\treturn next;\r\n\t\t\tnext = next.next;\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate _findLast(entry:T):InternalNode\r\n\t{\r\n\t\tvar equals = Values.areEqual,\r\n\t\t prev = this._listInternal.last;\r\n\t\twhile(prev)\r\n\t\t{\r\n\t\t\tif(equals(entry, prev.value))\r\n\t\t\t\treturn prev;\r\n\t\t\tprev = prev.previous;\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\t// #region ICollection\r\n\tget count():number\r\n\t{\r\n\t\treturn this._count;\r\n\t}\r\n\r\n\t//noinspection JSMethodCanBeStatic,JSUnusedGlobalSymbols\r\n\tget isReadOnly():boolean\r\n\t{\r\n\t\treturn false;\r\n\t}\r\n\r\n\tadd(entry:T):void\r\n\t{\r\n\t\tthis._listInternal.addNode(new InternalNode(entry));\r\n\t\tthis._count++;\r\n\t}\r\n\r\n\r\n\tclear():number\r\n\t{\r\n\t\tthis._count = 0;\r\n\t\treturn this._listInternal.clear();\r\n\t}\r\n\r\n\r\n\tcontains(entry:T):boolean\r\n\t{\r\n\t\tvar found:boolean = false, equals = Values.areEqual;\r\n\t\tthis.forEach(e => !(found = equals(entry, e)));\r\n\t\treturn found;\r\n\t}\r\n\r\n\tcopyTo(array:T[], index:number = 0):T[]\r\n\t{\r\n\t\tif(!array) throw new ArgumentNullException('array');\r\n\r\n\t\tif(this._listInternal.first)\r\n\t\t{\r\n\t\t\tvar minLength = index + this._count;\r\n\t\t\tif(array.length\r\n\t\t\t\t{\r\n\t\t\t\t\tarray[index + i] = entry;\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\treturn array;\r\n\t}\r\n\r\n\ttoArray():T[]\r\n\t{\r\n\t\tvar array = ArrayUtility.initialize(this._count);\r\n\t\treturn this.copyTo(array);\r\n\t}\r\n\r\n\tremoveOnce(entry:T):boolean\r\n\t{\r\n\t\treturn this.remove(entry, 1)!==0;\r\n\t}\r\n\r\n\tremove(entry:T, max:number = Infinity):number\r\n\t{\r\n\t\tvar equals = Values.areEqual;\r\n\t\tvar _ = this, list = _._listInternal, removedCount:number = 0;\r\n\r\n\t\tlist.forEach(node=>\r\n\t\t{\r\n\t\t\tif(equals(entry, node.value) && list.removeNode(node))\r\n\t\t\t{\r\n\t\t\t\t--_._count;\r\n\t\t\t\t++removedCount;\r\n\t\t\t}\r\n\t\t\treturn removedCount\r\n\t{\r\n\t\treturn ensureExternal(this._listInternal.first, this);\r\n\t}\r\n\r\n\tget last():ILinkedListNode\r\n\t{\r\n\t\treturn ensureExternal(this._listInternal.last, this);\r\n\t}\r\n\r\n\t// get methods are available for convenience but is an n*index operation.\r\n\r\n\r\n\tgetValueAt(index:number):T\r\n\t{\r\n\t\treturn this._listInternal.getNodeAt(index).value;\r\n\t}\r\n\r\n\tgetNodeAt(index:number):ILinkedListNode\r\n\t{\r\n\t\treturn ensureExternal(this._listInternal.getNodeAt(index), this);\r\n\t}\r\n\r\n\tfind(entry:T):ILinkedListNode\r\n\t{\r\n\t\treturn ensureExternal(this._findFirst(entry), this);\r\n\t}\r\n\r\n\tfindLast(entry:T):ILinkedListNode\r\n\t{\r\n\t\treturn ensureExternal(this._findLast(entry), this);\r\n\t}\r\n\r\n\taddFirst(entry:T):void\r\n\t{\r\n\t\tthis._listInternal.addNodeBefore(new InternalNode(entry));\r\n\t\t++this._count;\r\n\t}\r\n\r\n\taddLast(entry:T):void\r\n\t{\r\n\t\tthis.add(entry);\r\n\t}\r\n\r\n\tremoveFirst():void\r\n\t{\r\n\t\tvar _ = this, first = _._listInternal.first;\r\n\t\tif(first && _._listInternal.removeNode(first)) {\r\n\t\t\t_._count--;\r\n\t\t}\r\n\t}\r\n\r\n\tremoveLast():void\r\n\t{\r\n\t\tvar _ = this, last = _._listInternal.last;\r\n\t\tif(last && _._listInternal.removeNode(last)) {\r\n\t\t\t--_._count;\r\n\t\t}\r\n\t}\r\n\r\n\t// Returns true if successful and false if not found (already removed).\r\n\tremoveNode(node:ILinkedListNode):boolean\r\n\t{\r\n\t\tvar _ = this,\r\n\t\t removed = _._listInternal.removeNode(getInternal(node, _));\r\n\r\n\t\tif(removed) --_._count;\r\n\r\n\t\treturn removed;\r\n\t}\r\n\r\n\taddBefore(before:ILinkedListNode, entry:T):void\r\n\t{\r\n\t\tthis._listInternal.addNodeBefore(\r\n\t\t\tnew InternalNode(entry),\r\n\t\t\tgetInternal(before, this)\r\n\t\t);\r\n\t\t++this._count;\r\n\t}\r\n\r\n\r\n\taddAfter(after:ILinkedListNode, entry:T):void\r\n\t{\r\n\t\tthis._listInternal.addNodeAfter(\r\n\t\t\tnew InternalNode(entry),\r\n\t\t\tgetInternal(after, this)\r\n\t\t);\r\n\t\t++this._count;\r\n\t}\r\n\r\n\taddNodeBefore(node:ILinkedListNode, before:ILinkedListNode):void\r\n\t{\r\n\t\tthis._listInternal.addNodeBefore(\r\n\t\t\tgetInternal(before, this),\r\n\t\t\tgetInternal(node, this)\r\n\t\t);\r\n\t\t++this._count;\r\n\t}\r\n\r\n\taddNodeAfter(node:ILinkedListNode, after:ILinkedListNode):void\r\n\t{\r\n\t\tthis._listInternal.addNodeAfter(\r\n\t\t\tgetInternal(after, this),\r\n\t\t\tgetInternal(node, this)\r\n\t\t);\r\n\t\t++this._count;\r\n\t}\r\n\r\n\r\n}\r\n\r\n// Use an internal node class to prevent mucking up the LinkedList.\r\nclass LinkedListNode implements ILinkedListNode\r\n{\r\n\tconstructor(\r\n\t\tprivate _list:LinkedList,\r\n\t\tprivate _nodeInternal:InternalNode)\r\n\t{\r\n\t}\r\n\r\n\tget list():LinkedList\r\n\t{\r\n\t\treturn this._list;\r\n\t}\r\n\r\n\tget previous():ILinkedListNode\r\n\t{\r\n\t\treturn ensureExternal(this._nodeInternal.previous, this._list);\r\n\t}\r\n\r\n\tget next():ILinkedListNode\r\n\t{\r\n\t\treturn ensureExternal(this._nodeInternal.next, this._list);\r\n\t}\r\n\r\n\tget value():T\r\n\t{\r\n\t\treturn this._nodeInternal.value;\r\n\t}\r\n\r\n\tset value(v:T)\r\n\t{\r\n\t\tthis._nodeInternal.value = v;\r\n\t}\r\n\r\n\taddBefore(entry:T):void\r\n\t{\r\n\t\tthis._list.addBefore(this, entry);\r\n\t}\r\n\r\n\taddAfter(entry:T):void\r\n\t{\r\n\t\tthis._list.addAfter(this, entry);\r\n\t}\r\n\r\n\taddNodeBefore(before:ILinkedListNode):void\r\n\t{\r\n\t\tthis._list.addNodeBefore(this, before);\r\n\t}\r\n\r\n\taddNodeAfter(after:ILinkedListNode):void\r\n\t{\r\n\t\tthis._list.addNodeAfter(this, after);\r\n\t}\r\n\r\n\tremove():void\r\n\t{\r\n\t\tthis._list.removeNode(this);\r\n\t}\r\n\r\n}\r\n\r\n","/*!\n * @author electricessence / https://github.com/electricessence/\n * Based Upon: http://msdn.microsoft.com/en-us/library/he2s3bh7%28v=vs.110%29.aspx\n * Licensing: MIT https://github.com/electricessence/TypeScript.NET/blob/master/LICENSE.md\n */\n'use strict';\nconst Values = require(\"../Compare\");\nconst ArrayUtility = require(\"../Collections/Array/Utility\");\nconst Enumerator = require(\"./Enumeration/Enumerator\");\nconst EnumeratorBase_1 = require(\"./Enumeration/EnumeratorBase\");\nconst LinkedNodeList_1 = require(\"./LinkedNodeList\");\nconst InvalidOperationException_1 = require(\"../Exceptions/InvalidOperationException\");\nconst ArgumentNullException_1 = require(\"../Exceptions/ArgumentNullException\");\nclass InternalNode {\n constructor(value, previous, next) {\n this.value = value;\n this.previous = previous;\n this.next = next;\n }\n assertDetached() {\n if (this.next || this.previous)\n throw new InvalidOperationException_1.default(\"Adding a node that is already placed.\");\n }\n}\nfunction ensureExternal(node, list) {\n if (!node)\n return null;\n var external = node.external;\n if (!external)\n node.external = external = new LinkedListNode(list, node);\n return external;\n}\nfunction getInternal(node, list) {\n if (!node)\n throw new ArgumentNullException_1.default(\"Cannot be null.\");\n if (node.list != list)\n throw new InvalidOperationException_1.default(\"Provided node does not belong to this list.\");\n var n = node._node;\n if (!n)\n throw new InvalidOperationException_1.default(\"Provided node is not valid.\");\n return n;\n}\nclass LinkedList {\n constructor(source) {\n var _ = this, c = 0;\n var e = Enumerator.from(source);\n var list = _._listInternal = new LinkedNodeList_1.default();\n while (e.moveNext()) {\n list.addNode(new InternalNode(e.current));\n ++c;\n }\n _._count = c;\n }\n forEach(action, useCopy = false) {\n if (useCopy) {\n var array = this.toArray();\n ArrayUtility.forEach(array, action);\n array.length = 0;\n }\n else {\n this._listInternal.forEach((node, i) => action(node.value, i));\n }\n }\n getEnumerator() {\n var _ = this, current, next;\n return new EnumeratorBase_1.default(() => {\n current = null;\n next = _._listInternal.first;\n }, (yielder) => {\n if (next) {\n current = next;\n next = current && current.next;\n return yielder.yieldReturn(current.value);\n }\n return yielder.yieldBreak();\n });\n }\n _findFirst(entry) {\n var equals = Values.areEqual, next = this._listInternal.first;\n while (next) {\n if (equals(entry, next.value))\n return next;\n next = next.next;\n }\n return null;\n }\n _findLast(entry) {\n var equals = Values.areEqual, prev = this._listInternal.last;\n while (prev) {\n if (equals(entry, prev.value))\n return prev;\n prev = prev.previous;\n }\n return null;\n }\n get count() {\n return this._count;\n }\n get isReadOnly() {\n return false;\n }\n add(entry) {\n this._listInternal.addNode(new InternalNode(entry));\n this._count++;\n }\n clear() {\n this._count = 0;\n return this._listInternal.clear();\n }\n contains(entry) {\n var found = false, equals = Values.areEqual;\n this.forEach(e => !(found = equals(entry, e)));\n return found;\n }\n copyTo(array, index = 0) {\n if (!array)\n throw new ArgumentNullException_1.default('array');\n if (this._listInternal.first) {\n var minLength = index + this._count;\n if (array.length < minLength)\n array.length = minLength;\n this.forEach((entry, i) => {\n array[index + i] = entry;\n });\n }\n return array;\n }\n toArray() {\n var array = ArrayUtility.initialize(this._count);\n return this.copyTo(array);\n }\n removeOnce(entry) {\n return this.remove(entry, 1) !== 0;\n }\n remove(entry, max = Infinity) {\n var equals = Values.areEqual;\n var _ = this, list = _._listInternal, removedCount = 0;\n list.forEach(node => {\n if (equals(entry, node.value) && list.removeNode(node)) {\n --_._count;\n ++removedCount;\n }\n return removedCount < max;\n });\n return removedCount;\n }\n get first() {\n return ensureExternal(this._listInternal.first, this);\n }\n get last() {\n return ensureExternal(this._listInternal.last, this);\n }\n getValueAt(index) {\n return this._listInternal.getNodeAt(index).value;\n }\n getNodeAt(index) {\n return ensureExternal(this._listInternal.getNodeAt(index), this);\n }\n find(entry) {\n return ensureExternal(this._findFirst(entry), this);\n }\n findLast(entry) {\n return ensureExternal(this._findLast(entry), this);\n }\n addFirst(entry) {\n this._listInternal.addNodeBefore(new InternalNode(entry));\n ++this._count;\n }\n addLast(entry) {\n this.add(entry);\n }\n removeFirst() {\n var _ = this, first = _._listInternal.first;\n if (first && _._listInternal.removeNode(first)) {\n _._count--;\n }\n }\n removeLast() {\n var _ = this, last = _._listInternal.last;\n if (last && _._listInternal.removeNode(last)) {\n --_._count;\n }\n }\n removeNode(node) {\n var _ = this, removed = _._listInternal.removeNode(getInternal(node, _));\n if (removed)\n --_._count;\n return removed;\n }\n addBefore(before, entry) {\n this._listInternal.addNodeBefore(new InternalNode(entry), getInternal(before, this));\n ++this._count;\n }\n addAfter(after, entry) {\n this._listInternal.addNodeAfter(new InternalNode(entry), getInternal(after, this));\n ++this._count;\n }\n addNodeBefore(node, before) {\n this._listInternal.addNodeBefore(getInternal(before, this), getInternal(node, this));\n ++this._count;\n }\n addNodeAfter(node, after) {\n this._listInternal.addNodeAfter(getInternal(after, this), getInternal(node, this));\n ++this._count;\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = LinkedList;\nclass LinkedListNode {\n constructor(_list, _nodeInternal) {\n this._list = _list;\n this._nodeInternal = _nodeInternal;\n }\n get list() {\n return this._list;\n }\n get previous() {\n return ensureExternal(this._nodeInternal.previous, this._list);\n }\n get next() {\n return ensureExternal(this._nodeInternal.next, this._list);\n }\n get value() {\n return this._nodeInternal.value;\n }\n set value(v) {\n this._nodeInternal.value = v;\n }\n addBefore(entry) {\n this._list.addBefore(this, entry);\n }\n addAfter(entry) {\n this._list.addAfter(this, entry);\n }\n addNodeBefore(before) {\n this._list.addNodeBefore(this, before);\n }\n addNodeAfter(after) {\n this._list.addNodeAfter(this, after);\n }\n remove() {\n this._list.removeNode(this);\n }\n}\n"]} \ No newline at end of file +{"version":3,"sources":["System/Collections/LinkedList.ts","System/Collections/LinkedList.js"],"names":[],"mappings":"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","file":"System/Collections/LinkedList.js","sourcesContent":["/*!\r\n * @author electricessence / https://github.com/electricessence/\r\n * Based Upon: http://msdn.microsoft.com/en-us/library/he2s3bh7%28v=vs.110%29.aspx\r\n * Licensing: MIT https://github.com/electricessence/TypeScript.NET/blob/master/LICENSE.md\r\n */\r\n\r\n///\r\n///\r\n'use strict'; // For compatibility with (let, const, function, class);\r\n\r\nimport * as Values from \"../Compare\";\r\nimport * as ArrayUtility from \"../Collections/Array/Utility\";\r\nimport * as Enumerator from \"./Enumeration/Enumerator\";\r\nimport EnumeratorBase from \"./Enumeration/EnumeratorBase\";\r\nimport LinkedNodeList from \"./LinkedNodeList\";\r\nimport InvalidOperationException from \"../Exceptions/InvalidOperationException\";\r\nimport ArgumentNullException from \"../Exceptions/ArgumentNullException\";\r\n\r\n\r\n/*****************************\r\n * IMPORTANT NOTES ABOUT PERFORMANCE:\r\n * http://jsperf.com/simulating-a-queue\r\n *\r\n * Adding to an array is very fast, but modifying is slow.\r\n * LinkedList wins when modifying contents.\r\n * http://stackoverflow.com/questions/166884/array-versus-linked-list\r\n *****************************/\r\n\r\n/*\r\n * An internal node is used to manage the order without exposing underlying link chain to the consumer.\r\n */\r\nclass InternalNode\r\nimplements ILinkedNode>, INodeWithValue\r\n{\r\n\tconstructor(\r\n\t\tpublic value?:T,\r\n\t\tpublic previous?:InternalNode,\r\n\t\tpublic next?:InternalNode)\r\n\t{\r\n\t}\r\n\r\n\texternal:ILinkedListNode;\r\n\r\n\tassertDetached():void\r\n\t{\r\n\t\tif(this.next || this.previous)\r\n\t\t\tthrow new InvalidOperationException(\r\n\t\t\t\t\"Adding a node that is already placed.\");\r\n\t}\r\n\r\n}\r\n\r\nfunction ensureExternal(node:InternalNode, list:LinkedList):ILinkedListNode\r\n{\r\n\tif(!node)\r\n\t\treturn null;\r\n\r\n\tvar external:ILinkedListNode = node.external;\r\n\tif(!external)\r\n\t\tnode.external = external = new LinkedListNode(list, node);\r\n\r\n\treturn external;\r\n}\r\n\r\nfunction getInternal(node:ILinkedListNode, list:LinkedList):InternalNode\r\n{\r\n\tif(!node)\r\n\t\tthrow new ArgumentNullException(\r\n\t\t\t\"Cannot be null.\");\r\n\r\n\tif(node.list!=list)\r\n\t\tthrow new InvalidOperationException(\r\n\t\t\t\"Provided node does not belong to this list.\");\r\n\r\n\tvar n:InternalNode = (node)._nodeInternal;\r\n\tif(!n)\r\n\t\tthrow new InvalidOperationException(\r\n\t\t\t\"Provided node is not valid.\");\r\n\r\n\treturn n;\r\n}\r\n\r\nexport default\r\nclass LinkedList\r\nimplements ILinkedList\r\n{\r\n\tprivate _listInternal:LinkedNodeList>;\r\n\tprivate _count:number;\r\n\r\n\tconstructor(source?:IEnumerable);\r\n\tconstructor(source?:IArray);\r\n\tconstructor(source:any)\r\n\t{\r\n\t\tvar _ = this, c = 0;\r\n\t\tvar e = Enumerator.from(source);\r\n\r\n\t\tvar list = _._listInternal = new LinkedNodeList>();\r\n\r\n\t\twhile(e.moveNext())\r\n\t\t{\r\n\t\t\tlist.addNode( new InternalNode(e.current) );\r\n\t\t\t++c;\r\n\t\t}\r\n\r\n\t\t_._count = c;\r\n\t}\r\n\r\n\r\n\t// #region IEnumerateEach\r\n\tforEach(\r\n\t\taction:Predicate | Action,\r\n\t\tuseCopy:boolean = false):void\r\n\t{\r\n\t\tif(useCopy)\r\n\t\t{\r\n\t\t\tvar array = this.toArray();\r\n\t\t\tArrayUtility.forEach(array, action);\r\n\t\t\tarray.length = 0;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis._listInternal.forEach((node, i)=>action(node.value, i));\r\n\t\t}\r\n\t}\r\n\r\n\t// #endregion\r\n\r\n\t// #region IEnumerable\r\n\tgetEnumerator():IEnumerator\r\n\t{\r\n\t\tvar _ = this,\r\n\t\t current:InternalNode,\r\n\t\t next:InternalNode;\r\n\r\n\t\treturn new EnumeratorBase(\r\n\t\t\t() =>\r\n\t\t\t{\r\n\t\t\t\t// Initialize anchor...\r\n\t\t\t\tcurrent = null;\r\n\t\t\t\tnext = _._listInternal.first;\r\n\t\t\t},\r\n\t\t\t(yielder)=>\r\n\t\t\t{\r\n\r\n\t\t\t\tif(next)\r\n\t\t\t\t{\r\n\t\t\t\t\tcurrent = next;\r\n\t\t\t\t\tnext = current && current.next;\r\n\t\t\t\t\treturn yielder.yieldReturn(current.value);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn yielder.yieldBreak();\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\t// #endregion\r\n\r\n\tprivate _findFirst(entry:T):InternalNode\r\n\t{\r\n\t\tvar equals = Values.areEqual,\r\n\t\t next = this._listInternal.first;\r\n\t\twhile(next)\r\n\t\t{\r\n\t\t\tif(equals(entry, next.value))\r\n\t\t\t\treturn next;\r\n\t\t\tnext = next.next;\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate _findLast(entry:T):InternalNode\r\n\t{\r\n\t\tvar equals = Values.areEqual,\r\n\t\t prev = this._listInternal.last;\r\n\t\twhile(prev)\r\n\t\t{\r\n\t\t\tif(equals(entry, prev.value))\r\n\t\t\t\treturn prev;\r\n\t\t\tprev = prev.previous;\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\t// #region ICollection\r\n\tget count():number\r\n\t{\r\n\t\treturn this._count;\r\n\t}\r\n\r\n\t//noinspection JSMethodCanBeStatic,JSUnusedGlobalSymbols\r\n\tget isReadOnly():boolean\r\n\t{\r\n\t\treturn false;\r\n\t}\r\n\r\n\tadd(entry:T):void\r\n\t{\r\n\t\tthis._listInternal.addNode(new InternalNode(entry));\r\n\t\tthis._count++;\r\n\t}\r\n\r\n\r\n\tclear():number\r\n\t{\r\n\t\tthis._count = 0;\r\n\t\treturn this._listInternal.clear();\r\n\t}\r\n\r\n\r\n\tcontains(entry:T):boolean\r\n\t{\r\n\t\tvar found:boolean = false, equals = Values.areEqual;\r\n\t\tthis.forEach(e => !(found = equals(entry, e)));\r\n\t\treturn found;\r\n\t}\r\n\r\n\tcopyTo(array:T[], index:number = 0):T[]\r\n\t{\r\n\t\tif(!array) throw new ArgumentNullException('array');\r\n\r\n\t\tif(this._listInternal.first)\r\n\t\t{\r\n\t\t\tvar minLength = index + this._count;\r\n\t\t\tif(array.length\r\n\t\t\t\t{\r\n\t\t\t\t\tarray[index + i] = entry;\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\treturn array;\r\n\t}\r\n\r\n\ttoArray():T[]\r\n\t{\r\n\t\tvar array = ArrayUtility.initialize(this._count);\r\n\t\treturn this.copyTo(array);\r\n\t}\r\n\r\n\tremoveOnce(entry:T):boolean\r\n\t{\r\n\t\treturn this.remove(entry, 1)!==0;\r\n\t}\r\n\r\n\tremove(entry:T, max:number = Infinity):number\r\n\t{\r\n\t\tvar equals = Values.areEqual;\r\n\t\tvar _ = this, list = _._listInternal, removedCount:number = 0;\r\n\r\n\t\tlist.forEach(node=>\r\n\t\t{\r\n\t\t\tif(equals(entry, node.value) && list.removeNode(node))\r\n\t\t\t{\r\n\t\t\t\t--_._count;\r\n\t\t\t\t++removedCount;\r\n\t\t\t}\r\n\t\t\treturn removedCount\r\n\t{\r\n\t\treturn ensureExternal(this._listInternal.first, this);\r\n\t}\r\n\r\n\tget last():ILinkedListNode\r\n\t{\r\n\t\treturn ensureExternal(this._listInternal.last, this);\r\n\t}\r\n\r\n\t// get methods are available for convenience but is an n*index operation.\r\n\r\n\r\n\tgetValueAt(index:number):T\r\n\t{\r\n\t\treturn this._listInternal.getNodeAt(index).value;\r\n\t}\r\n\r\n\tgetNodeAt(index:number):ILinkedListNode\r\n\t{\r\n\t\treturn ensureExternal(this._listInternal.getNodeAt(index), this);\r\n\t}\r\n\r\n\tfind(entry:T):ILinkedListNode\r\n\t{\r\n\t\treturn ensureExternal(this._findFirst(entry), this);\r\n\t}\r\n\r\n\tfindLast(entry:T):ILinkedListNode\r\n\t{\r\n\t\treturn ensureExternal(this._findLast(entry), this);\r\n\t}\r\n\r\n\taddFirst(entry:T):void\r\n\t{\r\n\t\tthis._listInternal.addNodeBefore(new InternalNode(entry));\r\n\t\t++this._count;\r\n\t}\r\n\r\n\taddLast(entry:T):void\r\n\t{\r\n\t\tthis.add(entry);\r\n\t}\r\n\r\n\tremoveFirst():void\r\n\t{\r\n\t\tvar _ = this, first = _._listInternal.first;\r\n\t\tif(first && _._listInternal.removeNode(first)) {\r\n\t\t\t_._count--;\r\n\t\t}\r\n\t}\r\n\r\n\tremoveLast():void\r\n\t{\r\n\t\tvar _ = this, last = _._listInternal.last;\r\n\t\tif(last && _._listInternal.removeNode(last)) {\r\n\t\t\t--_._count;\r\n\t\t}\r\n\t}\r\n\r\n\t// Returns true if successful and false if not found (already removed).\r\n\tremoveNode(node:ILinkedListNode):boolean\r\n\t{\r\n\t\tvar _ = this,\r\n\t\t removed = _._listInternal.removeNode(getInternal(node, _));\r\n\r\n\t\tif(removed) --_._count;\r\n\r\n\t\treturn removed;\r\n\t}\r\n\r\n\taddBefore(before:ILinkedListNode, entry:T):void\r\n\t{\r\n\t\tthis._listInternal.addNodeBefore(\r\n\t\t\tnew InternalNode(entry),\r\n\t\t\tgetInternal(before, this)\r\n\t\t);\r\n\t\t++this._count;\r\n\t}\r\n\r\n\r\n\taddAfter(after:ILinkedListNode, entry:T):void\r\n\t{\r\n\t\tthis._listInternal.addNodeAfter(\r\n\t\t\tnew InternalNode(entry),\r\n\t\t\tgetInternal(after, this)\r\n\t\t);\r\n\t\t++this._count;\r\n\t}\r\n\r\n\taddNodeBefore(node:ILinkedListNode, before:ILinkedListNode):void\r\n\t{\r\n\t\tthis._listInternal.addNodeBefore(\r\n\t\t\tgetInternal(before, this),\r\n\t\t\tgetInternal(node, this)\r\n\t\t);\r\n\t\t++this._count;\r\n\t}\r\n\r\n\taddNodeAfter(node:ILinkedListNode, after:ILinkedListNode):void\r\n\t{\r\n\t\tthis._listInternal.addNodeAfter(\r\n\t\t\tgetInternal(after, this),\r\n\t\t\tgetInternal(node, this)\r\n\t\t);\r\n\t\t++this._count;\r\n\t}\r\n\r\n\r\n}\r\n\r\n// Use an internal node class to prevent mucking up the LinkedList.\r\nclass LinkedListNode implements ILinkedListNode\r\n{\r\n\tconstructor(\r\n\t\tprivate _list:LinkedList,\r\n\t\tprivate _nodeInternal:InternalNode)\r\n\t{\r\n\t}\r\n\r\n\tget list():LinkedList\r\n\t{\r\n\t\treturn this._list;\r\n\t}\r\n\r\n\tget previous():ILinkedListNode\r\n\t{\r\n\t\treturn ensureExternal(this._nodeInternal.previous, this._list);\r\n\t}\r\n\r\n\tget next():ILinkedListNode\r\n\t{\r\n\t\treturn ensureExternal(this._nodeInternal.next, this._list);\r\n\t}\r\n\r\n\tget value():T\r\n\t{\r\n\t\treturn this._nodeInternal.value;\r\n\t}\r\n\r\n\tset value(v:T)\r\n\t{\r\n\t\tthis._nodeInternal.value = v;\r\n\t}\r\n\r\n\taddBefore(entry:T):void\r\n\t{\r\n\t\tthis._list.addBefore(this, entry);\r\n\t}\r\n\r\n\taddAfter(entry:T):void\r\n\t{\r\n\t\tthis._list.addAfter(this, entry);\r\n\t}\r\n\r\n\taddNodeBefore(before:ILinkedListNode):void\r\n\t{\r\n\t\tthis._list.addNodeBefore(this, before);\r\n\t}\r\n\r\n\taddNodeAfter(after:ILinkedListNode):void\r\n\t{\r\n\t\tthis._list.addNodeAfter(this, after);\r\n\t}\r\n\r\n\tremove():void\r\n\t{\r\n\t\tthis._list.removeNode(this);\r\n\t}\r\n\r\n}\r\n\r\n","/*!\n * @author electricessence / https://github.com/electricessence/\n * Based Upon: http://msdn.microsoft.com/en-us/library/he2s3bh7%28v=vs.110%29.aspx\n * Licensing: MIT https://github.com/electricessence/TypeScript.NET/blob/master/LICENSE.md\n */\n'use strict';\nconst Values = require(\"../Compare\");\nconst ArrayUtility = require(\"../Collections/Array/Utility\");\nconst Enumerator = require(\"./Enumeration/Enumerator\");\nconst EnumeratorBase_1 = require(\"./Enumeration/EnumeratorBase\");\nconst LinkedNodeList_1 = require(\"./LinkedNodeList\");\nconst InvalidOperationException_1 = require(\"../Exceptions/InvalidOperationException\");\nconst ArgumentNullException_1 = require(\"../Exceptions/ArgumentNullException\");\nclass InternalNode {\n constructor(value, previous, next) {\n this.value = value;\n this.previous = previous;\n this.next = next;\n }\n assertDetached() {\n if (this.next || this.previous)\n throw new InvalidOperationException_1.default(\"Adding a node that is already placed.\");\n }\n}\nfunction ensureExternal(node, list) {\n if (!node)\n return null;\n var external = node.external;\n if (!external)\n node.external = external = new LinkedListNode(list, node);\n return external;\n}\nfunction getInternal(node, list) {\n if (!node)\n throw new ArgumentNullException_1.default(\"Cannot be null.\");\n if (node.list != list)\n throw new InvalidOperationException_1.default(\"Provided node does not belong to this list.\");\n var n = node._nodeInternal;\n if (!n)\n throw new InvalidOperationException_1.default(\"Provided node is not valid.\");\n return n;\n}\nclass LinkedList {\n constructor(source) {\n var _ = this, c = 0;\n var e = Enumerator.from(source);\n var list = _._listInternal = new LinkedNodeList_1.default();\n while (e.moveNext()) {\n list.addNode(new InternalNode(e.current));\n ++c;\n }\n _._count = c;\n }\n forEach(action, useCopy = false) {\n if (useCopy) {\n var array = this.toArray();\n ArrayUtility.forEach(array, action);\n array.length = 0;\n }\n else {\n this._listInternal.forEach((node, i) => action(node.value, i));\n }\n }\n getEnumerator() {\n var _ = this, current, next;\n return new EnumeratorBase_1.default(() => {\n current = null;\n next = _._listInternal.first;\n }, (yielder) => {\n if (next) {\n current = next;\n next = current && current.next;\n return yielder.yieldReturn(current.value);\n }\n return yielder.yieldBreak();\n });\n }\n _findFirst(entry) {\n var equals = Values.areEqual, next = this._listInternal.first;\n while (next) {\n if (equals(entry, next.value))\n return next;\n next = next.next;\n }\n return null;\n }\n _findLast(entry) {\n var equals = Values.areEqual, prev = this._listInternal.last;\n while (prev) {\n if (equals(entry, prev.value))\n return prev;\n prev = prev.previous;\n }\n return null;\n }\n get count() {\n return this._count;\n }\n get isReadOnly() {\n return false;\n }\n add(entry) {\n this._listInternal.addNode(new InternalNode(entry));\n this._count++;\n }\n clear() {\n this._count = 0;\n return this._listInternal.clear();\n }\n contains(entry) {\n var found = false, equals = Values.areEqual;\n this.forEach(e => !(found = equals(entry, e)));\n return found;\n }\n copyTo(array, index = 0) {\n if (!array)\n throw new ArgumentNullException_1.default('array');\n if (this._listInternal.first) {\n var minLength = index + this._count;\n if (array.length < minLength)\n array.length = minLength;\n this.forEach((entry, i) => {\n array[index + i] = entry;\n });\n }\n return array;\n }\n toArray() {\n var array = ArrayUtility.initialize(this._count);\n return this.copyTo(array);\n }\n removeOnce(entry) {\n return this.remove(entry, 1) !== 0;\n }\n remove(entry, max = Infinity) {\n var equals = Values.areEqual;\n var _ = this, list = _._listInternal, removedCount = 0;\n list.forEach(node => {\n if (equals(entry, node.value) && list.removeNode(node)) {\n --_._count;\n ++removedCount;\n }\n return removedCount < max;\n });\n return removedCount;\n }\n get first() {\n return ensureExternal(this._listInternal.first, this);\n }\n get last() {\n return ensureExternal(this._listInternal.last, this);\n }\n getValueAt(index) {\n return this._listInternal.getNodeAt(index).value;\n }\n getNodeAt(index) {\n return ensureExternal(this._listInternal.getNodeAt(index), this);\n }\n find(entry) {\n return ensureExternal(this._findFirst(entry), this);\n }\n findLast(entry) {\n return ensureExternal(this._findLast(entry), this);\n }\n addFirst(entry) {\n this._listInternal.addNodeBefore(new InternalNode(entry));\n ++this._count;\n }\n addLast(entry) {\n this.add(entry);\n }\n removeFirst() {\n var _ = this, first = _._listInternal.first;\n if (first && _._listInternal.removeNode(first)) {\n _._count--;\n }\n }\n removeLast() {\n var _ = this, last = _._listInternal.last;\n if (last && _._listInternal.removeNode(last)) {\n --_._count;\n }\n }\n removeNode(node) {\n var _ = this, removed = _._listInternal.removeNode(getInternal(node, _));\n if (removed)\n --_._count;\n return removed;\n }\n addBefore(before, entry) {\n this._listInternal.addNodeBefore(new InternalNode(entry), getInternal(before, this));\n ++this._count;\n }\n addAfter(after, entry) {\n this._listInternal.addNodeAfter(new InternalNode(entry), getInternal(after, this));\n ++this._count;\n }\n addNodeBefore(node, before) {\n this._listInternal.addNodeBefore(getInternal(before, this), getInternal(node, this));\n ++this._count;\n }\n addNodeAfter(node, after) {\n this._listInternal.addNodeAfter(getInternal(after, this), getInternal(node, this));\n ++this._count;\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = LinkedList;\nclass LinkedListNode {\n constructor(_list, _nodeInternal) {\n this._list = _list;\n this._nodeInternal = _nodeInternal;\n }\n get list() {\n return this._list;\n }\n get previous() {\n return ensureExternal(this._nodeInternal.previous, this._list);\n }\n get next() {\n return ensureExternal(this._nodeInternal.next, this._list);\n }\n get value() {\n return this._nodeInternal.value;\n }\n set value(v) {\n this._nodeInternal.value = v;\n }\n addBefore(entry) {\n this._list.addBefore(this, entry);\n }\n addAfter(entry) {\n this._list.addAfter(this, entry);\n }\n addNodeBefore(before) {\n this._list.addNodeBefore(this, before);\n }\n addNodeAfter(after) {\n this._list.addNodeAfter(this, after);\n }\n remove() {\n this._list.removeNode(this);\n }\n}\n"]} \ No newline at end of file diff --git a/dist/commonjs/System/Collections/LinkedNodeList.js b/dist/commonjs/System/Collections/LinkedNodeList.js index 62132469..77e847a8 100644 --- a/dist/commonjs/System/Collections/LinkedNodeList.js +++ b/dist/commonjs/System/Collections/LinkedNodeList.js @@ -8,10 +8,10 @@ var _createClass = function () { function defineProperties(target, props) { for function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -var TextUtility = require('../Text/Utility'); -var InvalidOperationException_1 = require('../Exceptions/InvalidOperationException'); -var ArgumentException_1 = require('../Exceptions/ArgumentException'); -var ArgumentNullException_1 = require('../Exceptions/ArgumentNullException'); +var TextUtility = require("../Text/Utility"); +var InvalidOperationException_1 = require("../Exceptions/InvalidOperationException"); +var ArgumentException_1 = require("../Exceptions/ArgumentException"); +var ArgumentNullException_1 = require("../Exceptions/ArgumentNullException"); var LinkedNodeList = function () { function LinkedNodeList() { @@ -22,7 +22,7 @@ var LinkedNodeList = function () { } _createClass(LinkedNodeList, [{ - key: 'forEach', + key: "forEach", value: function forEach(action) { var current = null, next = this.first, @@ -33,7 +33,7 @@ var LinkedNodeList = function () { } while (current && action(current, index++) !== false); } }, { - key: 'clear', + key: "clear", value: function clear() { var _ = this, n, @@ -59,17 +59,17 @@ var LinkedNodeList = function () { return cF; } }, { - key: 'dispose', + key: "dispose", value: function dispose() { this.clear(); } }, { - key: 'contains', + key: "contains", value: function contains(node) { return this.indexOf(node) != -1; } }, { - key: 'getNodeAt', + key: "getNodeAt", value: function getNodeAt(index) { if (index < 0) return null; var next = this._first, @@ -80,7 +80,7 @@ var LinkedNodeList = function () { return next; } }, { - key: 'indexOf', + key: "indexOf", value: function indexOf(node) { if (node && (node.previous || node.next)) { var index = 0; @@ -95,17 +95,17 @@ var LinkedNodeList = function () { return -1; } }, { - key: 'removeFirst', + key: "removeFirst", value: function removeFirst() { return this.removeNode(this._first); } }, { - key: 'removeLast', + key: "removeLast", value: function removeLast() { return this.removeNode(this._last); } }, { - key: 'removeNode', + key: "removeNode", value: function removeNode(node) { if (node == null) throw new ArgumentNullException_1.default('node'); var _ = this; @@ -121,12 +121,12 @@ var LinkedNodeList = function () { return !a && !b; } }, { - key: 'addNode', + key: "addNode", value: function addNode(node) { this.addNodeAfter(node); } }, { - key: 'addNodeBefore', + key: "addNodeBefore", value: function addNodeBefore(node, before) { assertValidDetached(node); var _ = this; @@ -145,7 +145,7 @@ var LinkedNodeList = function () { } } }, { - key: 'addNodeAfter', + key: "addNodeAfter", value: function addNodeAfter(node, after) { assertValidDetached(node); var _ = this; @@ -164,7 +164,7 @@ var LinkedNodeList = function () { } } }, { - key: 'replace', + key: "replace", value: function replace(node, replacement) { if (node == null) throw new ArgumentNullException_1.default('node'); assertValidDetached(replacement, 'replacement'); @@ -177,17 +177,17 @@ var LinkedNodeList = function () { if (node == _._last) _._last = replacement; } }, { - key: 'first', + key: "first", get: function get() { return this._first; } }, { - key: 'last', + key: "last", get: function get() { return this._last; } }, { - key: 'count', + key: "count", get: function get() { var next = this._first, i = 0; diff --git a/dist/commonjs/System/Collections/LinkedNodeList.js.map b/dist/commonjs/System/Collections/LinkedNodeList.js.map index 683830b9..c7eeb268 100644 --- a/dist/commonjs/System/Collections/LinkedNodeList.js.map +++ b/dist/commonjs/System/Collections/LinkedNodeList.js.map @@ -1 +1 @@ -{"version":3,"sources":["System/Collections/LinkedNodeList.ts","System/Collections/LinkedNodeList.js"],"names":[],"mappings":"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","file":"System/Collections/LinkedNodeList.js","sourcesContent":["/*!\r\n * @author electricessence / https://github.com/electricessence/\r\n * Licensing: MIT https://github.com/electricessence/TypeScript.NET/blob/master/LICENSE.md\r\n */\r\n\r\n///\r\n'use strict'; // For compatibility with (let, const, function, class);\r\n\r\nimport * as TextUtility from '../Text/Utility';\r\n\r\nimport InvalidOperationException from '../Exceptions/InvalidOperationException';\r\n\r\nimport ArgumentException from '../Exceptions/ArgumentException';\r\nimport ArgumentNullException from '../Exceptions/ArgumentNullException';\r\n\r\n\r\n/*****************************\r\n * IMPORTANT NOTES ABOUT PERFORMANCE:\r\n * http://jsperf.com/simulating-a-queue\r\n *\r\n * Adding to an array is very fast, but modifying is slow.\r\n * LinkedList wins when modifying contents.\r\n * http://stackoverflow.com/questions/166884/array-versus-linked-list\r\n *****************************/\r\n\r\n/**\r\n * This class is useful for managing a list of linked nodes, but it does not protect against modifying individual links.\r\n * If the consumer modifies a link (sets the previous or next value) it will effectively break the collection.\r\n *\r\n * It is possible to declare a node type of any kind as long as it contains a previous and next value that can reference another node.\r\n * Although not as safe as the included LinkedList, this class has less overhead and is more flexible.\r\n *\r\n * The count (or length) of this LinkedNodeList is not tracked since it could be corrupted at any time.\r\n */\r\nexport default\r\nclass LinkedNodeList>\r\nimplements ILinkedNodeList, IDisposable\r\n{\r\n\r\n\tprivate _first:TNode;\r\n\tprivate _last:TNode;\r\n\r\n\tconstructor()\r\n\t{\r\n\t\tthis._first = null;\r\n\t\tthis._last = null;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * The first node. Will be null if the collection is empty.\r\n\t */\r\n\tget first():TNode\r\n\t{\r\n\t\treturn this._first;\r\n\t}\r\n\r\n\t/**\r\n\t * The last node.\r\n\t */\r\n\tget last():TNode\r\n\t{\r\n\t\treturn this._last;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Iteratively counts the number of linked nodes and returns the value.\r\n\t * @returns {number}\r\n\t */\r\n\tget count():number {\r\n\r\n\t\tvar next = this._first, i:number = 0;\r\n\t\twhile(next)\r\n\t\t{\r\n\t\t\ti++;\r\n\t\t\tnext = next.next;\r\n\t\t}\r\n\r\n\t\treturn i;\r\n\t}\r\n\r\n\tforEach(\r\n\t\taction:Predicate | Action):void\r\n\t{\r\n\t\tvar current:TNode = null,\r\n\t\t next:TNode = this.first, // Be sure to track the next node so if current node is removed.\r\n\t\t index:number = 0;\r\n\r\n\t\tdo {\r\n\t\t\tcurrent = next;\r\n\t\t\tnext = current && current.next;\r\n\t\t}\r\n\t\twhile (current\r\n\t\t\t&& action(current, index++)!==false);\r\n\t}\r\n\r\n\t/**\r\n\t * Erases the linked node's references to each other and returns the number of nodes.\r\n\t * @returns {number}\r\n\t */\r\n\tclear():number\r\n\t{\r\n\t\tvar _ = this, n:TNode, cF:number = 0, cL:number = 0;\r\n\r\n\t\t// First, clear in the forward direction.\r\n\t\tn = _._first;\r\n\t\t_._first = null;\r\n\r\n\t\twhile(n) {\r\n\t\t\tcF++;\r\n\t\t\tlet current = n;\r\n\t\t\tn = n.next;\r\n\t\t\tcurrent.next = null;\r\n\t\t}\r\n\r\n\t\t// Last, clear in the reverse direction.\r\n\t\tn = _._last;\r\n\t\t_._last = null;\r\n\r\n\t\twhile(n) {\r\n\t\t\tcL++;\r\n\t\t\tlet current = n;\r\n\t\t\tn = n.previous;\r\n\t\t\tcurrent.previous = null;\r\n\t\t}\r\n\r\n\t\tif(cF!==cL) console.warn('LinkedNodeList: Forward versus reverse count does not match when clearing. Forward: '+cF+\", Reverse: \"+cL);\r\n\r\n\t\treturn cF;\r\n\t}\r\n\r\n\t/**\r\n\t * Clears the list.\r\n\t */\r\n\tdispose():void\r\n\t{\r\n\t\tthis.clear();\r\n\t}\r\n\r\n\t/**\r\n\t * Iterates the list to see if a node exists.\r\n\t * @param node\r\n\t * @returns {boolean}\r\n\t */\r\n\tcontains(node:TNode):boolean\r\n\t{\r\n\t\treturn this.indexOf(node)!=-1;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Gets the index of a particular node.\r\n\t * @param index\r\n\t */\r\n\tgetNodeAt(index:number):TNode\r\n\t{\r\n\t\tif(index<0)\r\n\t\t\treturn null;\r\n\r\n\t\tvar next = this._first, i:number = 0;\r\n\t\twhile(next && index>(node:TNode, propName:string = 'node') {\r\n\r\n\tif(node==null)\r\n\t\tthrow new ArgumentNullException(propName);\r\n\r\n\tif(node.next || node.previous)\r\n\t\tthrow new InvalidOperationException(\"Cannot add a node to a LinkedNodeList that is already linked.\");\r\n\r\n}","/*!\n * @author electricessence / https://github.com/electricessence/\n * Licensing: MIT https://github.com/electricessence/TypeScript.NET/blob/master/LICENSE.md\n */\n'use strict';\nconst TextUtility = require('../Text/Utility');\nconst InvalidOperationException_1 = require('../Exceptions/InvalidOperationException');\nconst ArgumentException_1 = require('../Exceptions/ArgumentException');\nconst ArgumentNullException_1 = require('../Exceptions/ArgumentNullException');\nclass LinkedNodeList {\n constructor() {\n this._first = null;\n this._last = null;\n }\n get first() {\n return this._first;\n }\n get last() {\n return this._last;\n }\n get count() {\n var next = this._first, i = 0;\n while (next) {\n i++;\n next = next.next;\n }\n return i;\n }\n forEach(action) {\n var current = null, next = this.first, index = 0;\n do {\n current = next;\n next = current && current.next;\n } while (current\n && action(current, index++) !== false);\n }\n clear() {\n var _ = this, n, cF = 0, cL = 0;\n n = _._first;\n _._first = null;\n while (n) {\n cF++;\n let current = n;\n n = n.next;\n current.next = null;\n }\n n = _._last;\n _._last = null;\n while (n) {\n cL++;\n let current = n;\n n = n.previous;\n current.previous = null;\n }\n if (cF !== cL)\n console.warn('LinkedNodeList: Forward versus reverse count does not match when clearing. Forward: ' + cF + \", Reverse: \" + cL);\n return cF;\n }\n dispose() {\n this.clear();\n }\n contains(node) {\n return this.indexOf(node) != -1;\n }\n getNodeAt(index) {\n if (index < 0)\n return null;\n var next = this._first, i = 0;\n while (next && index < i++) {\n next = next.next;\n }\n return next;\n }\n indexOf(node) {\n if (node && (node.previous || node.next)) {\n var index = 0;\n var c, n = this._first;\n do {\n c = n;\n if (c === node)\n return index;\n index++;\n } while ((n = c && c.next));\n }\n return -1;\n }\n removeFirst() {\n return this.removeNode(this._first);\n }\n removeLast() {\n return this.removeNode(this._last);\n }\n removeNode(node) {\n if (node == null)\n throw new ArgumentNullException_1.default('node');\n var _ = this;\n var prev = node.previous, next = node.next, a = false, b = false;\n if (prev)\n prev.next = next;\n else if (_._first == node)\n _._first = next;\n else\n a = true;\n if (next)\n next.previous = prev;\n else if (_._last == node)\n _._last = prev;\n else\n b = true;\n if (a !== b) {\n throw new ArgumentException_1.default('node', TextUtility.format(\"Provided node is has no {0} reference but is not the {1} node!\", a ? \"previous\" : \"next\", a ? \"first\" : \"last\"));\n }\n return !a && !b;\n }\n addNode(node) {\n this.addNodeAfter(node);\n }\n addNodeBefore(node, before) {\n assertValidDetached(node);\n var _ = this;\n if (!before) {\n before = _._first;\n }\n if (before) {\n let prev = before.previous;\n node.previous = prev;\n node.next = before;\n before.previous = node;\n if (prev)\n prev.next = node;\n if (before == _._first)\n _._last = node;\n }\n else {\n _._first = _._last = node;\n }\n }\n addNodeAfter(node, after) {\n assertValidDetached(node);\n var _ = this;\n if (!after) {\n after = _._last;\n }\n if (after) {\n let next = after.next;\n node.next = next;\n node.previous = after;\n after.next = node;\n if (next)\n next.previous = node;\n if (after == _._last)\n _._last = node;\n }\n else {\n _._first = _._last = node;\n }\n }\n replace(node, replacement) {\n if (node == null)\n throw new ArgumentNullException_1.default('node');\n assertValidDetached(replacement, 'replacement');\n var _ = this;\n replacement.previous = node.previous;\n replacement.next = node.next;\n if (node.previous)\n node.previous.next = replacement;\n if (node.next)\n node.next.previous = replacement;\n if (node == _._first)\n _._first = replacement;\n if (node == _._last)\n _._last = replacement;\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = LinkedNodeList;\nfunction assertValidDetached(node, propName = 'node') {\n if (node == null)\n throw new ArgumentNullException_1.default(propName);\n if (node.next || node.previous)\n throw new InvalidOperationException_1.default(\"Cannot add a node to a LinkedNodeList that is already linked.\");\n}\n"]} \ No newline at end of file +{"version":3,"sources":["System/Collections/LinkedNodeList.ts","System/Collections/LinkedNodeList.js"],"names":[],"mappings":"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","file":"System/Collections/LinkedNodeList.js","sourcesContent":["/*!\r\n * @author electricessence / https://github.com/electricessence/\r\n * Licensing: MIT https://github.com/electricessence/TypeScript.NET/blob/master/LICENSE.md\r\n */\r\n\r\n///\r\n'use strict'; // For compatibility with (let, const, function, class);\r\n\r\nimport * as TextUtility from \"../Text/Utility\";\r\nimport InvalidOperationException from \"../Exceptions/InvalidOperationException\";\r\nimport ArgumentException from \"../Exceptions/ArgumentException\";\r\nimport ArgumentNullException from \"../Exceptions/ArgumentNullException\";\r\n\r\n\r\n/*****************************\r\n * IMPORTANT NOTES ABOUT PERFORMANCE:\r\n * http://jsperf.com/simulating-a-queue\r\n *\r\n * Adding to an array is very fast, but modifying is slow.\r\n * LinkedList wins when modifying contents.\r\n * http://stackoverflow.com/questions/166884/array-versus-linked-list\r\n *****************************/\r\n\r\n/**\r\n * This class is useful for managing a list of linked nodes, but it does not protect against modifying individual links.\r\n * If the consumer modifies a link (sets the previous or next value) it will effectively break the collection.\r\n *\r\n * It is possible to declare a node type of any kind as long as it contains a previous and next value that can reference another node.\r\n * Although not as safe as the included LinkedList, this class has less overhead and is more flexible.\r\n *\r\n * The count (or length) of this LinkedNodeList is not tracked since it could be corrupted at any time.\r\n */\r\nexport default\r\nclass LinkedNodeList>\r\nimplements ILinkedNodeList, IDisposable\r\n{\r\n\r\n\tprivate _first:TNode;\r\n\tprivate _last:TNode;\r\n\r\n\tconstructor()\r\n\t{\r\n\t\tthis._first = null;\r\n\t\tthis._last = null;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * The first node. Will be null if the collection is empty.\r\n\t */\r\n\tget first():TNode\r\n\t{\r\n\t\treturn this._first;\r\n\t}\r\n\r\n\t/**\r\n\t * The last node.\r\n\t */\r\n\tget last():TNode\r\n\t{\r\n\t\treturn this._last;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Iteratively counts the number of linked nodes and returns the value.\r\n\t * @returns {number}\r\n\t */\r\n\tget count():number {\r\n\r\n\t\tvar next = this._first, i:number = 0;\r\n\t\twhile(next)\r\n\t\t{\r\n\t\t\ti++;\r\n\t\t\tnext = next.next;\r\n\t\t}\r\n\r\n\t\treturn i;\r\n\t}\r\n\r\n\tforEach(\r\n\t\taction:Predicate | Action):void\r\n\t{\r\n\t\tvar current:TNode = null,\r\n\t\t next:TNode = this.first, // Be sure to track the next node so if current node is removed.\r\n\t\t index:number = 0;\r\n\r\n\t\tdo {\r\n\t\t\tcurrent = next;\r\n\t\t\tnext = current && current.next;\r\n\t\t}\r\n\t\twhile (current\r\n\t\t\t&& action(current, index++)!==false);\r\n\t}\r\n\r\n\t/**\r\n\t * Erases the linked node's references to each other and returns the number of nodes.\r\n\t * @returns {number}\r\n\t */\r\n\tclear():number\r\n\t{\r\n\t\tvar _ = this, n:TNode, cF:number = 0, cL:number = 0;\r\n\r\n\t\t// First, clear in the forward direction.\r\n\t\tn = _._first;\r\n\t\t_._first = null;\r\n\r\n\t\twhile(n) {\r\n\t\t\tcF++;\r\n\t\t\tlet current = n;\r\n\t\t\tn = n.next;\r\n\t\t\tcurrent.next = null;\r\n\t\t}\r\n\r\n\t\t// Last, clear in the reverse direction.\r\n\t\tn = _._last;\r\n\t\t_._last = null;\r\n\r\n\t\twhile(n) {\r\n\t\t\tcL++;\r\n\t\t\tlet current = n;\r\n\t\t\tn = n.previous;\r\n\t\t\tcurrent.previous = null;\r\n\t\t}\r\n\r\n\t\tif(cF!==cL) console.warn('LinkedNodeList: Forward versus reverse count does not match when clearing. Forward: '+cF+\", Reverse: \"+cL);\r\n\r\n\t\treturn cF;\r\n\t}\r\n\r\n\t/**\r\n\t * Clears the list.\r\n\t */\r\n\tdispose():void\r\n\t{\r\n\t\tthis.clear();\r\n\t}\r\n\r\n\t/**\r\n\t * Iterates the list to see if a node exists.\r\n\t * @param node\r\n\t * @returns {boolean}\r\n\t */\r\n\tcontains(node:TNode):boolean\r\n\t{\r\n\t\treturn this.indexOf(node)!=-1;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Gets the index of a particular node.\r\n\t * @param index\r\n\t */\r\n\tgetNodeAt(index:number):TNode\r\n\t{\r\n\t\tif(index<0)\r\n\t\t\treturn null;\r\n\r\n\t\tvar next = this._first, i:number = 0;\r\n\t\twhile(next && index>(node:TNode, propName:string = 'node') {\r\n\r\n\tif(node==null)\r\n\t\tthrow new ArgumentNullException(propName);\r\n\r\n\tif(node.next || node.previous)\r\n\t\tthrow new InvalidOperationException(\"Cannot add a node to a LinkedNodeList that is already linked.\");\r\n\r\n}","/*!\n * @author electricessence / https://github.com/electricessence/\n * Licensing: MIT https://github.com/electricessence/TypeScript.NET/blob/master/LICENSE.md\n */\n'use strict';\nconst TextUtility = require(\"../Text/Utility\");\nconst InvalidOperationException_1 = require(\"../Exceptions/InvalidOperationException\");\nconst ArgumentException_1 = require(\"../Exceptions/ArgumentException\");\nconst ArgumentNullException_1 = require(\"../Exceptions/ArgumentNullException\");\nclass LinkedNodeList {\n constructor() {\n this._first = null;\n this._last = null;\n }\n get first() {\n return this._first;\n }\n get last() {\n return this._last;\n }\n get count() {\n var next = this._first, i = 0;\n while (next) {\n i++;\n next = next.next;\n }\n return i;\n }\n forEach(action) {\n var current = null, next = this.first, index = 0;\n do {\n current = next;\n next = current && current.next;\n } while (current\n && action(current, index++) !== false);\n }\n clear() {\n var _ = this, n, cF = 0, cL = 0;\n n = _._first;\n _._first = null;\n while (n) {\n cF++;\n let current = n;\n n = n.next;\n current.next = null;\n }\n n = _._last;\n _._last = null;\n while (n) {\n cL++;\n let current = n;\n n = n.previous;\n current.previous = null;\n }\n if (cF !== cL)\n console.warn('LinkedNodeList: Forward versus reverse count does not match when clearing. Forward: ' + cF + \", Reverse: \" + cL);\n return cF;\n }\n dispose() {\n this.clear();\n }\n contains(node) {\n return this.indexOf(node) != -1;\n }\n getNodeAt(index) {\n if (index < 0)\n return null;\n var next = this._first, i = 0;\n while (next && index < i++) {\n next = next.next;\n }\n return next;\n }\n indexOf(node) {\n if (node && (node.previous || node.next)) {\n var index = 0;\n var c, n = this._first;\n do {\n c = n;\n if (c === node)\n return index;\n index++;\n } while ((n = c && c.next));\n }\n return -1;\n }\n removeFirst() {\n return this.removeNode(this._first);\n }\n removeLast() {\n return this.removeNode(this._last);\n }\n removeNode(node) {\n if (node == null)\n throw new ArgumentNullException_1.default('node');\n var _ = this;\n var prev = node.previous, next = node.next, a = false, b = false;\n if (prev)\n prev.next = next;\n else if (_._first == node)\n _._first = next;\n else\n a = true;\n if (next)\n next.previous = prev;\n else if (_._last == node)\n _._last = prev;\n else\n b = true;\n if (a !== b) {\n throw new ArgumentException_1.default('node', TextUtility.format(\"Provided node is has no {0} reference but is not the {1} node!\", a ? \"previous\" : \"next\", a ? \"first\" : \"last\"));\n }\n return !a && !b;\n }\n addNode(node) {\n this.addNodeAfter(node);\n }\n addNodeBefore(node, before) {\n assertValidDetached(node);\n var _ = this;\n if (!before) {\n before = _._first;\n }\n if (before) {\n let prev = before.previous;\n node.previous = prev;\n node.next = before;\n before.previous = node;\n if (prev)\n prev.next = node;\n if (before == _._first)\n _._last = node;\n }\n else {\n _._first = _._last = node;\n }\n }\n addNodeAfter(node, after) {\n assertValidDetached(node);\n var _ = this;\n if (!after) {\n after = _._last;\n }\n if (after) {\n let next = after.next;\n node.next = next;\n node.previous = after;\n after.next = node;\n if (next)\n next.previous = node;\n if (after == _._last)\n _._last = node;\n }\n else {\n _._first = _._last = node;\n }\n }\n replace(node, replacement) {\n if (node == null)\n throw new ArgumentNullException_1.default('node');\n assertValidDetached(replacement, 'replacement');\n var _ = this;\n replacement.previous = node.previous;\n replacement.next = node.next;\n if (node.previous)\n node.previous.next = replacement;\n if (node.next)\n node.next.previous = replacement;\n if (node == _._first)\n _._first = replacement;\n if (node == _._last)\n _._last = replacement;\n }\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = LinkedNodeList;\nfunction assertValidDetached(node, propName = 'node') {\n if (node == null)\n throw new ArgumentNullException_1.default(propName);\n if (node.next || node.previous)\n throw new InvalidOperationException_1.default(\"Cannot add a node to a LinkedNodeList that is already linked.\");\n}\n"]} \ No newline at end of file diff --git a/dist/es6/System/Collections/LinkedNodeList.js b/dist/es6/System/Collections/LinkedNodeList.js index 7e4c55bf..69204ff3 100644 --- a/dist/es6/System/Collections/LinkedNodeList.js +++ b/dist/es6/System/Collections/LinkedNodeList.js @@ -3,10 +3,10 @@ * Licensing: MIT https://github.com/electricessence/TypeScript.NET/blob/master/LICENSE.md */ 'use strict'; -import * as TextUtility from '../Text/Utility'; -import InvalidOperationException from '../Exceptions/InvalidOperationException'; -import ArgumentException from '../Exceptions/ArgumentException'; -import ArgumentNullException from '../Exceptions/ArgumentNullException'; +import * as TextUtility from "../Text/Utility"; +import InvalidOperationException from "../Exceptions/InvalidOperationException"; +import ArgumentException from "../Exceptions/ArgumentException"; +import ArgumentNullException from "../Exceptions/ArgumentNullException"; export default class LinkedNodeList { constructor() { this._first = null; diff --git a/dist/es6/System/Collections/LinkedNodeList.js.map b/dist/es6/System/Collections/LinkedNodeList.js.map index 6b453ac4..b5ca7ff2 100644 --- a/dist/es6/System/Collections/LinkedNodeList.js.map +++ b/dist/es6/System/Collections/LinkedNodeList.js.map @@ -1 +1 @@ -{"version":3,"file":"LinkedNodeList.js","sourceRoot":"","sources":["../../../../source/System/Collections/LinkedNodeList.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"LinkedNodeList.js","sourceRoot":"","sources":["../../../../source/System/Collections/LinkedNodeList.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/system/System/Collections/LinkedNodeList.js b/dist/system/System/Collections/LinkedNodeList.js index 8363d15d..aa369563 100644 --- a/dist/system/System/Collections/LinkedNodeList.js +++ b/dist/system/System/Collections/LinkedNodeList.js @@ -2,7 +2,7 @@ * @author electricessence / https://github.com/electricessence/ * Licensing: MIT https://github.com/electricessence/TypeScript.NET/blob/master/LICENSE.md */ -System.register(['../Text/Utility', '../Exceptions/InvalidOperationException', '../Exceptions/ArgumentException', '../Exceptions/ArgumentNullException'], function(exports_1, context_1) { +System.register(["../Text/Utility", "../Exceptions/InvalidOperationException", "../Exceptions/ArgumentException", "../Exceptions/ArgumentNullException"], function(exports_1, context_1) { 'use strict'; var __moduleName = context_1 && context_1.id; var TextUtility, InvalidOperationException_1, ArgumentException_1, ArgumentNullException_1; diff --git a/dist/system/System/Collections/LinkedNodeList.js.map b/dist/system/System/Collections/LinkedNodeList.js.map index 5157aa64..7fbc8807 100644 --- a/dist/system/System/Collections/LinkedNodeList.js.map +++ b/dist/system/System/Collections/LinkedNodeList.js.map @@ -1 +1 @@ -{"version":3,"file":"LinkedNodeList.js","sourceRoot":"","sources":["../../../../source/System/Collections/LinkedNodeList.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"LinkedNodeList.js","sourceRoot":"","sources":["../../../../source/System/Collections/LinkedNodeList.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/umd.min/System/Collections/LinkedNodeList.js.map b/dist/umd.min/System/Collections/LinkedNodeList.js.map index 4b8776cc..52765d3a 100644 --- a/dist/umd.min/System/Collections/LinkedNodeList.js.map +++ b/dist/umd.min/System/Collections/LinkedNodeList.js.map @@ -1 +1 @@ -{"version":3,"sources":["System/Collections/LinkedNodeList.js","System/Collections/LinkedNodeList.ts"],"names":["factory","module","exports","v","require","undefined","define","amd","assertValidDetached","node","propName","ArgumentNullException_1","next","previous","InvalidOperationException_1","TextUtility","ArgumentException_1","LinkedNodeList","this","_first","_last","Object","defineProperty","prototype","get","enumerable","configurable","i","forEach","action","current","first","index","clear","n","_","cF","cL","console","warn","dispose","contains","indexOf","getNodeAt","c","removeFirst","removeNode","removeLast","prev","a","b","format","addNode","addNodeAfter","addNodeBefore","before","after","replace","replacement","value"],"mappings":"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","file":"System/Collections/LinkedNodeList.js","sourcesContent":["/*!\n * @author electricessence / https://github.com/electricessence/\n * Licensing: MIT https://github.com/electricessence/TypeScript.NET/blob/master/LICENSE.md\n */\n(function (factory) {\n if (typeof module === 'object' && typeof module.exports === 'object') {\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\n }\n else if (typeof define === 'function' && define.amd) {\n define([\"require\", \"exports\", '../Text/Utility', '../Exceptions/InvalidOperationException', '../Exceptions/ArgumentException', '../Exceptions/ArgumentNullException'], factory);\n }\n})(function (require, exports) {\n 'use strict';\n var TextUtility = require('../Text/Utility');\n var InvalidOperationException_1 = require('../Exceptions/InvalidOperationException');\n var ArgumentException_1 = require('../Exceptions/ArgumentException');\n var ArgumentNullException_1 = require('../Exceptions/ArgumentNullException');\n var LinkedNodeList = (function () {\n function LinkedNodeList() {\n this._first = null;\n this._last = null;\n }\n Object.defineProperty(LinkedNodeList.prototype, \"first\", {\n get: function () {\n return this._first;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LinkedNodeList.prototype, \"last\", {\n get: function () {\n return this._last;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LinkedNodeList.prototype, \"count\", {\n get: function () {\n var next = this._first, i = 0;\n while (next) {\n i++;\n next = next.next;\n }\n return i;\n },\n enumerable: true,\n configurable: true\n });\n LinkedNodeList.prototype.forEach = function (action) {\n var current = null, next = this.first, index = 0;\n do {\n current = next;\n next = current && current.next;\n } while (current\n && action(current, index++) !== false);\n };\n LinkedNodeList.prototype.clear = function () {\n var _ = this, n, cF = 0, cL = 0;\n n = _._first;\n _._first = null;\n while (n) {\n cF++;\n var current = n;\n n = n.next;\n current.next = null;\n }\n n = _._last;\n _._last = null;\n while (n) {\n cL++;\n var current = n;\n n = n.previous;\n current.previous = null;\n }\n if (cF !== cL)\n console.warn('LinkedNodeList: Forward versus reverse count does not match when clearing. Forward: ' + cF + \", Reverse: \" + cL);\n return cF;\n };\n LinkedNodeList.prototype.dispose = function () {\n this.clear();\n };\n LinkedNodeList.prototype.contains = function (node) {\n return this.indexOf(node) != -1;\n };\n LinkedNodeList.prototype.getNodeAt = function (index) {\n if (index < 0)\n return null;\n var next = this._first, i = 0;\n while (next && index < i++) {\n next = next.next;\n }\n return next;\n };\n LinkedNodeList.prototype.indexOf = function (node) {\n if (node && (node.previous || node.next)) {\n var index = 0;\n var c, n = this._first;\n do {\n c = n;\n if (c === node)\n return index;\n index++;\n } while ((n = c && c.next));\n }\n return -1;\n };\n LinkedNodeList.prototype.removeFirst = function () {\n return this.removeNode(this._first);\n };\n LinkedNodeList.prototype.removeLast = function () {\n return this.removeNode(this._last);\n };\n LinkedNodeList.prototype.removeNode = function (node) {\n if (node == null)\n throw new ArgumentNullException_1.default('node');\n var _ = this;\n var prev = node.previous, next = node.next, a = false, b = false;\n if (prev)\n prev.next = next;\n else if (_._first == node)\n _._first = next;\n else\n a = true;\n if (next)\n next.previous = prev;\n else if (_._last == node)\n _._last = prev;\n else\n b = true;\n if (a !== b) {\n throw new ArgumentException_1.default('node', TextUtility.format(\"Provided node is has no {0} reference but is not the {1} node!\", a ? \"previous\" : \"next\", a ? \"first\" : \"last\"));\n }\n return !a && !b;\n };\n LinkedNodeList.prototype.addNode = function (node) {\n this.addNodeAfter(node);\n };\n LinkedNodeList.prototype.addNodeBefore = function (node, before) {\n assertValidDetached(node);\n var _ = this;\n if (!before) {\n before = _._first;\n }\n if (before) {\n var prev = before.previous;\n node.previous = prev;\n node.next = before;\n before.previous = node;\n if (prev)\n prev.next = node;\n if (before == _._first)\n _._last = node;\n }\n else {\n _._first = _._last = node;\n }\n };\n LinkedNodeList.prototype.addNodeAfter = function (node, after) {\n assertValidDetached(node);\n var _ = this;\n if (!after) {\n after = _._last;\n }\n if (after) {\n var next = after.next;\n node.next = next;\n node.previous = after;\n after.next = node;\n if (next)\n next.previous = node;\n if (after == _._last)\n _._last = node;\n }\n else {\n _._first = _._last = node;\n }\n };\n LinkedNodeList.prototype.replace = function (node, replacement) {\n if (node == null)\n throw new ArgumentNullException_1.default('node');\n assertValidDetached(replacement, 'replacement');\n var _ = this;\n replacement.previous = node.previous;\n replacement.next = node.next;\n if (node.previous)\n node.previous.next = replacement;\n if (node.next)\n node.next.previous = replacement;\n if (node == _._first)\n _._first = replacement;\n if (node == _._last)\n _._last = replacement;\n };\n return LinkedNodeList;\n }());\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.default = LinkedNodeList;\n function assertValidDetached(node, propName) {\n if (propName === void 0) { propName = 'node'; }\n if (node == null)\n throw new ArgumentNullException_1.default(propName);\n if (node.next || node.previous)\n throw new InvalidOperationException_1.default(\"Cannot add a node to a LinkedNodeList that is already linked.\");\n }\n});\n","/*!\r\n * @author electricessence / https://github.com/electricessence/\r\n * Licensing: MIT https://github.com/electricessence/TypeScript.NET/blob/master/LICENSE.md\r\n */\r\n\r\n///\r\n'use strict'; // For compatibility with (let, const, function, class);\r\n\r\nimport * as TextUtility from '../Text/Utility';\r\n\r\nimport InvalidOperationException from '../Exceptions/InvalidOperationException';\r\n\r\nimport ArgumentException from '../Exceptions/ArgumentException';\r\nimport ArgumentNullException from '../Exceptions/ArgumentNullException';\r\n\r\n\r\n/*****************************\r\n * IMPORTANT NOTES ABOUT PERFORMANCE:\r\n * http://jsperf.com/simulating-a-queue\r\n *\r\n * Adding to an array is very fast, but modifying is slow.\r\n * LinkedList wins when modifying contents.\r\n * http://stackoverflow.com/questions/166884/array-versus-linked-list\r\n *****************************/\r\n\r\n/**\r\n * This class is useful for managing a list of linked nodes, but it does not protect against modifying individual links.\r\n * If the consumer modifies a link (sets the previous or next value) it will effectively break the collection.\r\n *\r\n * It is possible to declare a node type of any kind as long as it contains a previous and next value that can reference another node.\r\n * Although not as safe as the included LinkedList, this class has less overhead and is more flexible.\r\n *\r\n * The count (or length) of this LinkedNodeList is not tracked since it could be corrupted at any time.\r\n */\r\nexport default\r\nclass LinkedNodeList>\r\nimplements ILinkedNodeList, IDisposable\r\n{\r\n\r\n\tprivate _first:TNode;\r\n\tprivate _last:TNode;\r\n\r\n\tconstructor()\r\n\t{\r\n\t\tthis._first = null;\r\n\t\tthis._last = null;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * The first node. Will be null if the collection is empty.\r\n\t */\r\n\tget first():TNode\r\n\t{\r\n\t\treturn this._first;\r\n\t}\r\n\r\n\t/**\r\n\t * The last node.\r\n\t */\r\n\tget last():TNode\r\n\t{\r\n\t\treturn this._last;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Iteratively counts the number of linked nodes and returns the value.\r\n\t * @returns {number}\r\n\t */\r\n\tget count():number {\r\n\r\n\t\tvar next = this._first, i:number = 0;\r\n\t\twhile(next)\r\n\t\t{\r\n\t\t\ti++;\r\n\t\t\tnext = next.next;\r\n\t\t}\r\n\r\n\t\treturn i;\r\n\t}\r\n\r\n\tforEach(\r\n\t\taction:Predicate | Action):void\r\n\t{\r\n\t\tvar current:TNode = null,\r\n\t\t next:TNode = this.first, // Be sure to track the next node so if current node is removed.\r\n\t\t index:number = 0;\r\n\r\n\t\tdo {\r\n\t\t\tcurrent = next;\r\n\t\t\tnext = current && current.next;\r\n\t\t}\r\n\t\twhile (current\r\n\t\t\t&& action(current, index++)!==false);\r\n\t}\r\n\r\n\t/**\r\n\t * Erases the linked node's references to each other and returns the number of nodes.\r\n\t * @returns {number}\r\n\t */\r\n\tclear():number\r\n\t{\r\n\t\tvar _ = this, n:TNode, cF:number = 0, cL:number = 0;\r\n\r\n\t\t// First, clear in the forward direction.\r\n\t\tn = _._first;\r\n\t\t_._first = null;\r\n\r\n\t\twhile(n) {\r\n\t\t\tcF++;\r\n\t\t\tlet current = n;\r\n\t\t\tn = n.next;\r\n\t\t\tcurrent.next = null;\r\n\t\t}\r\n\r\n\t\t// Last, clear in the reverse direction.\r\n\t\tn = _._last;\r\n\t\t_._last = null;\r\n\r\n\t\twhile(n) {\r\n\t\t\tcL++;\r\n\t\t\tlet current = n;\r\n\t\t\tn = n.previous;\r\n\t\t\tcurrent.previous = null;\r\n\t\t}\r\n\r\n\t\tif(cF!==cL) console.warn('LinkedNodeList: Forward versus reverse count does not match when clearing. Forward: '+cF+\", Reverse: \"+cL);\r\n\r\n\t\treturn cF;\r\n\t}\r\n\r\n\t/**\r\n\t * Clears the list.\r\n\t */\r\n\tdispose():void\r\n\t{\r\n\t\tthis.clear();\r\n\t}\r\n\r\n\t/**\r\n\t * Iterates the list to see if a node exists.\r\n\t * @param node\r\n\t * @returns {boolean}\r\n\t */\r\n\tcontains(node:TNode):boolean\r\n\t{\r\n\t\treturn this.indexOf(node)!=-1;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Gets the index of a particular node.\r\n\t * @param index\r\n\t */\r\n\tgetNodeAt(index:number):TNode\r\n\t{\r\n\t\tif(index<0)\r\n\t\t\treturn null;\r\n\r\n\t\tvar next = this._first, i:number = 0;\r\n\t\twhile(next && index>(node:TNode, propName:string = 'node') {\r\n\r\n\tif(node==null)\r\n\t\tthrow new ArgumentNullException(propName);\r\n\r\n\tif(node.next || node.previous)\r\n\t\tthrow new InvalidOperationException(\"Cannot add a node to a LinkedNodeList that is already linked.\");\r\n\r\n}"]} \ No newline at end of file +{"version":3,"sources":["System/Collections/LinkedNodeList.js","System/Collections/LinkedNodeList.ts"],"names":["factory","module","exports","v","require","undefined","define","amd","assertValidDetached","node","propName","ArgumentNullException_1","next","previous","InvalidOperationException_1","TextUtility","ArgumentException_1","LinkedNodeList","this","_first","_last","Object","defineProperty","prototype","get","enumerable","configurable","i","forEach","action","current","first","index","clear","n","_","cF","cL","console","warn","dispose","contains","indexOf","getNodeAt","c","removeFirst","removeNode","removeLast","prev","a","b","format","addNode","addNodeAfter","addNodeBefore","before","after","replace","replacement","value"],"mappings":"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","file":"System/Collections/LinkedNodeList.js","sourcesContent":["/*!\n * @author electricessence / https://github.com/electricessence/\n * Licensing: MIT https://github.com/electricessence/TypeScript.NET/blob/master/LICENSE.md\n */\n(function (factory) {\n if (typeof module === 'object' && typeof module.exports === 'object') {\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\n }\n else if (typeof define === 'function' && define.amd) {\n define([\"require\", \"exports\", \"../Text/Utility\", \"../Exceptions/InvalidOperationException\", \"../Exceptions/ArgumentException\", \"../Exceptions/ArgumentNullException\"], factory);\n }\n})(function (require, exports) {\n 'use strict';\n var TextUtility = require(\"../Text/Utility\");\n var InvalidOperationException_1 = require(\"../Exceptions/InvalidOperationException\");\n var ArgumentException_1 = require(\"../Exceptions/ArgumentException\");\n var ArgumentNullException_1 = require(\"../Exceptions/ArgumentNullException\");\n var LinkedNodeList = (function () {\n function LinkedNodeList() {\n this._first = null;\n this._last = null;\n }\n Object.defineProperty(LinkedNodeList.prototype, \"first\", {\n get: function () {\n return this._first;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LinkedNodeList.prototype, \"last\", {\n get: function () {\n return this._last;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LinkedNodeList.prototype, \"count\", {\n get: function () {\n var next = this._first, i = 0;\n while (next) {\n i++;\n next = next.next;\n }\n return i;\n },\n enumerable: true,\n configurable: true\n });\n LinkedNodeList.prototype.forEach = function (action) {\n var current = null, next = this.first, index = 0;\n do {\n current = next;\n next = current && current.next;\n } while (current\n && action(current, index++) !== false);\n };\n LinkedNodeList.prototype.clear = function () {\n var _ = this, n, cF = 0, cL = 0;\n n = _._first;\n _._first = null;\n while (n) {\n cF++;\n var current = n;\n n = n.next;\n current.next = null;\n }\n n = _._last;\n _._last = null;\n while (n) {\n cL++;\n var current = n;\n n = n.previous;\n current.previous = null;\n }\n if (cF !== cL)\n console.warn('LinkedNodeList: Forward versus reverse count does not match when clearing. Forward: ' + cF + \", Reverse: \" + cL);\n return cF;\n };\n LinkedNodeList.prototype.dispose = function () {\n this.clear();\n };\n LinkedNodeList.prototype.contains = function (node) {\n return this.indexOf(node) != -1;\n };\n LinkedNodeList.prototype.getNodeAt = function (index) {\n if (index < 0)\n return null;\n var next = this._first, i = 0;\n while (next && index < i++) {\n next = next.next;\n }\n return next;\n };\n LinkedNodeList.prototype.indexOf = function (node) {\n if (node && (node.previous || node.next)) {\n var index = 0;\n var c, n = this._first;\n do {\n c = n;\n if (c === node)\n return index;\n index++;\n } while ((n = c && c.next));\n }\n return -1;\n };\n LinkedNodeList.prototype.removeFirst = function () {\n return this.removeNode(this._first);\n };\n LinkedNodeList.prototype.removeLast = function () {\n return this.removeNode(this._last);\n };\n LinkedNodeList.prototype.removeNode = function (node) {\n if (node == null)\n throw new ArgumentNullException_1.default('node');\n var _ = this;\n var prev = node.previous, next = node.next, a = false, b = false;\n if (prev)\n prev.next = next;\n else if (_._first == node)\n _._first = next;\n else\n a = true;\n if (next)\n next.previous = prev;\n else if (_._last == node)\n _._last = prev;\n else\n b = true;\n if (a !== b) {\n throw new ArgumentException_1.default('node', TextUtility.format(\"Provided node is has no {0} reference but is not the {1} node!\", a ? \"previous\" : \"next\", a ? \"first\" : \"last\"));\n }\n return !a && !b;\n };\n LinkedNodeList.prototype.addNode = function (node) {\n this.addNodeAfter(node);\n };\n LinkedNodeList.prototype.addNodeBefore = function (node, before) {\n assertValidDetached(node);\n var _ = this;\n if (!before) {\n before = _._first;\n }\n if (before) {\n var prev = before.previous;\n node.previous = prev;\n node.next = before;\n before.previous = node;\n if (prev)\n prev.next = node;\n if (before == _._first)\n _._last = node;\n }\n else {\n _._first = _._last = node;\n }\n };\n LinkedNodeList.prototype.addNodeAfter = function (node, after) {\n assertValidDetached(node);\n var _ = this;\n if (!after) {\n after = _._last;\n }\n if (after) {\n var next = after.next;\n node.next = next;\n node.previous = after;\n after.next = node;\n if (next)\n next.previous = node;\n if (after == _._last)\n _._last = node;\n }\n else {\n _._first = _._last = node;\n }\n };\n LinkedNodeList.prototype.replace = function (node, replacement) {\n if (node == null)\n throw new ArgumentNullException_1.default('node');\n assertValidDetached(replacement, 'replacement');\n var _ = this;\n replacement.previous = node.previous;\n replacement.next = node.next;\n if (node.previous)\n node.previous.next = replacement;\n if (node.next)\n node.next.previous = replacement;\n if (node == _._first)\n _._first = replacement;\n if (node == _._last)\n _._last = replacement;\n };\n return LinkedNodeList;\n }());\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.default = LinkedNodeList;\n function assertValidDetached(node, propName) {\n if (propName === void 0) { propName = 'node'; }\n if (node == null)\n throw new ArgumentNullException_1.default(propName);\n if (node.next || node.previous)\n throw new InvalidOperationException_1.default(\"Cannot add a node to a LinkedNodeList that is already linked.\");\n }\n});\n","/*!\r\n * @author electricessence / https://github.com/electricessence/\r\n * Licensing: MIT https://github.com/electricessence/TypeScript.NET/blob/master/LICENSE.md\r\n */\r\n\r\n///\r\n'use strict'; // For compatibility with (let, const, function, class);\r\n\r\nimport * as TextUtility from \"../Text/Utility\";\r\nimport InvalidOperationException from \"../Exceptions/InvalidOperationException\";\r\nimport ArgumentException from \"../Exceptions/ArgumentException\";\r\nimport ArgumentNullException from \"../Exceptions/ArgumentNullException\";\r\n\r\n\r\n/*****************************\r\n * IMPORTANT NOTES ABOUT PERFORMANCE:\r\n * http://jsperf.com/simulating-a-queue\r\n *\r\n * Adding to an array is very fast, but modifying is slow.\r\n * LinkedList wins when modifying contents.\r\n * http://stackoverflow.com/questions/166884/array-versus-linked-list\r\n *****************************/\r\n\r\n/**\r\n * This class is useful for managing a list of linked nodes, but it does not protect against modifying individual links.\r\n * If the consumer modifies a link (sets the previous or next value) it will effectively break the collection.\r\n *\r\n * It is possible to declare a node type of any kind as long as it contains a previous and next value that can reference another node.\r\n * Although not as safe as the included LinkedList, this class has less overhead and is more flexible.\r\n *\r\n * The count (or length) of this LinkedNodeList is not tracked since it could be corrupted at any time.\r\n */\r\nexport default\r\nclass LinkedNodeList>\r\nimplements ILinkedNodeList, IDisposable\r\n{\r\n\r\n\tprivate _first:TNode;\r\n\tprivate _last:TNode;\r\n\r\n\tconstructor()\r\n\t{\r\n\t\tthis._first = null;\r\n\t\tthis._last = null;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * The first node. Will be null if the collection is empty.\r\n\t */\r\n\tget first():TNode\r\n\t{\r\n\t\treturn this._first;\r\n\t}\r\n\r\n\t/**\r\n\t * The last node.\r\n\t */\r\n\tget last():TNode\r\n\t{\r\n\t\treturn this._last;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Iteratively counts the number of linked nodes and returns the value.\r\n\t * @returns {number}\r\n\t */\r\n\tget count():number {\r\n\r\n\t\tvar next = this._first, i:number = 0;\r\n\t\twhile(next)\r\n\t\t{\r\n\t\t\ti++;\r\n\t\t\tnext = next.next;\r\n\t\t}\r\n\r\n\t\treturn i;\r\n\t}\r\n\r\n\tforEach(\r\n\t\taction:Predicate | Action):void\r\n\t{\r\n\t\tvar current:TNode = null,\r\n\t\t next:TNode = this.first, // Be sure to track the next node so if current node is removed.\r\n\t\t index:number = 0;\r\n\r\n\t\tdo {\r\n\t\t\tcurrent = next;\r\n\t\t\tnext = current && current.next;\r\n\t\t}\r\n\t\twhile (current\r\n\t\t\t&& action(current, index++)!==false);\r\n\t}\r\n\r\n\t/**\r\n\t * Erases the linked node's references to each other and returns the number of nodes.\r\n\t * @returns {number}\r\n\t */\r\n\tclear():number\r\n\t{\r\n\t\tvar _ = this, n:TNode, cF:number = 0, cL:number = 0;\r\n\r\n\t\t// First, clear in the forward direction.\r\n\t\tn = _._first;\r\n\t\t_._first = null;\r\n\r\n\t\twhile(n) {\r\n\t\t\tcF++;\r\n\t\t\tlet current = n;\r\n\t\t\tn = n.next;\r\n\t\t\tcurrent.next = null;\r\n\t\t}\r\n\r\n\t\t// Last, clear in the reverse direction.\r\n\t\tn = _._last;\r\n\t\t_._last = null;\r\n\r\n\t\twhile(n) {\r\n\t\t\tcL++;\r\n\t\t\tlet current = n;\r\n\t\t\tn = n.previous;\r\n\t\t\tcurrent.previous = null;\r\n\t\t}\r\n\r\n\t\tif(cF!==cL) console.warn('LinkedNodeList: Forward versus reverse count does not match when clearing. Forward: '+cF+\", Reverse: \"+cL);\r\n\r\n\t\treturn cF;\r\n\t}\r\n\r\n\t/**\r\n\t * Clears the list.\r\n\t */\r\n\tdispose():void\r\n\t{\r\n\t\tthis.clear();\r\n\t}\r\n\r\n\t/**\r\n\t * Iterates the list to see if a node exists.\r\n\t * @param node\r\n\t * @returns {boolean}\r\n\t */\r\n\tcontains(node:TNode):boolean\r\n\t{\r\n\t\treturn this.indexOf(node)!=-1;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Gets the index of a particular node.\r\n\t * @param index\r\n\t */\r\n\tgetNodeAt(index:number):TNode\r\n\t{\r\n\t\tif(index<0)\r\n\t\t\treturn null;\r\n\r\n\t\tvar next = this._first, i:number = 0;\r\n\t\twhile(next && index>(node:TNode, propName:string = 'node') {\r\n\r\n\tif(node==null)\r\n\t\tthrow new ArgumentNullException(propName);\r\n\r\n\tif(node.next || node.previous)\r\n\t\tthrow new InvalidOperationException(\"Cannot add a node to a LinkedNodeList that is already linked.\");\r\n\r\n}"]} \ No newline at end of file diff --git a/package.json b/package.json index 40161268..04b083d6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "typescript-dotnet", - "version": "2.7.0", + "version": "2.7.1", "license": "MIT", "author": "electricessence ", "description": "A JavaScript-Friendly .NET Based TypeScript Library.", diff --git a/source/System/Collections/LinkedList.js b/source/System/Collections/LinkedList.js index 730e2b7b..9a48e1d4 100644 --- a/source/System/Collections/LinkedList.js +++ b/source/System/Collections/LinkedList.js @@ -44,7 +44,7 @@ throw new ArgumentNullException_1.default("Cannot be null."); if (node.list != list) throw new InvalidOperationException_1.default("Provided node does not belong to this list."); - var n = node._node; + var n = node._nodeInternal; if (!n) throw new InvalidOperationException_1.default("Provided node is not valid."); return n; diff --git a/source/System/Collections/LinkedList.js.map b/source/System/Collections/LinkedList.js.map index b9e67122..5bb5a1c9 100644 --- a/source/System/Collections/LinkedList.js.map +++ b/source/System/Collections/LinkedList.js.map @@ -1 +1 @@ -{"version":3,"file":"LinkedList.js","sourceRoot":"","sources":["LinkedList.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"LinkedList.js","sourceRoot":"","sources":["LinkedList.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/source/System/Collections/LinkedList.ts b/source/System/Collections/LinkedList.ts index c9b140bb..aabcbca6 100644 --- a/source/System/Collections/LinkedList.ts +++ b/source/System/Collections/LinkedList.ts @@ -72,7 +72,7 @@ function getInternal(node:ILinkedListNode, list:LinkedList):InternalNod throw new InvalidOperationException( "Provided node does not belong to this list."); - var n:InternalNode = (node)._node; + var n:InternalNode = (node)._nodeInternal; if(!n) throw new InvalidOperationException( "Provided node is not valid.");