4 #include <unordered_map>
7 #ifndef JODA_HASHPROVIDER_H
8 #define JODA_HASHPROVIDER_H
15 std::string v =
"[JODA]Nullval";
16 hash_combine(hash, v);
21 hash_combine(hash, b);
26 hash_combine(hash, i);
31 hash_combine(hash, i);
36 hash_combine(hash, i);
41 hash_combine(hash, i);
46 hash_combine(hash, d);
50 bool RawNumber(
const Ch *str, rapidjson::SizeType length,
bool copy) {
51 hash_combine(hash, std::string(str, length));
55 bool String(
const Ch *str, rapidjson::SizeType length,
bool copy) {
56 hash_combine(hash, std::string(str, length));
62 bool Key(
const Ch *str, rapidjson::SizeType length,
bool copy) {
63 hash_combine(hash, std::string(str, length));
77 constexpr
bool EndArray(rapidjson::SizeType elementCount) {
94 inline void hash_combine(std::size_t &seed, T
const &v) {
96 seed ^= hasher(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
105 static constexpr
auto name =
"HASH";
110 accepter.
Accept(json, alloc, handler);
115 if (ptr ==
nullptr)
return RJValue();
117 ptr->Accept(handler);
122 if (vo ==
nullptr)
return RJValue();
rapidjson::MemoryPoolAllocator< RJBaseAlloc > RJMemoryPoolAlloc
Definition: RJFwd.h:26
rapidjson::GenericValue< RJChar, RJMemoryPoolAlloc > RJValue
Definition: RJFwd.h:29
Definition: RapidJsonDocument.h:22
Definition: VirtualObject.h:13
bool Accept(Handler &handler) const
Definition: VirtualObject.h:74
Definition: UnaryPointerAcceptProvider.h:25
Definition: ValueAccepter.h:16
bool Accept(const RapidJsonDocument &json, RJMemoryPoolAlloc &alloc, Handler &h) const
Definition: ValueAccepter.h:32
Definition: HashProvider.h:100
static RJValue accept(const RapidJsonDocument &json, RJMemoryPoolAlloc &alloc, const ValueAccepter &accepter)
Definition: HashProvider.h:107
static constexpr IValueType inType
Definition: HashProvider.h:103
static constexpr IValueType retType
Definition: HashProvider.h:102
static RJValue virtualObject(const VirtualObject *vo)
Definition: HashProvider.h:121
static constexpr bool acceptAll
Definition: HashProvider.h:104
static constexpr auto name
Definition: HashProvider.h:105
static RJValue pointer(const RJValue *ptr)
Definition: HashProvider.h:114
Definition: HashProvider.h:10
char Ch
Definition: HashProvider.h:12
bool Bool(bool b)
Definition: HashProvider.h:20
constexpr bool EndArray(rapidjson::SizeType elementCount)
Definition: HashProvider.h:77
bool StartObject()
Definition: HashProvider.h:60
bool RawNumber(const Ch *str, rapidjson::SizeType length, bool copy)
Definition: HashProvider.h:50
bool Null()
Definition: HashProvider.h:14
bool EndObject(rapidjson::SizeType memberCount)
Definition: HashProvider.h:67
bool Key(const Ch *str, rapidjson::SizeType length, bool copy)
Definition: HashProvider.h:62
constexpr bool StartArray()
Definition: HashProvider.h:72
bool String(const Ch *str, rapidjson::SizeType length, bool copy)
Definition: HashProvider.h:55
bool Int64(int64_t i)
Definition: HashProvider.h:35
bool Uint(unsigned i)
Definition: HashProvider.h:30
bool Uint64(uint64_t i)
Definition: HashProvider.h:40
bool Double(double d)
Definition: HashProvider.h:45
void reset()
Definition: HashProvider.h:84
size_t getHash() const
Definition: HashProvider.h:82
bool Int(int i)
Definition: HashProvider.h:25
Definition: HashProvider.h:9
Definition: AttributeStatAggregator.h:12
IValueType
Definition: IValueProvider.h:33
@ IV_Number
Definition: IValueProvider.h:35
@ IV_Any
Definition: IValueProvider.h:39
UnaryPointerAcceptProvider< joda::query::providers::hash::HashCalculator > HashProvider
Definition: HashProvider.h:135