/**
 * Copyright (c) 2015, Jozef Stefan Institute, Quintelligence d.o.o. and contributors
 * All rights reserved.
 * 
 * This source code is licensed under the FreeBSD license found in the
 * LICENSE file in the root directory of this source tree.
 */

/**
* Hashtable module.
* @module ht
*/

/**
 * Copyright (c) 2015, Jozef Stefan Institute, Quintelligence d.o.o. and contributors
 * All rights reserved.
 *
 * This source code is licensed under the FreeBSD license found in the
 * LICENSE file in the root directory of this source tree.
 */
/**
	* String-string hashmap.
	* @classdesc Used for storing key/data pairs, wraps an efficient C++ implementation.
	* @class
	* @example
	* // create a new hashtable
	* ht = require('qminer').ht;
	* var h = new ht.StrStrMap();
	* // Adding two key/dat pairs
	* h.put('foo', 'bar');
	* h.put('dog', 'tisa');
	* // Getting data
	* h.hasKey('foo'); // returns true
	* h.get('dog'); // returns 'tisa'
	* h.key(1); // returns 'dog'
	* h.dat(1); // returns 'tisa'
	* h.length; // returns 2
	* // Saving and loading:
	* var fs = require('qminer').fs;
	* fout = fs.openWrite('map.dat'); // open write stream
	* h.save(fout).close(); // save and close write stream
	* var h2 = new ht.StrStrMap(); // new empty table
	* var fin = fs.openRead('map.dat'); // open read stream
	* h2.load(fin); // load
	*/
 exports.StrStrMap = function() {}
/**
	* Returns dat given key.
	* @param {string} key - Hashmap key.
	* @returns {string} Hashmap data.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.StrStrMap();
    * // add a key/dat pair
    * h.put('foo', 'bar');
    * // get the newly added data
    * var val = h.get('foo'); // returns 'bar'
	*/
 exports.StrStrMap.prototype.get = function(key) { return ; }
/**
	* Add/update key-value pair.
	* @param {string} key - Hashmap key.
	* @param {string} data - Hashmap data.
	* @returns {module:ht.StrStrMap} Self.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.StrStrMap();
    * // add a key/dat pair
    * h.put('foo', 'bar');
	*/
 exports.StrStrMap.prototype.put = function(key, data) { return this; }
/**
	* Returns true if the map has a given key.
	* @param {string} key - Hashmap key.
	* @returns {boolean} True if the map contains key. Otherwise, false.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.StrStrMap();
    * // add a key/dat pair
    * h.put('foo', 'bar');
    * // check if the hashtable has the key
    * h.hasKey('foo'); // returns true
	*/
 exports.StrStrMap.prototype.hasKey = function(key) { return false; }
/**
    * Number of key/dat pairs. Type `number`.
    * @example
    * // create a new hashtable
	* ht = require('qminer').ht;
	* var h = new ht.StrStrMap();
	* // Adding two key/dat pairs
	* h.put('foo', 'bar');
    * // get the number of key/dat pairs
    * var length = h.length; // returns 1
	*/
 exports.StrStrMap.prototype.length = 0;
/**
	* Returns n-th key.
	* @param {number} n - Hashmap key index number. Should be between 0 and length-1.
	* @returns {string} The n-th key.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.StrStrMap();
    * // add a key/dat pair
    * h.put('foo', 'bar');
    * // get the first key
    * var key = h.key(0); // returns 'foo'
	*/
 exports.StrStrMap.prototype.key = function(n) { return ; }
/**
    * Returns the ID of the key provided as parameter.
    * @param {string} key - Hashmap key.
    * @returns {number} n - Hashmap index number of the key.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.StrStrMap();
    * // add a key/dat pair
    * h.put('foo', 'bar');
    * // get key id of 'foo'
    * var key = h.keyId('foo'); // returns 0
    */
 exports.StrStrMap.prototype.keyId = function(n) { return ; }
/**
	* Returns n-th dat.
	* @param {number} n - Hashmap dat index number. Should be between 0 and length-1.
	* @returns {string} The n-th data value.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.StrStrMap();
    * // add a key/dat pair
    * h.put('foo', 'bar');
    * // get the first dat
    * var key = h.key(0); // returns 'bar'
	*/
 exports.StrStrMap.prototype.dat = function(n) { return ; }
