// Copyright (c) ZeroC, Inc.

// slice2cpp version 3.8.1
// <auto-generated>Generated from Slice file 'ReplyStatus.ice'.</auto-generated>
// clang-format off

#ifndef Ice_ReplyStatus_h_
#define Ice_ReplyStatus_h_

#include <Ice/PushDisableWarnings.h>
#include <Ice/Config.h>
#include <Ice/StreamHelpers.h>

#ifndef ICE_DISABLE_VERSION
#   if ICE_INT_VERSION / 100 != 308
#       error Ice version mismatch!
#   endif
#   if ICE_INT_VERSION % 100 >= 50
#       error Beta header file detected
#   endif
#   if ICE_INT_VERSION % 100 < 1
#       error Ice patch level mismatch!
#   endif
#endif

// NOLINTBEGIN(modernize-concat-nested-namespaces)

namespace Ice
{
    /// Represents the status of a reply.
    /// A reply status can have any value in the range 0..255. Do not use this enum to marshal or unmarshal a reply
    /// status unless you know its value corresponds to one of the enumerators defined below.
    /// @remarks The Slice compiler generated this enum class from Slice enumeration `::Ice::ReplyStatus`.
    enum class ReplyStatus : std::uint8_t
    {
        /// The dispatch completed successfully.
        Ok = 0,

        /// The dispatch completed with a Slice user exception.
        UserException = 1,

        /// The dispatch could not find an implementation for the target object.
        ObjectNotExist = 2,

        /// The dispatch found an implementation for the target object but could not find the requested facet.
        FacetNotExist = 3,

        /// The dispatch found an implementation for the target object but could not find the requested operation.
        OperationNotExist = 4,

        /// The dispatch failed with an Ice local exception.
        UnknownLocalException = 5,

        /// The dispatch failed with a Slice user exception that does not conform to the exception specification of
        /// the operation.
        UnknownUserException = 6,

        /// The dispatch failed with some other exception (neither an Ice local exception nor a Slice user exception).
        UnknownException = 7,

        /// The dispatch failed because the request payload could not be unmarshaled. It is typically due to a mismatch
        /// in the Slice definitions used by the client and the server.
        InvalidData = 8,

        /// The caller is not authorized to access the requested resource.
        Unauthorized = 9
    };

    /// Outputs the enumerator name or underlying value of a ReplyStatus to a stream.
    /// @param os The output stream.
    /// @param value The value to output.
    /// @return The output stream.
    ICE_API std::ostream& operator<<(std::ostream& os, ReplyStatus value);
}

namespace Ice
{
    /// @cond INTERNAL
    template<>
    struct StreamableTraits<::Ice::ReplyStatus>
    {
        static constexpr StreamHelperCategory helper = StreamHelperCategoryEnum;
        static constexpr int minValue = 0;
        static constexpr int maxValue = 9;
        static constexpr int minWireSize = 1;
        static constexpr bool fixedLength = false;
    };
    /// @endcond
}

// NOLINTEND(modernize-concat-nested-namespaces)

#include <Ice/PopDisableWarnings.h>
#endif
