mkql_utils.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #pragma once
  2. #include <util/generic/strbuf.h>
  3. #include <util/generic/string.h>
  4. namespace NKikimr {
  5. namespace NMiniKQL {
  6. // TODO: move this class to beter place
  7. class TStatus
  8. {
  9. public:
  10. inline static const TStatus Ok() {
  11. return TStatus();
  12. }
  13. inline static TStatus Error(const TStringBuf& error) {
  14. Y_DEBUG_ABORT_UNLESS(!error.empty());
  15. return TStatus(TString(error));
  16. }
  17. inline static TStatus Error(TString&& error) {
  18. Y_DEBUG_ABORT_UNLESS(!error.empty());
  19. return TStatus(std::move(error));
  20. }
  21. inline static TStatus Error() {
  22. return TStatus(TString(TStringBuf("Error: ")));
  23. }
  24. template <class T>
  25. inline TStatus& operator<<(const T& t) {
  26. Error_.append(t);
  27. return *this;
  28. }
  29. inline bool IsOk() const {
  30. return Error_.empty();
  31. }
  32. inline const TString& GetError() const {
  33. return Error_;
  34. }
  35. private:
  36. inline TStatus() = default;
  37. inline TStatus(TString&& error)
  38. : Error_(std::move(error))
  39. {
  40. }
  41. private:
  42. TString Error_;
  43. };
  44. } // namespace NMiniKQL
  45. } // namespace NKikimr