/**
	* Loads the hashtable from input stream.
	* @param {module:fs.FIn} fin - Input stream.
	* @returns {module:ht.StrStrMap} Self.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * var fs = qm.fs;
    * // create a new hashtable
    * var h = new ht.StrStrMap();
    * fout = fs.openWrite('map.dat'); // open write stream
    * h.save(fout).close(); // save and close write stream
    * var fin = fs.openRead('map.dat'); // open read stream
    * var h2 = new ht.StrStrMap();
    * h2.load(fin); // load
	*/
 exports.StrStrMap.prototype.load = function(fin) { return this; }
/**
	* Saves the hashtable to output stream.
	* @param {module:fs.FOut} fout - Output stream.
	* @returns {module:fs.FOut} fout.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * var fs = qm.fs;
    * // create a new hashtable
    * var h = new ht.StrStrMap();
    * fout = fs.openWrite('map.dat'); // open write stream
    * h.save(fout).close(); // save and close write stream
	*/
 exports.StrStrMap.prototype.save = function(fout) { return Object.create(require('qminer').fs.FOut.prototype); }
/**
	* Sorts by keys.
	* @param {boolean} [asc=true] - If true, sorts in ascending order.
	* @returns {module:ht.StrStrMap} Self.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.StrStrMap();
    * h.put('foo', 'bar');
    * h.put('dog', 'tisa');
    * // sort the hashtable by keys
    * h.sortKey();
	*/
 exports.StrStrMap.prototype.sortKey = function(asc) { return this; }
/**
	* Sorts by dat.
	* @param {boolean} [asc=true] - If true, sorts in ascending order.
	* @returns {module:ht.StrStrMap} Self.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.StrStrMap();
    * h.put('foo', 'bar');
    * h.put('dog', 'tisa');
    * // sort the hashtable by dat
    * h.sortDat();
	*/
 exports.StrStrMap.prototype.sortDat = function(asc) { return this; }

/**
 * Copyright (c) 2015, Jozef Stefan Institute, Quintelligence d.o.o. and contributors
 * All rights reserved.
 *
 * This source code is licensed under the FreeBSD license found in the
 * LICENSE file in the root directory of this source tree.
 */
/**
	* String-Integer hashmap.
	* @classdesc Used for storing key/data pairs, wraps an efficient C++ implementation.
	* @class
	* @example
	* // create a new hashtable
	* ht = require('qminer').ht;
	* var h = new ht.StrIntMap();
	* // Adding two key/dat pairs
	* h.put('foo', 10);
	* h.put('bar', 20);
	* // Getting data
	* h.hasKey('foo'); // returns true
	* h.get('bar'); // returns 20
	* h.key(1); // returns 'bar'
	* h.dat(1); // returns 20
	* h.length; // returns 2
	* // Saving and loading:
	* var fs = require('qminer').fs;
	* fout = fs.openWrite('map.dat'); // open write stream
	* h.save(fout).close(); // save and close write stream
	* var h2 = new ht.StrIntMap(); // new empty table
	* var fin = fs.openRead('map.dat'); // open read stream
	* h2.load(fin); // load
	*/
 exports.StrIntMap = function() {}
/**
	* Returns dat given key.
	* @param {string} key - Hashmap key.
	* @returns {number} Hashmap data.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.StrIntMap();
    * // add a key/dat pair
    * h.put('foo', 10);
    * // get the newly added data
    * var val = h.get('foo'); // returns 10
	*/
 exports.StrIntMap.prototype.get = function(key) { return 0; }
/**
	* Add/update key-value pair.
	* @param {string} key - Hashmap key.
	* @param {number} data - Hashmap data.
	* @returns {module:ht.StrIntMap} Self.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.StrIntMap();
    * // add a key/dat pair
    * h.put('foo', 10);
	*/
 exports.StrIntMap.prototype.put = function(key, data) { return this; }
/**
	* Returns true if the map has a given key.
	* @param {string} key - Hashmap key.
	* @returns {boolean} True if the map contains key. Otherwise, false.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.StrIntMap();
    * // add a key/dat pair
    * h.put('foo', 10);
    * // check if the hashtable has the key
    * h.hasKey('foo'); // returns true
	*/
 exports.StrIntMap.prototype.hasKey = function(key) { return false; }
/**
    * Number of key/dat pairs. Type `number`.
    * @example
    * // create a new hashtable
	* ht = require('qminer').ht;
	* var h = new ht.StrIntMap();
	* // Adding two key/dat pairs
	* h.put('foo', 10);
    * // get the number of key/dat pairs
    * var length = h.length; // returns 1
	*/
 exports.StrIntMap.prototype.length = 0;
