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 1356 of file misc.c.
References SCIPsortedvecFindInt().
Referenced by presolveFindDuplicates().
| 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 1679 of file misc.c.
References BMSallocBlockMemory, BMSallocClearBlockMemoryArray, NULL, SCIP_ALLOC, and SCIP_OKAY.
Referenced by presolveFindDuplicates().
| void SCIPmultihashFree | ( | SCIP_MULTIHASH ** | multihash | ) |
frees the multihash table
| multihash | pointer to the multihash table |
Definition at line 1712 of file misc.c.
References SCIP_MultiHash::blkmem, BMSfreeBlockMemory, BMSfreeBlockMemoryArray, SCIP_MultiHash::lists, multihashlistFree(), SCIP_MultiHash::nlists, and NULL.
Referenced by presolveFindDuplicates().
| 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 1743 of file misc.c.
References 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 presolveFindDuplicates(), 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 1784 of file misc.c.
References 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 1803 of file misc.c.
References 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 1832 of file misc.c.
References SCIP_MultiHash::lists, multihashlistRetrieveNext(), SCIP_MultiHash::nlists, NULL, and SCIP_MultiHash::userptr.
Referenced by presolveFindDuplicates().
| 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 1868 of file misc.c.
References 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 1895 of file misc.c.
References SCIP_MultiHash::blkmem, SCIP_MultiHash::lists, multihashlistRemove(), SCIP_MultiHash::nelements, SCIP_MultiHash::nlists, NULL, SCIP_OKAY, and SCIP_MultiHash::userptr.
Referenced by presolveFindDuplicates().
| void SCIPmultihashRemoveAll | ( | SCIP_MULTIHASH * | multihash | ) |
removes all elements of the multihash table
| multihash | multihash table |
Definition at line 1929 of file misc.c.
References SCIP_MultiHash::blkmem, 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 1950 of file misc.c.
References 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 1960 of file misc.c.
References SCIP_MultiHash::nelements, SCIP_MultiHash::nlists, NULL, and SCIP_Real.
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 1970 of file misc.c.
References SCIP_MultiHash::lists, MAX, SCIP_MultiHash::nelements, SCIP_MultiHashList::next, SCIP_MultiHash::nlists, NULL, SCIP_Real, and SCIPmessagePrintInfo().
| SCIP_DECL_HASHKEYEQ | ( | SCIPhashKeyEqString | ) |
| SCIP_DECL_HASHKEYVAL | ( | SCIPhashKeyValString | ) |
| SCIP_DECL_HASHGETKEY | ( | SCIPhashGetKeyStandard | ) |
| SCIP_DECL_HASHKEYEQ | ( | SCIPhashKeyEqPtr | ) |