UNPKG

starling-framework

Version:

A fast, productive library for 2D cross-platform development.

172 lines (154 loc) 3.02 kB
// Class: List var $global = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this $global.Object.defineProperty(exports, "__esModule", {value: true}); var __map_reserved = {}; // Imports var $hxClasses = require("./hxClasses_stub").default; var $import = require("./import_stub").default; function _$List_ListNode() {return require("./_List/ListNode");} function _$List_ListIterator() {return require("./_List/ListIterator");} function StringBuf() {return require("./StringBuf");} function Std() {return require("./Std");} // Constructor var List = function() { this.length = 0; } // Meta List.__name__ = ["List"]; List.prototype = { add: function(item) { var x = new (_$List_ListNode().default)(item,null); if(this.h == null) { this.h = x; } else { this.q.next = x; } this.q = x; this.length++; }, push: function(item) { var x = new (_$List_ListNode().default)(item,this.h); this.h = x; if(this.q == null) { this.q = x; } this.length++; }, first: function() { if(this.h == null) { return null; } else { return this.h.item; } }, last: function() { if(this.q == null) { return null; } else { return this.q.item; } }, pop: function() { if(this.h == null) { return null; } var x = this.h.item; this.h = this.h.next; if(this.h == null) { this.q = null; } this.length--; return x; }, isEmpty: function() { return this.h == null; }, clear: function() { this.h = null; this.q = null; this.length = 0; }, remove: function(v) { var prev = null; var l = this.h; while(l != null) { if(l.item == v) { if(prev == null) { this.h = l.next; } else { prev.next = l.next; } if(this.q == l) { this.q = prev; } this.length--; return true; } prev = l; l = l.next; } return false; }, iterator: function() { return new (_$List_ListIterator().default)(this.h); }, toString: function() { var s = new (StringBuf().default)(); var first = true; var l = this.h; s.add("{"); while(l != null) { if(first) { first = false; } else { s.add(", "); } s.add((Std().default).string(l.item)); l = l.next; } s.add("}"); return s.toString(); }, join: function(sep) { var s = new (StringBuf().default)(); var first = true; var l = this.h; while(l != null) { if(first) { first = false; } else { s.add(sep); } s.add(l.item); l = l.next; } return s.toString(); }, filter: function(f) { var l2 = new List(); var l = this.h; while(l != null) { var v = l.item; l = l.next; if(f(v)) { l2.add(v); } } return l2; }, map: function(f) { var b = new List(); var l = this.h; while(l != null) { var v = l.item; l = l.next; b.add(f(v)); } return b; } }; List.prototype.__class__ = List.prototype.constructor = $hxClasses["List"] = List; // Init // Statics // Export exports.default = List;