Loading...
Searching...
No Matches
StringFactoryKey.hpp
1#pragma once
2#include <score/tools/opaque/OpaqueString.hpp>
3
4#include <ossia/detail/hash.hpp>
5
6#include <score_lib_base_export.h>
7// TODO rename file.
8template <typename Tag>
10{
11public:
13
14 friend struct ossia::hash<this_type>;
15 friend bool operator==(const StringKey& lhs, const StringKey& rhs) noexcept
16 {
17 return static_cast<const OpaqueString&>(lhs)
18 == static_cast<const OpaqueString&>(rhs);
19 }
20 friend bool operator!=(const StringKey& lhs, const StringKey& rhs) noexcept
21 {
22 return static_cast<const OpaqueString&>(lhs)
23 != static_cast<const OpaqueString&>(rhs);
24 }
25 friend bool operator<(const StringKey& lhs, const StringKey& rhs) noexcept
26 {
27 return static_cast<const OpaqueString&>(lhs) < static_cast<const OpaqueString&>(rhs);
28 }
29
30 using OpaqueString::OpaqueString;
31
32 auto& toString() { return impl; }
33 auto& toString() const { return impl; }
34};
35
36namespace std
37{
38template <typename T>
39struct hash<StringKey<T>>
40{
41 std::size_t operator()(const StringKey<T>& kagi) const noexcept
42 {
43 return ossia::hash<std::string>()(kagi.toString());
44 }
45};
46}
Definition OpaqueString.hpp:7
Definition StringFactoryKey.hpp:10
STL namespace.