/**
	* Returns n-th key.
	* @param {number} n - Hashmap key index number. Should be between 0 and length-1.
	* @returns {string} The n-th key.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.StrIntMap();
    * // add a key/dat pair
    * h.put('foo', 10);
    * // get the first key
    * var key = h.key(0); // returns 'foo'
	*/
 exports.StrIntMap.prototype.key = function(n) { return ; }
/**
    * Returns the ID of the key provided as parameter.
    * @param {string} key - Hashmap key.
    * @returns {number} n - Hashmap index number of the key.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.StrIntMap();
    * // add a key/dat pair
    * h.put('foo', 10);
    * // get key id of 'foo'
    * var key = h.keyId('foo'); // returns 0
    */
 exports.StrIntMap.prototype.keyId = function(n) { return ; }
/**
	* Returns n-th dat.
	* @param {number} n - Hashmap dat index number. Should be between 0 and length-1.
	* @returns {number} The n-th data value.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.StrIntMap();
    * // add a key/dat pair
    * h.put('foo', 10);
    * // get the first dat
    * var key = h.key(0); // returns 10
	*/
 exports.StrIntMap.prototype.dat = function(n) { return 0; }
/**
	* Loads the hashtable from input stream.
	* @param {module:fs.FIn} fin - Input stream.
	* @returns {module:ht.StrIntMap} Self.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * var fs = qm.fs;
    * // create a new hashtable
    * var h = new ht.StrIntMap();
    * fout = fs.openWrite('map.dat'); // open write stream
    * h.save(fout).close(); // save and close write stream
    * var fin = fs.openRead('map.dat'); // open read stream
    * var h2 = new ht.StrIntMap();
    * h2.load(fin); // load
	*/
 exports.StrIntMap.prototype.load = function(fin) { return this; }
/**
	* Saves the hashtable to output stream.
	* @param {module:fs.FOut} fout - Output stream.
	* @returns {module:fs.FOut} fout.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * var fs = qm.fs;
    * // create a new hashtable
    * var h = new ht.StrIntMap();
    * fout = fs.openWrite('map.dat'); // open write stream
    * h.save(fout).close(); // save and close write stream
	*/
 exports.StrIntMap.prototype.save = function(fout) { return Object.create(require('qminer').fs.FOut.prototype); }
/**
	* Sorts by keys.
	* @param {boolean} [asc=true] - If true, sorts in ascending order.
	* @returns {module:ht.StrIntMap} Self.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.StrIntMap();
    * h.put('foo', 10);
    * h.put('bar', 20);
    * // sort the hashtable by keys
    * h.sortKey();
	*/
 exports.StrIntMap.prototype.sortKey = function(asc) { return this; }
/**
	* Sorts by dat.
	* @param {boolean} [asc=true] - If true, sorts in ascending order.
	* @returns {module:ht.StrIntMap} Self.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.StrIntMap();
    * h.put('foo', 10);
    * h.put('bar', 20);
    * // sort the hashtable by dat
    * h.sortDat();
	*/
 exports.StrIntMap.prototype.sortDat = function(asc) { return this; }

/**
 * Copyright (c) 2015, Jozef Stefan Institute, Quintelligence d.o.o. and contributors
 * All rights reserved.
 *
 * This source code is licensed under the FreeBSD license found in the
 * LICENSE file in the root directory of this source tree.
 */
/**
	* String-Float hashmap.
	* @classdesc Used for storing key/data pairs, wraps an efficient C++ implementation.
	* @class
	* @example
	* // create a new hashtable
	* ht = require('qminer').ht;
	* var h = new ht.StrFltMap();
	* // Adding two key/dat pairs
	* h.put('foo', 10.5);
	* h.put('bar', 20.2);
	* // Getting data
	* h.hasKey('foo'); // returns true
	* h.get('bar'); // returns 20.2
	* h.key(1); // returns 'bar'
	* h.dat(1); // returns 20.2
	* h.length; // returns 2
	* // Saving and loading:
	* var fs = require('qminer').fs;
	* fout = fs.openWrite('map.dat'); // open write stream
	* h.save(fout).close(); // save and close write stream
	* var h2 = new ht.StrFltMap(); // new empty table
	* var fin = fs.openRead('map.dat'); // open read stream
	* h2.load(fin); // load
	*/
 exports.StrFltMap = function() {}
