operand: Implement operand hashing and use hashed set for declarations

Instead of manually searching each element in the declarations vector,
use an unordered_set to emplace new declarations avoiding repetition.
This commit is contained in:
ReinUsesLisp
2019-06-08 05:23:15 -03:00
parent f7c4b07a7e
commit 1e665afa36
10 changed files with 66 additions and 13 deletions

View File

@@ -4,6 +4,7 @@
* Lesser General Public License version 3 or any later version.
*/
#include <functional>
#include <string>
#include "common_types.h"
#include "literal_string.h"
@@ -36,4 +37,8 @@ bool LiteralString::operator==(const Operand& other) const {
return false;
}
std::size_t LiteralString::Hash() const {
return Operand::Hash() ^ std::hash<std::string>{}(string);
}
} // namespace Sirit