123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- #pragma once
- #ifndef STRING_INL_H_
- #error "Direct inclusion of this file is not allowed, include string.h"
- // For the sake of sane code completion.
- #include "string.h"
- #endif
- #include <util/str_stl.h>
- namespace NYson {
- ////////////////////////////////////////////////////////////////////////////////
- namespace NDetail {
- template <typename TLeft, typename TRight>
- bool Equals(const TLeft& lhs, const TRight& rhs)
- {
- auto lhsNull = !lhs.operator bool();
- auto rhsNull = !rhs.operator bool();
- if (lhsNull != rhsNull) {
- return false;
- }
- if (lhsNull && rhsNull) {
- return true;
- }
- return
- lhs.AsStringBuf() == rhs.AsStringBuf() &&
- lhs.GetType() == rhs.GetType();
- }
- } // namespace NDetail
- inline bool operator == (const TYsonStringBuf& lhs, const TYsonStringBuf& rhs)
- {
- return NDetail::Equals(lhs, rhs);
- }
- inline bool operator != (const TYsonStringBuf& lhs, const TYsonStringBuf& rhs)
- {
- return !(lhs == rhs);
- }
- ////////////////////////////////////////////////////////////////////////////////
- } // namespace NYson
- //! A hasher for TYsonStringBuf
- template <>
- struct THash<NYson::TYsonStringBuf>
- {
- size_t operator () (const NYson::TYsonStringBuf& str) const
- {
- return THash<TStringBuf>()(str.AsStringBuf());
- }
- };
|