/* || || @file HashMap.h || @version 1.0 Beta || @author Alexander Brevig || @contact alexanderbrevig@gmail.com || || @description || | This library provides a simple interface for storing data with an associate key || # || || @license || | This library is free software; you can redistribute it and/or || | modify it under the terms of the GNU Lesser General Public || | License as published by the Free Software Foundation; version || | 2.1 of the License. || | || | This library is distributed in the hope that it will be useful, || | but WITHOUT ANY WARRANTY; without even the implied warranty of || | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU || | Lesser General Public License for more details. || | || | You should have received a copy of the GNU Lesser General Public || | License along with this library; if not, write to the Free Software || | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA || # || */ #ifndef HASHMAP_H #define HASHMAP_H #include "Arduino.h" /* Handle association */ template class HashType { public: HashType(){ reset(); } HashType(hash code,map value):hashCode(code),mappedValue(value){} void reset(){ hashCode = 0; mappedValue = 0; } hash getHash(){ return hashCode; } void setHash(hash code){ hashCode = code; } map getValue(){ return mappedValue; } void setValue(map value){ mappedValue = value; } HashType& operator()(hash code, map value){ setHash( code ); setValue( value ); } private: hash hashCode; map mappedValue; }; /* Handle indexing and searches TODO - extend API */ template class HashMap { public: HashMap(HashType* newMap,byte newSize){ hashMap = newMap; size = newSize; for (byte i=0; i& operator[](int x){ //TODO - bounds return hashMap[x]; } byte getIndexOf( hash key ){ for (byte i=0; i* hashMap; byte size; }; #endif /* || @changelog || | 1.0 2009-07-13 - Alexander Brevig : Initial Release || # */