1e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly/*-------------------------------------------------------------------------- 261a2c6a19dbd06a317a419623020e02056661876Praveen ChavanCopyright (c) 2010-2011, 2013, The Linux Foundation. All rights reserved. 3e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 4e7273837b521d16f87dd5fb6eea3750a51ea92daNick PellyRedistribution and use in source and binary forms, with or without 5e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pellymodification, are permitted provided that the following conditions are met: 6e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly * Redistributions of source code must retain the above copyright 7e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly notice, this list of conditions and the following disclaimer. 8e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly * Redistributions in binary form must reproduce the above copyright 9e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly notice, this list of conditions and the following disclaimer in the 10e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly documentation and/or other materials provided with the distribution. 116eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal * Neither the name of The Linux Foundation nor 12e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly the names of its contributors may be used to endorse or promote 13e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly products derived from this software without specific prior written 14e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly permission. 15e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 16e7273837b521d16f87dd5fb6eea3750a51ea92daNick PellyTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17e7273837b521d16f87dd5fb6eea3750a51ea92daNick PellyAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18e7273837b521d16f87dd5fb6eea3750a51ea92daNick PellyIMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19e7273837b521d16f87dd5fb6eea3750a51ea92daNick PellyNON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 20e7273837b521d16f87dd5fb6eea3750a51ea92daNick PellyCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 21e7273837b521d16f87dd5fb6eea3750a51ea92daNick PellyEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 22e7273837b521d16f87dd5fb6eea3750a51ea92daNick PellyPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 23e7273837b521d16f87dd5fb6eea3750a51ea92daNick PellyOR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 24e7273837b521d16f87dd5fb6eea3750a51ea92daNick PellyWHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 25e7273837b521d16f87dd5fb6eea3750a51ea92daNick PellyOTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 26e7273837b521d16f87dd5fb6eea3750a51ea92daNick PellyADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly--------------------------------------------------------------------------*/ 28e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#ifndef _MAP_H_ 29e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#define _MAP_H_ 30e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 31e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#include <stdio.h> 32e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pellyusing namespace std; 33e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 34e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pellytemplate <typename T,typename T2> 35e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pellyclass Map 36e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly{ 3761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan struct node { 38e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly T data; 39e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly T2 data2; 40e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly node* prev; 41e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly node* next; 42e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly node(T t, T2 t2,node* p, node* n) : 4361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan data(t), data2(t2), prev(p), next(n) {} 44e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly }; 45e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly node* head; 46e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly node* tail; 47e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly node* tmp; 48e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly unsigned size_of_list; 49e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly static Map<T,T2> *m_self; 5061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan public: 51e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly Map() : head( NULL ), tail ( NULL ),tmp(head),size_of_list(0) {} 5261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool empty() const { 5361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return ( !head || !tail ); 5461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 5561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan operator bool() const { 5661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return !empty(); 5761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 58e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly void insert(T,T2); 59e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly void show(); 60e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly int size(); 61e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly T2 find(T); // Return VALUE 62e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly T find_ele(T);// Check if the KEY is present or not 63e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly T2 begin(); //give the first ele 64e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly bool erase(T); 65e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly bool eraseall(); 66e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly bool isempty(); 6761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ~Map() { 6861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan while (head) { 69e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly node* temp(head); 70e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly head=head->next; 71e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly size_of_list--; 72e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly delete temp; 73e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly } 74e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly } 75e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly}; 76e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 7761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan template <typename T,typename T2> 78e7273837b521d16f87dd5fb6eea3750a51ea92daNick PellyT2 Map<T,T2>::find(T d1) 79e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly{ 80e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly tmp = head; 8161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 8261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan while (tmp) { 8361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (tmp->data == d1) { 84e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly return tmp->data2; 85e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly } 8661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 87e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly tmp = tmp->next; 88e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly } 8961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 90e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly return 0; 91e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly} 92e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 9361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan template <typename T,typename T2> 94e7273837b521d16f87dd5fb6eea3750a51ea92daNick PellyT Map<T,T2>::find_ele(T d1) 95e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly{ 96e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly tmp = head; 9761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 9861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan while (tmp) { 9961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (tmp->data == d1) { 100e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly return tmp->data; 101e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly } 10261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 103e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly tmp = tmp->next; 104e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly } 10561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 106e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly return 0; 107e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly} 108e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 10961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan template <typename T,typename T2> 110e7273837b521d16f87dd5fb6eea3750a51ea92daNick PellyT2 Map<T,T2>::begin() 111e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly{ 112e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly tmp = head; 11361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 11461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (tmp) { 115e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly return (tmp->data2); 116e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly } 11761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 118e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly return 0; 119e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly} 120e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 12161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan template <typename T,typename T2> 122e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pellyvoid Map<T,T2>::show() 123e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly{ 124e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly tmp = head; 12561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 12661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan while (tmp) { 127e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly printf("%d-->%d\n",tmp->data,tmp->data2); 128e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly tmp = tmp->next; 129e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly } 130e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly} 131e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 13261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan template <typename T,typename T2> 133e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pellyint Map<T,T2>::size() 134e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly{ 135e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly int count =0; 136e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly tmp = head; 13761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 13861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan while (tmp) { 139e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly tmp = tmp->next; 140e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly count++; 141e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly } 14261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 143e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly return count; 144e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly} 145e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 14661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan template <typename T,typename T2> 147e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pellyvoid Map<T,T2>::insert(T data, T2 data2) 148e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly{ 149e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly tail = new node(data, data2,tail, NULL); 15061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 15161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if ( tail->prev ) 152e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly tail->prev->next = tail; 153e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 15461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if ( empty() ) { 155e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly head = tail; 156e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly tmp=head; 157e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly } 15861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 159e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly tmp = head; 160e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly size_of_list++; 161e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly} 162e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 16361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan template <typename T,typename T2> 164e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pellybool Map<T,T2>::erase(T d) 165e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly{ 166e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly bool found = false; 167e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly tmp = head; 168e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly node* prevnode = tmp; 169e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly node *tempnode; 170e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 17161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan while (tmp) { 17261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if ((head == tail) && (head->data == d)) { 17361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan found = true; 17461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan tempnode = head; 17561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan head = tail = NULL; 17661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan delete tempnode; 17761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 178e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly } 17961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 18061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if ((tmp ==head) && (tmp->data ==d)) { 181e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly found = true; 182e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly tempnode = tmp; 183e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly tmp = tmp->next; 184e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly tmp->prev = NULL; 185e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly head = tmp; 186e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly tempnode->next = NULL; 187e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly delete tempnode; 188e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly break; 189e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly } 19061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 19161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if ((tmp == tail) && (tmp->data ==d)) { 192e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly found = true; 193e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly tempnode = tmp; 194e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly prevnode->next = NULL; 195e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly tmp->prev = NULL; 196e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly tail = prevnode; 197e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly delete tempnode; 198e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly break; 199e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly } 20061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 20161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (tmp->data == d) { 202e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly found = true; 203e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly prevnode->next = tmp->next; 204e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly tmp->next->prev = prevnode->next; 205e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly tempnode = tmp; 206e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly //tmp = tmp->next; 207e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly delete tempnode; 208e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly break; 209e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly } 21061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 211e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly prevnode = tmp; 212e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly tmp = tmp->next; 213e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly } 21461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 21561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (found)size_of_list--; 21661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 217e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly return found; 218e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly} 219e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 22061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan template <typename T,typename T2> 221e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pellybool Map<T,T2>::eraseall() 222e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly{ 223e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly node *tempnode; 224e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly tmp = head; 22561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 22661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan while (head) { 22761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan tempnode = head; 22861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan tempnode->next = NULL; 22961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan head = head->next; 23061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan delete tempnode; 231e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly } 23261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 233e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly tail = head = NULL; 234e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly return true; 235e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly} 236e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 237e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 23861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan template <typename T,typename T2> 239e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pellybool Map<T,T2>::isempty() 240e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly{ 24161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (!size_of_list) return true; 242e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly else return false; 243e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly} 244e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 245e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#endif // _MAP_H_ 246