text_yson.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #pragma once
  2. #include <library/cpp/yt/misc/guid.h>
  3. #include <util/datetime/base.h>
  4. #include <util/generic/strbuf.h>
  5. #include <string>
  6. namespace NYT::NDetail {
  7. ////////////////////////////////////////////////////////////////////////////////
  8. size_t FloatToStringWithNanInf(double value, char* buf, size_t size);
  9. ////////////////////////////////////////////////////////////////////////////////
  10. bool IsBinaryYson(TStringBuf str);
  11. ////////////////////////////////////////////////////////////////////////////////
  12. template <class T>
  13. std::string ConvertToTextYsonString(const T& value) = delete;
  14. template <class T>
  15. T ConvertFromTextYsonString(TStringBuf str) = delete;
  16. ////////////////////////////////////////////////////////////////////////////////
  17. template <>
  18. std::string ConvertToTextYsonString<i8>(const i8& value);
  19. template <>
  20. std::string ConvertToTextYsonString<i32>(const i32& value);
  21. template <>
  22. std::string ConvertToTextYsonString<i64>(const i64& value);
  23. template <>
  24. std::string ConvertToTextYsonString<ui8>(const ui8& value);
  25. template <>
  26. std::string ConvertToTextYsonString<ui32>(const ui32& value);
  27. template <>
  28. std::string ConvertToTextYsonString<ui64>(const ui64& value);
  29. template <>
  30. std::string ConvertToTextYsonString<TStringBuf>(const TStringBuf& value);
  31. template <>
  32. std::string ConvertToTextYsonString<float>(const float& value);
  33. template <>
  34. std::string ConvertToTextYsonString<double>(const double& value);
  35. template <>
  36. std::string ConvertToTextYsonString<bool>(const bool& value);
  37. template <>
  38. std::string ConvertToTextYsonString<TInstant>(const TInstant& value);
  39. template <>
  40. std::string ConvertToTextYsonString<TDuration>(const TDuration& value);
  41. template <>
  42. std::string ConvertToTextYsonString<TGuid>(const TGuid& value);
  43. ////////////////////////////////////////////////////////////////////////////////
  44. template <>
  45. i8 ConvertFromTextYsonString<i8>(TStringBuf str);
  46. template <>
  47. i32 ConvertFromTextYsonString<i32>(TStringBuf str);
  48. template <>
  49. i64 ConvertFromTextYsonString<i64>(TStringBuf str);
  50. template <>
  51. ui8 ConvertFromTextYsonString<ui8>(TStringBuf str);
  52. template <>
  53. ui32 ConvertFromTextYsonString<ui32>(TStringBuf str);
  54. template <>
  55. ui64 ConvertFromTextYsonString<ui64>(TStringBuf str);
  56. template <>
  57. TString ConvertFromTextYsonString<TString>(TStringBuf str);
  58. template <>
  59. std::string ConvertFromTextYsonString<std::string>(TStringBuf str);
  60. template <>
  61. float ConvertFromTextYsonString<float>(TStringBuf str);
  62. template <>
  63. double ConvertFromTextYsonString<double>(TStringBuf str);
  64. template <>
  65. bool ConvertFromTextYsonString<bool>(TStringBuf str);
  66. template <>
  67. TInstant ConvertFromTextYsonString<TInstant>(TStringBuf str);
  68. template <>
  69. TDuration ConvertFromTextYsonString<TDuration>(TStringBuf str);
  70. template <>
  71. TGuid ConvertFromTextYsonString<TGuid>(TStringBuf str);
  72. ////////////////////////////////////////////////////////////////////////////////
  73. } // namespace NYT::NDetail