/** * Copyright (c) 2006-2015, JGraph Ltd * Copyright (c) 2006-2015, Gaudenz Alder */ /** * Class: mxDictionary * * A wrapper class for an associative array with object keys. Note: This * implementation uses to turn object keys into strings. * * Constructor: mxEventSource * * Constructs a new dictionary which allows object to be used as keys. */ function mxDictionary() { this.clear(); }; /** * Function: map * * Stores the (key, value) pairs in this dictionary. */ mxDictionary.prototype.map = null; /** * Function: clear * * Clears the dictionary. */ mxDictionary.prototype.clear = function() { this.map = {}; }; /** * Function: get * * Returns the value for the given key. */ mxDictionary.prototype.get = function(key) { var id = mxObjectIdentity.get(key); return this.map[id]; }; /** * Function: put * * Stores the value under the given key and returns the previous * value for that key. */ mxDictionary.prototype.put = function(key, value) { var id = mxObjectIdentity.get(key); var previous = this.map[id]; this.map[id] = value; return previous; }; /** * Function: remove * * Removes the value for the given key and returns the value that * has been removed. */ mxDictionary.prototype.remove = function(key) { var id = mxObjectIdentity.get(key); var previous = this.map[id]; delete this.map[id]; return previous; }; /** * Function: getKeys * * Returns all keys as an array. */ mxDictionary.prototype.getKeys = function() { var result = []; for (var key in this.map) { result.push(key); } return result; }; /** * Function: getValues * * Returns all values as an array. */ mxDictionary.prototype.getValues = function() { var result = []; for (var key in this.map) { result.push(this.map[key]); } return result; }; /** * Function: visit * * Visits all entries in the dictionary using the given function with the * following signature: function(key, value) where key is a string and * value is an object. * * Parameters: * * visitor - A function that takes the key and value as arguments. */ mxDictionary.prototype.visit = function(visitor) { for (var key in this.map) { visitor(key, this.map[key]); } };