hash table that resolves conflicts by queueing, thereby allowing for duplicate entries
| int SCIPcalcMultihashSize | ( | int | minsize | ) |
returns a reasonable hash table size (a prime number) that is at least as large as the specified value
| minsize | minimal size of the hash table |
Definition at line 1637 of file misc.c.
References assert(), primetable, primetablesize, and SCIPsortedvecFindInt().
| SCIP_RETCODE SCIPmultihashCreate | ( | SCIP_MULTIHASH ** | multihash, |
| BMS_BLKMEM * | blkmem, | ||
| int | tablesize, | ||
| SCIP_DECL_HASHGETKEY((*hashgetkey)) | , | ||
| SCIP_DECL_HASHKEYEQ((*hashkeyeq)) | , | ||
| SCIP_DECL_HASHKEYVAL((*hashkeyval)) | , | ||
| void * | userptr ) |
creates a multihash table
| multihash | pointer to store the created multihash table |
| blkmem | block memory used to store multihash table entries |
| tablesize | size of the hash table |
| userptr | user pointer |
Definition at line 1960 of file misc.c.
References assert(), BMSallocBlockMemory, BMSallocClearBlockMemoryArray, NULL, SCIP_ALLOC, and SCIP_OKAY.
Referenced by SCIPreplaceCommonSubexpressions().
| void SCIPmultihashFree | ( | SCIP_MULTIHASH ** | multihash | ) |
frees the multihash table
| multihash | pointer to the multihash table |
Definition at line 1993 of file misc.c.
References assert(), SCIP_MultiHash::blkmem, BMSfreeBlockMemory, BMSfreeBlockMemoryArray, i, SCIP_MultiHash::lists, multihashlistFree(), SCIP_MultiHash::nlists, and NULL.
Referenced by SCIPreplaceCommonSubexpressions().
| SCIP_RETCODE SCIPmultihashInsert | ( | SCIP_MULTIHASH * | multihash, |
| void * | element ) |
inserts element in multihash table (multiple inserts of same element possible)
| multihash | multihash table |
| element | element to insert into the table |
Definition at line 2024 of file misc.c.
References assert(), SCIP_MultiHash::blkmem, SCIP_MultiHash::lists, multihashlistAppend(), multihashResize(), SCIP_MultiHash::nelements, SCIP_MultiHash::nlists, NULL, SCIP_CALL, SCIP_MULTIHASH_RESIZE_PERCENTAGE, SCIP_OKAY, SCIPmultihashGetLoad(), and SCIP_MultiHash::userptr.
Referenced by findEqualExpr(), and SCIPmultihashSafeInsert().
| SCIP_RETCODE SCIPmultihashSafeInsert | ( | SCIP_MULTIHASH * | multihash, |
| void * | element ) |
inserts element in multihash table (multiple insertion of same element is checked and results in an error)
| multihash | multihash table |
| element | element to insert into the table |
Definition at line 2065 of file misc.c.
References assert(), NULL, SCIP_CALL, SCIP_KEYALREADYEXISTING, SCIP_OKAY, SCIPmultihashInsert(), SCIPmultihashRetrieve(), and SCIP_MultiHash::userptr.
| void * SCIPmultihashRetrieve | ( | SCIP_MULTIHASH * | multihash, |
| void * | key ) |
retrieve element with key from multihash table, returns NULL if not existing
| multihash | multihash table |
| key | key to retrieve |
Definition at line 2084 of file misc.c.
References assert(), SCIP_MultiHash::lists, multihashlistRetrieve(), SCIP_MultiHash::nlists, NULL, and SCIP_MultiHash::userptr.
Referenced by SCIPmultihashSafeInsert().
| void * SCIPmultihashRetrieveNext | ( | SCIP_MULTIHASH * | multihash, |
| SCIP_MULTIHASHLIST ** | multihashlist, | ||
| void * | key ) |
retrieve element with key from multihash table, returns NULL if not existing can be used to retrieve all entries with the same key (one-by-one)
| multihash | multihash table |
| multihashlist | input: entry in hash table list from which to start searching, or NULL output: entry in hash table list corresponding to element after retrieved one, or NULL |
| key | key to retrieve |
Definition at line 2113 of file misc.c.
References assert(), SCIP_MultiHash::lists, multihashlistRetrieveNext(), SCIP_MultiHash::nlists, NULL, and SCIP_MultiHash::userptr.
Referenced by findEqualExpr().
| SCIP_Bool SCIPmultihashExists | ( | SCIP_MULTIHASH * | multihash, |
| void * | element ) |
returns whether the given element exists in the multihash table
| multihash | multihash table |
| element | element to search in the table |
Definition at line 2149 of file misc.c.
References assert(), SCIP_MultiHash::lists, multihashlistFind(), SCIP_MultiHash::nlists, NULL, and SCIP_MultiHash::userptr.
| SCIP_RETCODE SCIPmultihashRemove | ( | SCIP_MULTIHASH * | multihash, |
| void * | element ) |
removes element from the multihash table, if it exists
| multihash | multihash table |
| element | element to remove from the table |
Definition at line 2176 of file misc.c.
References assert(), SCIP_MultiHash::blkmem, SCIP_MultiHash::lists, multihashlistRemove(), SCIP_MultiHash::nelements, SCIP_MultiHash::nlists, NULL, SCIP_OKAY, and SCIP_MultiHash::userptr.
| void SCIPmultihashRemoveAll | ( | SCIP_MULTIHASH * | multihash | ) |
removes all elements of the multihash table
| multihash | multihash table |
Definition at line 2210 of file misc.c.
References assert(), SCIP_MultiHash::blkmem, i, SCIP_MultiHash::lists, multihashlistFree(), SCIP_MultiHash::nelements, SCIP_MultiHash::nlists, and NULL.
Referenced by multihashResize().
| SCIP_Longint SCIPmultihashGetNElements | ( | SCIP_MULTIHASH * | multihash | ) |
returns number of multihash table elements
| multihash | multihash table |
Definition at line 2231 of file misc.c.
References assert(), SCIP_MultiHash::nelements, and NULL.
| SCIP_Real SCIPmultihashGetLoad | ( | SCIP_MULTIHASH * | multihash | ) |
returns the load of the given multihash table in percentage
| multihash | multihash table |
Definition at line 2241 of file misc.c.
References assert(), SCIP_MultiHash::nelements, SCIP_MultiHash::nlists, and NULL.
Referenced by multihashResize(), and SCIPmultihashInsert().
| void SCIPmultihashPrintStatistics | ( | SCIP_MULTIHASH * | multihash, |
| SCIP_MESSAGEHDLR * | messagehdlr ) |
prints statistics about multihash table usage
| multihash | multihash table |
| messagehdlr | message handler |
Definition at line 2251 of file misc.c.
References assert(), i, SCIP_MultiHash::lists, MAX, SCIP_MultiHash::nelements, SCIP_MultiHashList::next, SCIP_MultiHash::nlists, NULL, SCIP_LONGINT_FORMAT, SCIP_UNUSED, and SCIPmessagePrintInfo().
| SCIP_DECL_HASHKEYEQ | ( | SCIPhashKeyEqString | ) |
| SCIP_DECL_HASHKEYVAL | ( | SCIPhashKeyValString | ) |
| SCIP_DECL_HASHGETKEY | ( | SCIPhashGetKeyStandard | ) |
| SCIP_DECL_HASHKEYEQ | ( | SCIPhashKeyEqPtr | ) |