mirror of
https://github.com/VectorCamp/vectorscan.git
synced 2025-06-28 16:41:01 +03:00
ue2_literal: add hash_value()
This commit is contained in:
parent
bb29aeb298
commit
8a7ac432c0
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016, Intel Corporation
|
* Copyright (c) 2016-2017, Intel Corporation
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
@ -34,6 +34,7 @@
|
|||||||
#ifndef UTIL_HASH_H
|
#ifndef UTIL_HASH_H
|
||||||
#define UTIL_HASH_H
|
#define UTIL_HASH_H
|
||||||
|
|
||||||
|
#include <iterator>
|
||||||
#include <boost/functional/hash/hash_fwd.hpp>
|
#include <boost/functional/hash/hash_fwd.hpp>
|
||||||
|
|
||||||
namespace ue2 {
|
namespace ue2 {
|
||||||
@ -69,6 +70,15 @@ size_t hash_all(Args&&... args) {
|
|||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Compute the hash of all the elements of any range on which we can
|
||||||
|
* call std::begin() and std::end().
|
||||||
|
*/
|
||||||
|
template<typename Range>
|
||||||
|
size_t hash_range(const Range &r) {
|
||||||
|
return boost::hash_range(std::begin(r), std::end(r));
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace ue2
|
} // namespace ue2
|
||||||
|
|
||||||
#endif // UTIL_HASH_H
|
#endif // UTIL_HASH_H
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2015-2016, Intel Corporation
|
* Copyright (c) 2015-2017, Intel Corporation
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
* modification, are permitted provided that the following conditions are met:
|
||||||
@ -35,6 +35,7 @@
|
|||||||
|
|
||||||
#include "ue2common.h"
|
#include "ue2common.h"
|
||||||
#include "util/charreach.h"
|
#include "util/charreach.h"
|
||||||
|
#include "util/hash.h"
|
||||||
|
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
#include <string>
|
#include <string>
|
||||||
@ -206,6 +207,13 @@ private:
|
|||||||
std::vector<bool> nocase; /* for trolling value */
|
std::vector<bool> nocase; /* for trolling value */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
inline
|
||||||
|
size_t hash_value(const ue2_literal::elem &elem) {
|
||||||
|
return hash_all(elem.c, elem.nocase);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline
|
||||||
|
size_t hash_value(const ue2_literal &lit) { return hash_range(lit); }
|
||||||
|
|
||||||
/// Return a reversed copy of this literal.
|
/// Return a reversed copy of this literal.
|
||||||
ue2_literal reverse_literal(const ue2_literal &in);
|
ue2_literal reverse_literal(const ue2_literal &in);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user