folly/folly/hash/SpookyHashV1.cpp

/*
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// Spooky Hash
// A 128-bit noncryptographic hash, for checksums and table lookup
// By Bob Jenkins.  Public domain.
//   Oct 31 2010: published framework, disclaimer ShortHash isn't right
//   Nov 7 2010: disabled ShortHash
//   Oct 31 2011: replace End, ShortMix, ShortEnd, enable ShortHash again
//   April 10 2012: buffer overflow on platforms without unaligned reads
//   July 12 2012: was passing out variables in final to in/out in short
//   July 30 2012: I reintroduced the buffer overflow

#include <folly/hash/SpookyHashV1.h>

#include <cstring>

#include <folly/CppAttributes.h>

#define ALLOW_UNALIGNED_READS

namespace folly {
namespace hash {

// clang-format off

//
// short hash ... it could be used on any message,
// but it's used by Spooky just for short messages.
//
void SpookyHashV1::Short(
    const void* message,
    size_t length,
    uint64_t *hash1,
    uint64_t *hash2)
{}




// do the whole hash in one call
void SpookyHashV1::Hash128(
    const void *message,
    size_t length,
    uint64_t *hash1,
    uint64_t *hash2)
{}



// init spooky state
void SpookyHashV1::Init(uint64_t seed1, uint64_t seed2)
{}


// add a message fragment to the state
void SpookyHashV1::Update(const void *message, size_t length)
{}


// report the hash for the concatenation of all message fragments so far
void SpookyHashV1::Final(uint64_t *hash1, uint64_t *hash2)
{}

// clang-format on

} // namespace hash
} // namespace folly