    /**
     * 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'; }