25#ifndef FBCPP_EXCEPTION_H 
   26#define FBCPP_EXCEPTION_H 
   44    class StatusWrapper : 
public fb::IStatusImpl<StatusWrapper, StatusWrapper>
 
   47        explicit StatusWrapper(Client& client, IStatus* status)
 
   54        static void checkException(StatusWrapper* status);
 
   56        static void catchException(IStatus* status) 
noexcept;
 
   58        static void clearException(StatusWrapper* status) 
noexcept 
   60            status->clearException();
 
   72        bool isDirty() const noexcept
 
   77        bool hasData() const noexcept
 
   79            return getState() & IStatus::STATE_ERRORS;
 
   82        bool isEmpty() const noexcept
 
   87        static void setVersionError(
 
   88            IStatus* status, 
const char* interfaceName, uintptr_t currentVersion, uintptr_t expectedVersion) 
noexcept 
   91            const intptr_t codes[] = {
 
   92                isc_arg_gds, isc_interface_version_too_old,
 
   93                isc_arg_number, (intptr_t) expectedVersion,
 
   94                isc_arg_number, (intptr_t) currentVersion,
 
   95                isc_arg_string, (intptr_t) interfaceName,
 
  100            status->setErrors(codes);
 
  104        void dispose() noexcept
 override 
  111        void init() noexcept
 override 
  116        unsigned getState() const noexcept
 override 
  118            return dirty ? status->getState() : 0;
 
  121        void setErrors2(
unsigned length, 
const intptr_t* value) 
noexcept override 
  124            status->setErrors2(length, value);
 
  127        void setWarnings2(
unsigned length, 
const intptr_t* value) 
noexcept override 
  130            status->setWarnings2(length, value);
 
  133        void setErrors(
const intptr_t* value) 
noexcept override 
  136            status->setErrors(value);
 
  139        void setWarnings(
const intptr_t* value) 
noexcept override 
  142            status->setWarnings(value);
 
  145        const intptr_t* getErrors() const noexcept
 override 
  147            return dirty ? status->getErrors() : cleanStatus();
 
  150        const intptr_t* getWarnings() const noexcept
 override 
  152            return dirty ? status->getWarnings() : cleanStatus();
 
  155        IStatus* clone() const noexcept
 override 
  157            return status->clone();
 
  165        static const intptr_t* cleanStatus() noexcept
 
  167            static intptr_t clean[3] = {1, 0, 0};
 
  182        using std::runtime_error::runtime_error;
 
  185            : std::runtime_error{message}
 
 
  193        using FbCppException::FbCppException;
 
  201        static std::string buildMessage(
Client& client, 
const std::intptr_t* status);
 
 
Represents a Firebird client library instance.