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(), and SCIPrealHashCode().
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(), and SCIPrealHashCode().
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(), and SCIPrealHashCode().
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(), SCIPmultihashSafeInsert(), and SCIPrealHashCode().
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.
Referenced by SCIPrealHashCode().
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(), and SCIPrealHashCode().
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(), and SCIPrealHashCode().
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.
Referenced by SCIPrealHashCode().
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(), and SCIPrealHashCode().
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(), and SCIPrealHashCode().
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.
Referenced by SCIPrealHashCode().
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(), SCIPmultihashInsert(), and SCIPrealHashCode().
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().
Referenced by SCIPrealHashCode().
SCIP_DECL_HASHKEYEQ | ( | SCIPhashKeyEqString | ) |
standard hash key comparator for string keys
returns TRUE iff both keys (i.e. strings) are equal
Definition at line 2531 of file misc.c.
Referenced by SCIPrealHashCode().
SCIP_DECL_HASHKEYVAL | ( | SCIPhashKeyValString | ) |
standard hashing function for string keys
returns the hash value of the key (i.e. string)
Definition at line 2540 of file misc.c.
Referenced by SCIPrealHashCode().
SCIP_DECL_HASHGETKEY | ( | SCIPhashGetKeyStandard | ) |
gets the element as the key
Definition at line 2559 of file misc.c.
Referenced by SCIPrealHashCode().
SCIP_DECL_HASHKEYEQ | ( | SCIPhashKeyEqPtr | ) |