Thu, 30 Oct 2025 19:26:47 +0100
add tests for cxListDifference() - resolves #751
| 549 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 1 | /* | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 2 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 3 | * | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 4 | * Copyright 2021 Mike Becker, Olaf Wintermann All rights reserved. | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 5 | * | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 6 | * Redistribution and use in source and binary forms, with or without | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 7 | * modification, are permitted provided that the following conditions are met: | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 8 | * | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 9 | * 1. Redistributions of source code must retain the above copyright | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 10 | * notice, this list of conditions and the following disclaimer. | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 11 | * | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 12 | * 2. Redistributions in binary form must reproduce the above copyright | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 13 | * notice, this list of conditions and the following disclaimer in the | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 14 | * documentation and/or other materials provided with the distribution. | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 15 | * | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 16 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 17 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 18 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 19 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 20 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 25 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 26 | * POSSIBILITY OF SUCH DAMAGE. | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 27 | */ | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 28 | /** | 
| 1095 
a5b0e47fc7de
refine docs for hash_map.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 29 | * @file hash_map.h | 
| 
a5b0e47fc7de
refine docs for hash_map.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 30 | * @brief Hash map implementation. | 
| 
a5b0e47fc7de
refine docs for hash_map.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 31 | * @author Mike Becker | 
| 
a5b0e47fc7de
refine docs for hash_map.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 32 | * @author Olaf Wintermann | 
| 
a5b0e47fc7de
refine docs for hash_map.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 33 | * @copyright 2-Clause BSD License | 
| 549 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 34 | */ | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 35 | |
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 36 | #ifndef UCX_HASH_MAP_H | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 37 | #define UCX_HASH_MAP_H | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 38 | |
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 39 | #include "map.h" | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 40 | |
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 41 | #ifdef __cplusplus | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 42 | extern "C" { | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 43 | #endif | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 44 | |
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 45 | /** Internal structure for an element of a hash map. */ | 
| 658 
56c62780582e
make hashmap store objects instead of pointers by default - fixes #239
 Mike Becker <universe@uap-core.de> parents: 
563diff
changeset | 46 | struct cx_hash_map_element_s; | 
| 549 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 47 | |
| 550 
89b2a83728b1
#189 basic map implementation
 Mike Becker <universe@uap-core.de> parents: 
549diff
changeset | 48 | /** | 
| 
89b2a83728b1
#189 basic map implementation
 Mike Becker <universe@uap-core.de> parents: 
549diff
changeset | 49 | * Internal structure for a hash map. | 
| 
89b2a83728b1
#189 basic map implementation
 Mike Becker <universe@uap-core.de> parents: 
549diff
changeset | 50 | */ | 
| 
89b2a83728b1
#189 basic map implementation
 Mike Becker <universe@uap-core.de> parents: 
549diff
changeset | 51 | struct cx_hash_map_s { | 
| 
89b2a83728b1
#189 basic map implementation
 Mike Becker <universe@uap-core.de> parents: 
549diff
changeset | 52 | /** | 
| 
89b2a83728b1
#189 basic map implementation
 Mike Becker <universe@uap-core.de> parents: 
549diff
changeset | 53 | * Base structure for maps. | 
| 
89b2a83728b1
#189 basic map implementation
 Mike Becker <universe@uap-core.de> parents: 
549diff
changeset | 54 | */ | 
| 
89b2a83728b1
#189 basic map implementation
 Mike Becker <universe@uap-core.de> parents: 
549diff
changeset | 55 | struct cx_map_s base; | 
| 
89b2a83728b1
#189 basic map implementation
 Mike Becker <universe@uap-core.de> parents: 
549diff
changeset | 56 | /** | 
| 
89b2a83728b1
#189 basic map implementation
 Mike Becker <universe@uap-core.de> parents: 
549diff
changeset | 57 | * The buckets of this map, each containing a linked list of elements. | 
| 
89b2a83728b1
#189 basic map implementation
 Mike Becker <universe@uap-core.de> parents: 
549diff
changeset | 58 | */ | 
| 
89b2a83728b1
#189 basic map implementation
 Mike Becker <universe@uap-core.de> parents: 
549diff
changeset | 59 | struct cx_hash_map_element_s **buckets; | 
| 
89b2a83728b1
#189 basic map implementation
 Mike Becker <universe@uap-core.de> parents: 
549diff
changeset | 60 | /** | 
| 
89b2a83728b1
#189 basic map implementation
 Mike Becker <universe@uap-core.de> parents: 
549diff
changeset | 61 | * The number of buckets. | 
| 
89b2a83728b1
#189 basic map implementation
 Mike Becker <universe@uap-core.de> parents: 
549diff
changeset | 62 | */ | 
| 
89b2a83728b1
#189 basic map implementation
 Mike Becker <universe@uap-core.de> parents: 
549diff
changeset | 63 | size_t bucket_count; | 
| 
89b2a83728b1
#189 basic map implementation
 Mike Becker <universe@uap-core.de> parents: 
549diff
changeset | 64 | }; | 
| 
89b2a83728b1
#189 basic map implementation
 Mike Becker <universe@uap-core.de> parents: 
