xref: /freebsd/contrib/ofed/libibnetdisc/g_hash_table.cpp (revision 656371d7c1cb2eddc7f7d7746c58ca345ca1b625)
1d6b92ffaSHans Petter Selasky /*
2d6b92ffaSHans Petter Selasky  * Copyright (c) 2017 Mellanox Technologies LTD.  All rights reserved.
3d6b92ffaSHans Petter Selasky  *
4d6b92ffaSHans Petter Selasky  * This software is available to you under a choice of one of two
5d6b92ffaSHans Petter Selasky  * licenses.  You may choose to be licensed under the terms of the GNU
6d6b92ffaSHans Petter Selasky  * General Public License (GPL) Version 2, available from the file
7d6b92ffaSHans Petter Selasky  * COPYING in the main directory of this source tree, or the
8d6b92ffaSHans Petter Selasky  * OpenIB.org BSD license below:
9d6b92ffaSHans Petter Selasky  *
10d6b92ffaSHans Petter Selasky  *     Redistribution and use in source and binary forms, with or
11d6b92ffaSHans Petter Selasky  *     without modification, are permitted provided that the following
12d6b92ffaSHans Petter Selasky  *     conditions are met:
13d6b92ffaSHans Petter Selasky  *
14d6b92ffaSHans Petter Selasky  *      - Redistributions of source code must retain the above
15d6b92ffaSHans Petter Selasky  *        copyright notice, this list of conditions and the following
16d6b92ffaSHans Petter Selasky  *        disclaimer.
17d6b92ffaSHans Petter Selasky  *
18d6b92ffaSHans Petter Selasky  *      - Redistributions in binary form must reproduce the above
19d6b92ffaSHans Petter Selasky  *        copyright notice, this list of conditions and the following
20d6b92ffaSHans Petter Selasky  *        disclaimer in the documentation and/or other materials
21d6b92ffaSHans Petter Selasky  *        provided with the distribution.
22d6b92ffaSHans Petter Selasky  *
23d6b92ffaSHans Petter Selasky  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24d6b92ffaSHans Petter Selasky  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25d6b92ffaSHans Petter Selasky  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26d6b92ffaSHans Petter Selasky  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
27d6b92ffaSHans Petter Selasky  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
28d6b92ffaSHans Petter Selasky  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
29d6b92ffaSHans Petter Selasky  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
30d6b92ffaSHans Petter Selasky  * SOFTWARE.
31d6b92ffaSHans Petter Selasky  *
32d6b92ffaSHans Petter Selasky  */
33d6b92ffaSHans Petter Selasky 
34*656371d7SHans Petter Selasky #if __cplusplus >= 201103L
35d6b92ffaSHans Petter Selasky #include <unordered_map>
36*656371d7SHans Petter Selasky #define	UM_NAMESPACE std
370b12d33cSHans Petter Selasky #else
380b12d33cSHans Petter Selasky #include <tr1/unordered_map>
39*656371d7SHans Petter Selasky #define	UM_NAMESPACE std::tr1
400b12d33cSHans Petter Selasky #endif
41d6b92ffaSHans Petter Selasky 
42d6b92ffaSHans Petter Selasky class HashTable {
43d6b92ffaSHans Petter Selasky public:
44*656371d7SHans Petter Selasky 	UM_NAMESPACE::unordered_map<void *, void *> map;
HashTable()45d6b92ffaSHans Petter Selasky 	HashTable() { };
~HashTable()46d6b92ffaSHans Petter Selasky 	~HashTable() { };
47d6b92ffaSHans Petter Selasky };
48d6b92ffaSHans Petter Selasky 
49d6b92ffaSHans Petter Selasky extern "C" {
50d6b92ffaSHans Petter Selasky 
51d6b92ffaSHans Petter Selasky #if HAVE_CONFIG_H
52d6b92ffaSHans Petter Selasky #include <config.h>
53d6b92ffaSHans Petter Selasky #endif
54d6b92ffaSHans Petter Selasky 
55d6b92ffaSHans Petter Selasky #include "internal.h"
56d6b92ffaSHans Petter Selasky 
57d6b92ffaSHans Petter Selasky GHashTable *
GHashTableNew(void)58d6b92ffaSHans Petter Selasky GHashTableNew(void)
59d6b92ffaSHans Petter Selasky {
60d6b92ffaSHans Petter Selasky 	return ((GHashTable *)(new HashTable()));
61d6b92ffaSHans Petter Selasky }
62d6b92ffaSHans Petter Selasky 
63d6b92ffaSHans Petter Selasky void
GHashTableDestroy(GHashTable * ght)64d6b92ffaSHans Petter Selasky GHashTableDestroy(GHashTable *ght)
65d6b92ffaSHans Petter Selasky {
66d6b92ffaSHans Petter Selasky 	delete (HashTable *)ght;
67d6b92ffaSHans Petter Selasky }
68d6b92ffaSHans Petter Selasky 
69d6b92ffaSHans Petter Selasky void
GHashTableInsert(GHashTable * ght,void * key,void * value)70d6b92ffaSHans Petter Selasky GHashTableInsert(GHashTable *ght, void *key, void *value)
71d6b92ffaSHans Petter Selasky {
72d6b92ffaSHans Petter Selasky 	HashTable *ht = (HashTable *)ght;
73d6b92ffaSHans Petter Selasky 	ht->map[key] = value;
74d6b92ffaSHans Petter Selasky }
75d6b92ffaSHans Petter Selasky 
76d6b92ffaSHans Petter Selasky void *
GHashTableLookup(GHashTable * ght,void * key)77d6b92ffaSHans Petter Selasky GHashTableLookup(GHashTable *ght, void *key)
78d6b92ffaSHans Petter Selasky {
79d6b92ffaSHans Petter Selasky 	HashTable *ht = (HashTable *)ght;
80d6b92ffaSHans Petter Selasky 
81d6b92ffaSHans Petter Selasky 	if (ht->map.find(key) == ht->map.end())
82d6b92ffaSHans Petter Selasky 		return (NULL);
83d6b92ffaSHans Petter Selasky 	return (ht->map[key]);
84d6b92ffaSHans Petter Selasky }
85d6b92ffaSHans Petter Selasky 
86d6b92ffaSHans Petter Selasky }
87