microsoft / wil

Windows Implementation Library
MIT License
2.57k stars 234 forks source link

Update result_macros.h (using enum class instead of enum) #396

Closed shalala66 closed 9 months ago

shalala66 commented 10 months ago

changed the enum Kind : unsigned int { HResult, NtStatus };:

struct ResultStatus
        {
            enum Kind : unsigned int { HResult, NtStatus };

            static ResultStatus FromResult(const HRESULT _hr)
            {
                return { _hr, wil::details::HrToNtStatus(_hr), Kind::HResult };
            }
            static ResultStatus FromStatus(const NTSTATUS _status)
            {
                return { wil::details::NtStatusToHr(_status), _status, Kind::NtStatus };
            }
            static ResultStatus FromFailureInfo(const FailureInfo& _failure)
            {
                return { _failure.hr, _failure.status, WI_IsFlagSet(_failure.flags, FailureFlags::NtStatus) ? Kind::NtStatus : Kind::HResult };
            }
            HRESULT hr = S_OK;
            NTSTATUS status = STATUS_SUCCESS;
            Kind kind = Kind::NtStatus;
        };

to the enum class Kind : unsigned int { HResult, NtStatus };:

struct ResultStatus
        {
            enum class Kind : unsigned int { HResult, NtStatus };

            static ResultStatus FromResult(const HRESULT _hr)
            {
                return { _hr, wil::details::HrToNtStatus(_hr), Kind::HResult };
            }
            static ResultStatus FromStatus(const NTSTATUS _status)
            {
                return { wil::details::NtStatusToHr(_status), _status, Kind::NtStatus };
            }
            static ResultStatus FromFailureInfo(const FailureInfo& _failure)
            {
                return { _failure.hr, _failure.status, WI_IsFlagSet(_failure.flags, FailureFlags::NtStatus) ? Kind::NtStatus : Kind::HResult };
            }
            HRESULT hr = S_OK;
            NTSTATUS status = STATUS_SUCCESS;
            Kind kind = Kind::NtStatus;
        };

for Type Safety, Strong Typing, Scoped Names.

dunhor commented 10 months ago

Please update the title/description

dunhor commented 9 months ago

For those curious, like myself, the usage of this type is limited only to WIL's internals (right now), so this should not break much if any code