| 241 | void hash_combine(std::size_t& seed, const T& v); |
| 242 | |
| 243 | inline |
| 244 | size_t value::hash() const noexcept |
| 245 | { |
| 246 | switch (kind_) { |
| 247 | case Kind::String: |
| 248 | return std::hash<std::string>()(variant_.strValue); |
| 249 | |
| 250 | case Kind::StringList: { |
| 251 | size_t seed = std::hash<size_t>()(variant_.strList.size()); |
| 252 | for(auto const& str : variant_.strList) { |
| 253 | hash_combine(seed, str); |
| 254 | } |
| 255 | return seed; |
| 256 | } |
| 257 | |
| 258 | case Kind::Bool: |
| 259 | return std::hash<bool>()(variant_.boolValue); |
| 260 | |
| 261 | case Kind::Long: |
| 262 | return std::hash<long>()(variant_.longValue); |
| 263 | |
| 264 | case Kind::Empty: |
| 265 | default: |
| 266 | return std::hash<void*>()(nullptr); |
| 267 | } |
| 268 | } |
| 269 | |
| 270 | inline |
| 271 | bool value::asBool() const |
no test coverage detected