/* * ======================================================== * * CompilerKit * Copyright (C) 2024-2025 Amlal El Mahrouss, Licensed under the Apache 2.0 license. * * ======================================================== */ #pragma once /// =========================================================== /// /// @file ErrorOr.h /// @author Amlal El Mahrouss /// @brief ErrorOr for CompilerKit. /// =========================================================== /// #include #include #include #include namespace CompilerKit { using ErrorT = Int32; template class ErrorOr final { public: ErrorOr() = default; ~ErrorOr() = default; public: explicit ErrorOr(ErrorT err) : mId(err) {} explicit ErrorOr(nullPtr null) {} explicit ErrorOr(T klass) : mRef(klass) {} ErrorOr& operator=(const ErrorOr&) = default; ErrorOr(const ErrorOr&) = default; Ref Leak() { return mRef; } ErrorT Error() { return mId; } Bool HasError() { return mId != NECTI_SUCCESS; } explicit operator bool() { return mRef; } private: Ref mRef; ErrorT mId{0}; }; using ErrorOrAny = ErrorOr; using ErrorOrString = ErrorOr; } // namespace CompilerKit