예제 #1
0
파일: swld.cpp 프로젝트: swordxx/swordxx
bool SWLD::hasEntry(SWKey const * key_) const {
    auto const keyText = key_->getText();
    if (m_strongsPadding) {
        auto const buf(strongsPadBuf(keyText.c_str()));
        return buf.get() == getKeyForEntry(getEntryForKey(buf.get()));
    } else {
        return keyText == getKeyForEntry(getEntryForKey(keyText.c_str()));
    }
}
예제 #2
0
unsigned *
SNAPHashTable::SlowLookup(unsigned key)
{
    Entry *entry = getEntryForKey(key);

    if (NULL == entry || entry->value1 == 0xffffffff) {
        return NULL;
    }

    return &entry->value1;
}
예제 #3
0
파일: HashTable.cpp 프로젝트: gdtm86/snapr
    SNAPHashTable::ValueType * 
SNAPHashTable::SlowLookup(KeyType key)
{
    void *entry = getEntryForKey(key);

    if (NULL == entry || doesEntryHaveInvalidValue(entry)) {
        return NULL;
    }

    return (ValueType *)entry;
}
예제 #4
0
파일: HashTable.cpp 프로젝트: gdtm86/snapr
    bool 
SNAPHashTable::Insert(KeyType key, ValueType *data)
{
    void *entry = getEntryForKey(key);

    if (NULL == entry) {
        return false;
    }

    setKey(entry, key);
    for (unsigned i = 0; i < valueCount; i++) {
        memcpy((char *)entry + i * valueSizeInBytes, &data[i], valueSizeInBytes);   // Assumes little endian
    }

    return true;
}
예제 #5
0
bool
SNAPHashTable::Insert(unsigned key, const unsigned *data)
{
    _ASSERT(data[0] != 0xffffffff); // This is the unused value that represents an empty hash table.  You can't use it.

    Entry *entry = getEntryForKey(key);
    if (NULL == entry) {
        return false;
    }

    if (entry->key != key) {
        _ASSERT(entry->key == 0);
        entry->key = key;
        usedElementCount++;
    }

    entry->value1 = data[0];
    entry->value2 = data[1];

    return true;
}