549diff
changeset | 65 | |
| 549 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 66 | |
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 67 | /** | 
| 550 
89b2a83728b1
#189 basic map implementation
 Mike Becker <universe@uap-core.de> parents: 
549diff
changeset | 68 | * Creates a new hash map with the specified number of buckets. | 
| 
89b2a83728b1
#189 basic map implementation
 Mike Becker <universe@uap-core.de> parents: 
549diff
changeset | 69 | * | 
| 1095 
a5b0e47fc7de
refine docs for hash_map.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 70 | * If @p buckets is zero, an implementation defined default will be used. | 
| 550 
89b2a83728b1
#189 basic map implementation
 Mike Becker <universe@uap-core.de> parents: 
549diff
changeset | 71 | * | 
| 1111 
78eeeb950883
remove API for changing the store_pointer property after list creation
 Mike Becker <universe@uap-core.de> parents: 
1095diff
changeset | 72 | * If @p elem_size is #CX_STORE_POINTERS, the created map stores pointers instead of | 
| 
78eeeb950883
remove API for changing the store_pointer property after list creation
 Mike Becker <universe@uap-core.de> parents: 
1095diff
changeset | 73 | * copies of the added elements. | 
| 669 
dce9b8450656
add docs for CX_STORE_POINTERS and remove cxHashMapCreateForPointers()
 Mike Becker <universe@uap-core.de> parents: 
658diff
changeset | 74 | * | 
| 559 
8603709932b9
corrects documentation of iterator behavior
 Mike Becker <universe@uap-core.de> parents: 
550diff
changeset | 75 | * @note Iterators provided by this hash map implementation provide the remove operation. | 
| 1424 
563033aa998c
fixes tons of typos and grammar issues across the documentation - fixes #667
 Mike Becker <universe@uap-core.de> parents: 
1318diff
changeset | 76 | * The index value of an iterator is incremented when the iterator advanced without | 
| 
563033aa998c
fixes tons of typos and grammar issues across the documentation - fixes #667
 Mike Becker <universe@uap-core.de> parents: 
1318diff
changeset | 77 | * removing an entry. | 
| 1095 
a5b0e47fc7de
refine docs for hash_map.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 78 | * In other words, when the iterator is finished, @c index==size . | 
| 549 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 79 | * | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 80 | * @param allocator the allocator to use | 
| 1318 
12fa1d37fe48
allow changing the cxDefaultAllocator - resolves #669
 Mike Becker <universe@uap-core.de> parents: 
1180diff
changeset | 81 | * (if @c NULL, the cxDefaultAllocator will be used) | 
| 658 
56c62780582e
make hashmap store objects instead of pointers by default - fixes #239
 Mike Becker <universe@uap-core.de> parents: 
563diff
changeset | 82 | * @param itemsize the size of one element | 
| 549 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 83 | * @param buckets the initial number of buckets in this hash map | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 84 | * @return a pointer to the new hash map | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 85 | */ | 
| 1426 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 Mike Becker <universe@uap-core.de> parents: 
1424diff
changeset | 86 | cx_attr_nodiscard cx_attr_malloc cx_attr_dealloc(cxMapFree, 1) | 
| 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 Mike Becker <universe@uap-core.de> parents: 
1424diff
changeset | 87 | CX_EXPORT CxMap *cxHashMapCreate(const CxAllocator *allocator, | 
| 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 Mike Becker <universe@uap-core.de> parents: 
1424diff
changeset | 88 | size_t itemsize, size_t buckets); | 
| 549 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 89 | |
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 90 | /** | 
| 696 
1ba4ec2e7a89
add cxHashMapCreateSimple()
 Mike Becker <universe@uap-core.de> parents: 
691diff
changeset | 91 | * Creates a new hash map with a default number of buckets. | 
| 
1ba4ec2e7a89
add cxHashMapCreateSimple()
 Mike Becker <universe@uap-core.de> parents: 
691diff
changeset | 92 | * | 
| 1111 
78eeeb950883
remove API for changing the store_pointer property after list creation
 Mike Becker <universe@uap-core.de> parents: 
1095diff
changeset | 93 | * If @p elem_size is #CX_STORE_POINTERS, the created map stores pointers instead of | 
| 
78eeeb950883
remove API for changing the store_pointer property after list creation
 Mike Becker <universe@uap-core.de> parents: 
1095diff
changeset | 94 | * copies of the added elements. | 
| 696 
1ba4ec2e7a89
add cxHashMapCreateSimple()
 Mike Becker <universe@uap-core.de> parents: 
691diff
changeset | 95 | * | 
| 
1ba4ec2e7a89
add cxHashMapCreateSimple()
 Mike Becker <universe@uap-core.de> parents: 
691diff
changeset | 96 | * @note Iterators provided by this hash map implementation provide the remove operation. | 
| 1424 
563033aa998c
fixes tons of typos and grammar issues across the documentation - fixes #667
 Mike Becker <universe@uap-core.de> parents: 
1318diff
changeset | 97 | * The index value of an iterator is incremented when the iterator advanced without | 
| 
563033aa998c
fixes tons of typos and grammar issues across the documentation - fixes #667
 Mike Becker <universe@uap-core.de> parents: 
1318diff
changeset | 98 | * removing an entry. | 
| 1095 
a5b0e47fc7de
refine docs for hash_map.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 99 | * In other words, when the iterator is finished, @c index==size . | 
| 696 
1ba4ec2e7a89
add cxHashMapCreateSimple()
 Mike Becker <universe@uap-core.de> parents: 
691diff
changeset | 100 | * | 
| 1095 
a5b0e47fc7de
refine docs for hash_map.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 101 | * @param itemsize (@c size_t) the size of one element | 
| 
a5b0e47fc7de
refine docs for hash_map.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 102 | * @return (@c CxMap*) a pointer to the new hash map | 
| 696 
1ba4ec2e7a89
add cxHashMapCreateSimple()
 Mike Becker <universe@uap-core.de> parents: 
691diff
changeset | 103 | */ | 
| 1095 
a5b0e47fc7de
refine docs for hash_map.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 104 | #define cxHashMapCreateSimple(itemsize) cxHashMapCreate(NULL, itemsize, 0) | 
| 696 
1ba4ec2e7a89
add cxHashMapCreateSimple()
 Mike Becker <universe@uap-core.de> parents: 