/**
	* Returns dat given key.
	* @param {string} key - Hashmap key.
	* @returns {number} Hashmap data.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.StrFltMap();
    * // add a key/dat pair
    * h.put('foo', 10.5);
    * // get the newly added data
    * var val = h.get('foo'); // returns 10.5
	*/
 exports.StrFltMap.prototype.get = function(key) { return 0; }
/**
	* Add/update key-value pair.
	* @param {string} key - Hashmap key.
	* @param {number} data - Hashmap data.
	* @returns {module:ht.StrFltMap} Self.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.StrFltMap();
    * // add a key/dat pair
    * h.put('foo', 10.5);
	*/
 exports.StrFltMap.prototype.put = function(key, data) { return this; }
/**
	* Returns true if the map has a given key.
	* @param {string} key - Hashmap key.
	* @returns {boolean} True if the map contains key. Otherwise, false.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.StrFltMap();
    * // add a key/dat pair
    * h.put('foo', 10.5);
    * // check if the hashtable has the key
    * h.hasKey('foo'); // returns true
	*/
 exports.StrFltMap.prototype.hasKey = function(key) { return false; }
/**
    * Number of key/dat pairs. Type `number`.
    * @example
    * // create a new hashtable
	* ht = require('qminer').ht;
	* var h = new ht.StrFltMap();
	* // Adding two key/dat pairs
	* h.put('foo', 10.5);
    * // get the number of key/dat pairs
    * var length = h.length; // returns 1
	*/
 exports.StrFltMap.prototype.length = 0;
/**
	* Returns n-th key.
	* @param {number} n - Hashmap key index number. Should be between 0 and length-1.
	* @returns {string} The n-th key.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.StrFltMap();
    * // add a key/dat pair
    * h.put('foo', 10.5);
    * // get the first key
    * var key = h.key(0); // returns 'foo'
	*/
 exports.StrFltMap.prototype.key = function(n) { return ; }
/**
    * Returns the ID of the key provided as parameter.
    * @param {string} key - Hashmap key.
    * @returns {number} n - Hashmap index number of the key.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.StrFltMap();
    * // add a key/dat pair
    * h.put('foo', 10.5);
    * // get key id of 'foo'
    * var key = h.keyId('foo'); // returns 0
    */
 exports.StrFltMap.prototype.keyId = function(n) { return ; }
/**
	* Returns n-th dat.
	* @param {number} n - Hashmap dat index number. Should be between 0 and length-1.
	* @returns {number} The n-th data value.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.StrFltMap();
    * // add a key/dat pair
    * h.put('foo', 10.5);
    * // get the first dat
    * var key = h.key(0); // returns 10.5
	*/
 exports.StrFltMap.prototype.dat = function(n) { return 0; }
/**
	* Loads the hashtable from input stream.
	* @param {module:fs.FIn} fin - Input stream.
	* @returns {module:ht.StrFltMap} Self.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * var fs = qm.fs;
    * // create a new hashtable
    * var h = new ht.StrFltMap();
    * fout = fs.openWrite('map.dat'); // open write stream
    * h.save(fout).close(); // save and close write stream
    * var fin = fs.openRead('map.dat'); // open read stream
    * var h2 = new ht.StrFltMap();
    * h2.load(fin); // load
	*/
 exports.StrFltMap.prototype.load = function(fin) { return this; }
/**
	* Saves the hashtable to output stream.
	* @param {module:fs.FOut} fout - Output stream.
	* @returns {module:fs.FOut} fout.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * var fs = qm.fs;
    * // create a new hashtable
    * var h = new ht.StrFltMap();
    * fout = fs.openWrite('map.dat'); // open write stream
    * h.save(fout).close(); // save and close write stream
	*/
 exports.StrFltMap.prototype.save = function(fout) { return Object.create(require('qminer').fs.FOut.prototype); }
/**
	* Sorts by keys.
	* @param {boolean} [asc=true] - If true, sorts in ascending order.
	* @returns {module:ht.StrFltMap} Self.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.StrFltMap();
    * h.put('foo', 10.5);
    * h.put('bar', 20.2);
    * // sort the hashtable by keys
    * h.sortKey();
	*/
 exports.StrFltMap.prototype.sortKey = function(asc) { return this; }
/**
	* Sorts by dat.
	* @param {boolean} [asc=true] - If true, sorts in ascending order.
	* @returns {module:ht.StrFltMap} Self.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.StrFltMap();
    * h.put('foo', 10.5);
    * h.put('bar', 20.2);
    * // sort the hashtable by dat
    * h.sortDat();
	*/
 exports.StrFltMap.prototype.sortDat = function(asc) { return this; }

