#ifndef HIGHWAYHASH_HIGHWAYHASH_TARGET_H_
#define HIGHWAYHASH_HIGHWAYHASH_TARGET_H_
#include "highwayhash/arch_specific.h"
#include "highwayhash/compiler_specific.h"
#include "highwayhash/hh_types.h"
namespace highwayhash {
template <TargetBits Target> struct HighwayHash {
void operator()(const HHKey &key, const char *HH_RESTRICT bytes,
const size_t size, HHResult64 *HH_RESTRICT hash) const;
void operator()(const HHKey &key, const char *HH_RESTRICT bytes,
const size_t size, HHResult128 *HH_RESTRICT hash) const;
void operator()(const HHKey &key, const char *HH_RESTRICT bytes,
const size_t size, HHResult256 *HH_RESTRICT hash) const;
};
struct StringView {
const char *data; size_t num_bytes; };
template <TargetBits Target> struct HighwayHashCat {
void operator()(const HHKey &key, const StringView *HH_RESTRICT fragments,
const size_t num_fragments,
HHResult64 *HH_RESTRICT hash) const;
void operator()(const HHKey &key, const StringView *HH_RESTRICT fragments,
const size_t num_fragments,
HHResult128 *HH_RESTRICT hash) const;
void operator()(const HHKey &key, const StringView *HH_RESTRICT fragments,
const size_t num_fragments,
HHResult256 *HH_RESTRICT hash) const;
};
}
#endif