691diff
changeset | 105 | |
| 
1ba4ec2e7a89
add cxHashMapCreateSimple()
 Mike Becker <universe@uap-core.de> parents: 
691diff
changeset | 106 | /** | 
| 549 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 107 | * Increases the number of buckets, if necessary. | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 108 | * | 
| 1095 
a5b0e47fc7de
refine docs for hash_map.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 109 | * The load threshold is @c 0.75*buckets. If the element count exceeds the load | 
| 1424 
563033aa998c
fixes tons of typos and grammar issues across the documentation - fixes #667
 Mike Becker <universe@uap-core.de> parents: 
1318diff
changeset | 110 | * threshold, the map will be rehashed. Otherwise, no action is performed, and | 
| 549 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 111 | * this function simply returns 0. | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 112 | * | 
| 1424 
563033aa998c
fixes tons of typos and grammar issues across the documentation - fixes #667
 Mike Becker <universe@uap-core.de> parents: 
1318diff
changeset | 113 | * The rehashing process ensures that the number of buckets is at least | 
| 562 
fd3368c20413
#189 #199 implement and test map rehash
 Mike Becker <universe@uap-core.de> parents: 
559diff
changeset | 114 | * 2.5 times the element count. So there is enough room for additional | 
| 549 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 115 | * elements without the need of another soon rehashing. | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 116 | * | 
| 562 
fd3368c20413
#189 #199 implement and test map rehash
 Mike Becker <universe@uap-core.de> parents: 
559diff
changeset | 117 | * You can use this function after filling a map to increase access performance. | 
| 549 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 118 | * | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 119 | * @note If the specified map is not a hash map, the behavior is undefined. | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 120 | * | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 121 | * @param map the map to rehash | 
| 1095 
a5b0e47fc7de
refine docs for hash_map.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 122 | * @retval zero success | 
| 
a5b0e47fc7de
refine docs for hash_map.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
993diff
changeset | 123 | * @retval non-zero if a memory allocation error occurred | 
| 549 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 124 | */ | 
| 985 
68754c7de906
major refactoring of attributes
 Mike Becker <universe@uap-core.de> parents: 
890diff
changeset | 125 | cx_attr_nonnull | 
| 1426 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 Mike Becker <universe@uap-core.de> parents: 
1424diff
changeset | 126 | CX_EXPORT int cxMapRehash(CxMap *map); | 
| 549 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 127 | |
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 128 | |
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 129 | #ifdef __cplusplus | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 130 | } // extern "C" | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 131 | #endif | 
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 132 | |
| 
d7f0b5a9a985
#189 declare basic map functions
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 133 | #endif // UCX_HASH_MAP_H |