/**
 * Copyright (c) 2015, Jozef Stefan Institute, Quintelligence d.o.o. and contributors
 * All rights reserved.
 *
 * This source code is licensed under the FreeBSD license found in the
 * LICENSE file in the root directory of this source tree.
 */
/**
	* Int-string hashmap.
	* @classdesc Used for storing key/data pairs, wraps an efficient C++ implementation.
	* @class
	* @example
	* // create a new hashtable
	* ht = require('qminer').ht;
	* var h = new ht.IntStrMap();
	* // Adding two key/dat pairs
	* h.put(10, 'foo');
	* h.put(20, 'bar');
	* // Getting data
	* h.hasKey(10); // returns true
	* h.get(20); // returns 'bar'
	* h.key(1); // returns 20
	* h.dat(1); // returns 'bar'
	* h.length; // returns 2
	* // Saving and loading:
	* var fs = require('qminer').fs;
	* fout = fs.openWrite('map.dat'); // open write stream
	* h.save(fout).close(); // save and close write stream
	* var h2 = new ht.IntStrMap(); // new empty table
	* var fin = fs.openRead('map.dat'); // open read stream
	* h2.load(fin); // load
	*/
 exports.IntStrMap = function() {}
/**
	* Returns dat given key.
	* @param {number} key - Hashmap key.
	* @returns {string} Hashmap data.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.IntStrMap();
    * // add a key/dat pair
    * h.put(10, 'foo');
    * // get the newly added data
    * var val = h.get(10); // returns 'foo'
	*/
 exports.IntStrMap.prototype.get = function(key) { return ; }
/**
	* Add/update key-value pair.
	* @param {number} key - Hashmap key.
	* @param {string} data - Hashmap data.
	* @returns {module:ht.IntStrMap} Self.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.IntStrMap();
    * // add a key/dat pair
    * h.put(10, 'foo');
	*/
 exports.IntStrMap.prototype.put = function(key, data) { return this; }
/**
	* Returns true if the map has a given key.
	* @param {number} key - Hashmap key.
	* @returns {boolean} True if the map contains key. Otherwise, false.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.IntStrMap();
    * // add a key/dat pair
    * h.put(10, 'foo');
    * // check if the hashtable has the key
    * h.hasKey(10); // returns true
	*/
 exports.IntStrMap.prototype.hasKey = function(key) { return false; }
/**
    * Number of key/dat pairs. Type `number`.
    * @example
    * // create a new hashtable
	* ht = require('qminer').ht;
	* var h = new ht.IntStrMap();
	* // Adding two key/dat pairs
	* h.put(10, 'foo');
    * // get the number of key/dat pairs
    * var length = h.length; // returns 1
	*/
 exports.IntStrMap.prototype.length = 0;
/**
	* Returns n-th key.
	* @param {number} n - Hashmap key index number. Should be between 0 and length-1.
	* @returns {number} The n-th key.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.IntStrMap();
    * // add a key/dat pair
    * h.put(10, 'foo');
    * // get the first key
    * var key = h.key(0); // returns 10
	*/
 exports.IntStrMap.prototype.key = function(n) { return 0; }
/**
    * Returns the ID of the key provided as parameter.
    * @param {number} key - Hashmap key.
    * @returns {number} n - Hashmap index number of the key.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.IntStrMap();
    * // add a key/dat pair
    * h.put(10, 'foo');
    * // get key id of 10
    * var key = h.keyId(10); // returns 0
    */
 exports.IntStrMap.prototype.keyId = function(n) { return 0; }
/**
	* Returns n-th dat.
	* @param {number} n - Hashmap dat index number. Should be between 0 and length-1.
	* @returns {string} The n-th data value.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.IntStrMap();
    * // add a key/dat pair
    * h.put(10, 'foo');
    * // get the first dat
    * var key = h.key(0); // returns 'foo'
	*/
 exports.IntStrMap.prototype.dat = function(n) { return ; }
/**
	* Loads the hashtable from input stream.
	* @param {module:fs.FIn} fin - Input stream.
	* @returns {module:ht.IntStrMap} Self.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * var fs = qm.fs;
    * // create a new hashtable
    * var h = new ht.IntStrMap();
    * fout = fs.openWrite('map.dat'); // open write stream
    * h.save(fout).close(); // save and close write stream
    * var fin = fs.openRead('map.dat'); // open read stream
    * var h2 = new ht.IntStrMap();
    * h2.load(fin); // load
	*/
 exports.IntStrMap.prototype.load = function(fin) { return this; }
