Expected.h 850 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #pragma once
  2. #include "il2cpp-config.h"
  3. #include "utils/Il2CppError.h"
  4. namespace il2cpp
  5. {
  6. namespace utils
  7. {
  8. template<typename T>
  9. class Expected
  10. {
  11. public:
  12. Expected(const T& result) : m_Result(result) {}
  13. Expected(const Il2CppError& error) : m_Error(error) {}
  14. bool HasError() const
  15. {
  16. return m_Error.GetErrorCode() != NoError;
  17. }
  18. Il2CppError GetError() const
  19. {
  20. return m_Error;
  21. }
  22. T& Get()
  23. {
  24. IL2CPP_ASSERT(!HasError());
  25. return m_Result;
  26. }
  27. const T& Get() const
  28. {
  29. IL2CPP_ASSERT(!HasError());
  30. return m_Result;
  31. }
  32. private:
  33. T m_Result;
  34. const Il2CppError m_Error;
  35. Expected() {}
  36. };
  37. } // namespace il2cpp
  38. } // namespace utils