Atoms Crowd  7.0.0
HashedString.impl.h
1 #pragma once
2 
3 namespace AtomsCore
4 {
5  inline bool HashedString::operator<(const HashedString& src)const
6  {
7  return m_hash != src.m_hash ? m_hash < src.m_hash : m_string < src.m_string;
8  }
9 
10  inline bool HashedString::operator==(const HashedString& src) const
11  {
12  return m_hash == src.m_hash && m_string == src.m_string;
13  }
14 
15  inline bool HashedString::operator!=(const char* value) const
16  {
17  return m_string != value;
18  }
19 
20  inline bool HashedString::operator!=(const std::string& value) const
21  {
22  return m_string != value;
23  }
24 
25  inline HashedString& HashedString::operator=(const std::string& other)
26  {
27  MurmurHash3 hash;
28  hash.append(other);
29  m_hash = hash.seed[0] ^ hash.seed[1];
30  m_string = other;
31  return *this;
32  }
33 
34  inline const std::string& HashedString::string() const { return m_string; }
35 
36  inline size_t HashedString::hash() const { return m_hash; }
37 
38  inline HashedString::operator const std::string & () const { return m_string; }
39 
40  inline const char *HashedString::c_str() const { return m_string.c_str(); }
41 
42  inline std::string HashedString::operator+(const char* value) const { return m_string + value; }
43 
44  inline std::string HashedString::operator+(const std::string& value) const { return m_string + value; }
45 
46  inline size_t HashedString::size() const { return m_string.size(); }
47 
48  inline size_t HashedString::find(const std::string& value, size_t offset) const { return m_string.find(value, offset); }
49 
50  inline size_t HashedString::rfind(const std::string& value, size_t offset) const { return m_string.rfind(value, offset); }
51 
52  inline std::string HashedString::substr(size_t offset, size_t count) const { return m_string.substr(offset, count); }
53 
54  inline bool HashedString::empty() const { return m_string.empty(); }
55 
56  template<>
57  inline size_t memSize(const HashedString& data)
58  {
59  return memSize(data.string());
60  }
61 
62  template <>
63  inline Archive& operator<<(Archive& os, const HashedString& obj)
64  {
65  os << obj.string();
66  return os;
67  }
68 
69  template <>
70  inline Archive& operator >> (Archive& is, HashedString& obj)
71  {
72  std::string value;
73  is >> value;
74  obj = value;
75  return is;
76  }
77 
78  inline std::ostream& operator<<(std::ostream& os, const HashedString& obj)
79  {
80  os << obj.string();
81  return os;
82  }
83 }
84 
85 inline std::string operator+ (const std::string& lhs, const AtomsCore::HashedString& rhs)
86 {
87  return lhs + rhs.string();
88 }
89 
90 inline std::string operator+ (const char* lhs, const AtomsCore::HashedString& rhs)
91 {
92  return std::string(lhs) + rhs.string();
93 }
94 
Definition: HashedString.h:21
AtomsCore namespace.
Definition: Agent.h:344