/**
	* Saves the hashtable to output stream.
	* @param {module:fs.FOut} fout - Output stream.
	* @returns {module:fs.FOut} fout.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * var fs = qm.fs;
    * // create a new hashtable
    * var h = new ht.IntStrMap();
    * fout = fs.openWrite('map.dat'); // open write stream
    * h.save(fout).close(); // save and close write stream
	*/
 exports.IntStrMap.prototype.save = function(fout) { return Object.create(require('qminer').fs.FOut.prototype); }
/**
	* Sorts by keys.
	* @param {boolean} [asc=true] - If true, sorts in ascending order.
	* @returns {module:ht.IntStrMap} Self.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.IntStrMap();
    * h.put(10, 'foo');
    * h.put(20, 'bar');
    * // sort the hashtable by keys
    * h.sortKey();
	*/
 exports.IntStrMap.prototype.sortKey = function(asc) { return this; }
/**
	* Sorts by dat.
	* @param {boolean} [asc=true] - If true, sorts in ascending order.
	* @returns {module:ht.IntStrMap} Self.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.IntStrMap();
    * h.put(10, 'foo');
    * h.put(20, 'bar');
    * // sort the hashtable by dat
    * h.sortDat();
	*/
 exports.IntStrMap.prototype.sortDat = function(asc) { return this; }

/**
 * Copyright (c) 2015, Jozef Stefan Institute, Quintelligence d.o.o. and contributors
 * All rights reserved.
 *
 * This source code is licensed under the FreeBSD license found in the
 * LICENSE file in the root directory of this source tree.
 */
/**
	* Integer-Integer hashmap.
	* @classdesc Used for storing key/data pairs, wraps an efficient C++ implementation.
	* @class
	* @example
	* // create a new hashtable
	* ht = require('qminer').ht;
	* var h = new ht.IntIntMap();
	* // Adding two key/dat pairs
	* h.put(5, 10);
	* h.put(15, 20);
	* // Getting data
	* h.hasKey(5); // returns true
	* h.get(15); // returns 20
	* h.key(1); // returns 15
	* h.dat(1); // returns 20
	* h.length; // returns 2
	* // Saving and loading:
	* var fs = require('qminer').fs;
	* fout = fs.openWrite('map.dat'); // open write stream
	* h.save(fout).close(); // save and close write stream
	* var h2 = new ht.IntIntMap(); // new empty table
	* var fin = fs.openRead('map.dat'); // open read stream
	* h2.load(fin); // load
	*/
 exports.IntIntMap = function() {}
/**
	* Returns dat given key.
	* @param {number} key - Hashmap key.
	* @returns {number} Hashmap data.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.IntIntMap();
    * // add a key/dat pair
    * h.put(5, 10);
    * // get the newly added data
    * var val = h.get(5); // returns 10
	*/
 exports.IntIntMap.prototype.get = function(key) { return 0; }
/**
	* Add/update key-value pair.
	* @param {number} key - Hashmap key.
	* @param {number} data - Hashmap data.
	* @returns {module:ht.IntIntMap} Self.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.IntIntMap();
    * // add a key/dat pair
    * h.put(5, 10);
	*/
 exports.IntIntMap.prototype.put = function(key, data) { return this; }
/**
	* Returns true if the map has a given key.
	* @param {number} key - Hashmap key.
	* @returns {boolean} True if the map contains key. Otherwise, false.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.IntIntMap();
    * // add a key/dat pair
    * h.put(5, 10);
    * // check if the hashtable has the key
    * h.hasKey(5); // returns true
	*/
 exports.IntIntMap.prototype.hasKey = function(key) { return false; }
/**
    * Number of key/dat pairs. Type `number`.
    * @example
    * // create a new hashtable
	* ht = require('qminer').ht;
	* var h = new ht.IntIntMap();
	* // Adding two key/dat pairs
	* h.put(5, 10);
    * // get the number of key/dat pairs
    * var length = h.length; // returns 1
	*/
 exports.IntIntMap.prototype.length = 0;
/**
	* Returns n-th key.
	* @param {number} n - Hashmap key index number. Should be between 0 and length-1.
	* @returns {number} The n-th key.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.IntIntMap();
    * // add a key/dat pair
    * h.put(5, 10);
    * // get the first key
    * var key = h.key(0); // returns 5
	*/
 exports.IntIntMap.prototype.key = function(n) { return 0; }
