| 115 | namespace Firebird |
| 116 | { |
| 117 | class FbException |
| 118 | { |
| 119 | public: |
| 120 | FbException(IStatus* aStatus, const ISC_STATUS* vector) |
| 121 | { |
| 122 | aStatus->setErrors(vector); |
| 123 | status = aStatus->clone(); |
| 124 | } |
| 125 | |
| 126 | FbException(IStatus* aStatus) |
| 127 | : status(aStatus->clone()) |
| 128 | { |
| 129 | } |
| 130 | |
| 131 | FbException(const FbException& copy) |
| 132 | : status(copy.status->clone()) |
| 133 | { |
| 134 | } |
| 135 | |
| 136 | FbException& operator =(const FbException& copy) |
| 137 | { |
| 138 | status->dispose(); |
| 139 | status = copy.status->clone(); |
| 140 | return *this; |
| 141 | } |
| 142 | |
| 143 | virtual ~FbException() |
| 144 | { |
| 145 | status->dispose(); |
| 146 | } |
| 147 | |
| 148 | public: |
| 149 | static void check(ISC_STATUS code, IStatus* status, const ISC_STATUS* vector) |
| 150 | { |
| 151 | if (code != 0 && vector[1]) |
| 152 | throw FbException(status, vector); |
| 153 | } |
| 154 | |
| 155 | public: |
| 156 | IStatus* getStatus() const |
| 157 | { |
| 158 | return status; |
| 159 | } |
| 160 | |
| 161 | private: |
| 162 | IStatus* status; |
| 163 | }; |
| 164 | |
| 165 | template <typename T> |
| 166 | class BaseStatusWrapper : public IStatusImpl<T, T> |
no test coverage detected