/**
    * Returns the ID of the key provided as parameter.
    * @param {number} key - Hashmap key.
    * @returns {number} n - Hashmap index number of the key.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.IntIntMap();
    * // add a key/dat pair
    * h.put(5, 10);
    * // get key id of 5
    * var key = h.keyId(5); // returns 0
    */
 exports.IntIntMap.prototype.keyId = function(n) { return 0; }
/**
	* Returns n-th dat.
	* @param {number} n - Hashmap dat index number. Should be between 0 and length-1.
	* @returns {number} The n-th data value.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.IntIntMap();
    * // add a key/dat pair
    * h.put(5, 10);
    * // get the first dat
    * var key = h.key(0); // returns 10
	*/
 exports.IntIntMap.prototype.dat = function(n) { return 0; }
/**
	* Loads the hashtable from input stream.
	* @param {module:fs.FIn} fin - Input stream.
	* @returns {module:ht.IntIntMap} Self.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * var fs = qm.fs;
    * // create a new hashtable
    * var h = new ht.IntIntMap();
    * fout = fs.openWrite('map.dat'); // open write stream
    * h.save(fout).close(); // save and close write stream
    * var fin = fs.openRead('map.dat'); // open read stream
    * var h2 = new ht.IntIntMap();
    * h2.load(fin); // load
	*/
 exports.IntIntMap.prototype.load = function(fin) { return this; }
/**
	* Saves the hashtable to output stream.
	* @param {module:fs.FOut} fout - Output stream.
	* @returns {module:fs.FOut} fout.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * var fs = qm.fs;
    * // create a new hashtable
    * var h = new ht.IntIntMap();
    * fout = fs.openWrite('map.dat'); // open write stream
    * h.save(fout).close(); // save and close write stream
	*/
 exports.IntIntMap.prototype.save = function(fout) { return Object.create(require('qminer').fs.FOut.prototype); }
/**
	* Sorts by keys.
	* @param {boolean} [asc=true] - If true, sorts in ascending order.
	* @returns {module:ht.IntIntMap} Self.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.IntIntMap();
    * h.put(5, 10);
    * h.put(15, 20);
    * // sort the hashtable by keys
    * h.sortKey();
	*/
 exports.IntIntMap.prototype.sortKey = function(asc) { return this; }
/**
	* Sorts by dat.
	* @param {boolean} [asc=true] - If true, sorts in ascending order.
	* @returns {module:ht.IntIntMap} Self.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.IntIntMap();
    * h.put(5, 10);
    * h.put(15, 20);
    * // sort the hashtable by dat
    * h.sortDat();
	*/
 exports.IntIntMap.prototype.sortDat = function(asc) { return this; }

/**
 * Copyright (c) 2015, Jozef Stefan Institute, Quintelligence d.o.o. and contributors
 * All rights reserved.
 *
 * This source code is licensed under the FreeBSD license found in the
 * LICENSE file in the root directory of this source tree.
 */
/**
	* Integer-Float hashmap.
	* @classdesc Used for storing key/data pairs, wraps an efficient C++ implementation.
	* @class
	* @example
	* // create a new hashtable
	* ht = require('qminer').ht;
	* var h = new ht.IntFltMap();
	* // Adding two key/dat pairs
	* h.put(5, 10.5);
	* h.put(15, 20.2);
	* // Getting data
	* h.hasKey(5); // returns true
	* h.get(15); // returns 20.2
	* h.key(1); // returns 15
	* h.dat(1); // returns 20.2
	* h.length; // returns 2
	* // Saving and loading:
	* var fs = require('qminer').fs;
	* fout = fs.openWrite('map.dat'); // open write stream
	* h.save(fout).close(); // save and close write stream
	* var h2 = new ht.IntFltMap(); // new empty table
	* var fin = fs.openRead('map.dat'); // open read stream
	* h2.load(fin); // load
	*/
 exports.IntFltMap = function() {}
/**
	* Returns dat given key.
	* @param {number} key - Hashmap key.
	* @returns {number} Hashmap data.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.IntFltMap();
    * // add a key/dat pair
    * h.put(5, 10.5);
    * // get the newly added data
    * var val = h.get(5); // returns 10.5
	*/
 exports.IntFltMap.prototype.get = function(key) { return 0; }
/**
	* Add/update key-value pair.
	* @param {number} key - Hashmap key.
	* @param {number} data - Hashmap data.
	* @returns {module:ht.IntFltMap} Self.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.IntFltMap();
    * // add a key/dat pair
    * h.put(5, 10.5);
	*/
 exports.IntFltMap.prototype.put = function(key, data) { return this; }
/**
	* Returns true if the map has a given key.
	* @param {number} key - Hashmap key.
	* @returns {boolean} True if the map contains key. Otherwise, false.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.IntFltMap();
    * // add a key/dat pair
    * h.put(5, 10.5);
    * // check if the hashtable has the key
    * h.hasKey(5); // returns true
	*/
 exports.IntFltMap.prototype.hasKey = function(key) { return false; }
/**
    * Number of key/dat pairs. Type `number`.
    * @example
    * // create a new hashtable
	* ht = require('qminer').ht;
	* var h = new ht.IntFltMap();
	* // Adding two key/dat pairs
	* h.put(5, 10.5);
    * // get the number of key/dat pairs
    * var length = h.length; // returns 1
	*/
 exports.IntFltMap.prototype.length = 0;
/**
	* Returns n-th key.
	* @param {number} n - Hashmap key index number. Should be between 0 and length-1.
	* @returns {number} The n-th key.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.IntFltMap();
    * // add a key/dat pair
    * h.put(5, 10.5);
    * // get the first key
    * var key = h.key(0); // returns 5
	*/
 exports.IntFltMap.prototype.key = function(n) { return 0; }
/**
    * Returns the ID of the key provided as parameter.
    * @param {number} key - Hashmap key.
    * @returns {number} n - Hashmap index number of the key.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.IntFltMap();
    * // add a key/dat pair
    * h.put(5, 10.5);
    * // get key id of 5
    * var key = h.keyId(5); // returns 0
    */
 exports.IntFltMap.prototype.keyId = function(n) { return 0; }
/**
	* Returns n-th dat.
	* @param {number} n - Hashmap dat index number. Should be between 0 and length-1.
	* @returns {number} The n-th data value.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.IntFltMap();
    * // add a key/dat pair
    * h.put(5, 10.5);
    * // get the first dat
    * var key = h.key(0); // returns 10.5
	*/
 exports.IntFltMap.prototype.dat = function(n) { return 0; }
/**
	* Loads the hashtable from input stream.
	* @param {module:fs.FIn} fin - Input stream.
	* @returns {module:ht.IntFltMap} Self.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * var fs = qm.fs;
    * // create a new hashtable
    * var h = new ht.IntFltMap();
    * fout = fs.openWrite('map.dat'); // open write stream
    * h.save(fout).close(); // save and close write stream
    * var fin = fs.openRead('map.dat'); // open read stream
    * var h2 = new ht.IntFltMap();
    * h2.load(fin); // load
	*/
 exports.IntFltMap.prototype.load = function(fin) { return this; }
/**
	* Saves the hashtable to output stream.
	* @param {module:fs.FOut} fout - Output stream.
	* @returns {module:fs.FOut} fout.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * var fs = qm.fs;
    * // create a new hashtable
    * var h = new ht.IntFltMap();
    * fout = fs.openWrite('map.dat'); // open write stream
    * h.save(fout).close(); // save and close write stream
	*/
 exports.IntFltMap.prototype.save = function(fout) { return Object.create(require('qminer').fs.FOut.prototype); }
/**
	* Sorts by keys.
	* @param {boolean} [asc=true] - If true, sorts in ascending order.
	* @returns {module:ht.IntFltMap} Self.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.IntFltMap();
    * h.put(5, 10.5);
    * h.put(15, 20.2);
    * // sort the hashtable by keys
    * h.sortKey();
	*/
 exports.IntFltMap.prototype.sortKey = function(asc) { return this; }
/**
	* Sorts by dat.
	* @param {boolean} [asc=true] - If true, sorts in ascending order.
	* @returns {module:ht.IntFltMap} Self.
    * @example
    * // import modules
    * var qm = require('qminer');
    * var ht = qm.ht;
    * // create a new hashtable
    * var h = new ht.IntFltMap();
    * h.put(5, 10.5);
    * h.put(15, 20.2);
    * // sort the hashtable by dat
    * h.sortDat();
	*/
 exports.IntFltMap.prototype.sortDat = function(asc) { return this; }



   /**
	* classDesc	
	* @returns {string} desc - Returns class description
	*/
exports.StrStrMap.prototype.classDesc = function () { return 'This class wraps a C++ string-string hash table'; }