| 311 | } |
| 312 | |
| 313 | class ResultSet final : public RefCntIface<IResultSetImpl<ResultSet, CheckStatusWrapper> > |
| 314 | { |
| 315 | public: |
| 316 | // IResultSet implementation |
| 317 | int release() override; |
| 318 | int fetchNext(CheckStatusWrapper* status, void* message) override; |
| 319 | int fetchPrior(CheckStatusWrapper* status, void* message) override; |
| 320 | int fetchFirst(CheckStatusWrapper* status, void* message) override; |
| 321 | int fetchLast(CheckStatusWrapper* status, void* message) override; |
| 322 | int fetchAbsolute(CheckStatusWrapper* status, int position, void* message) override; |
| 323 | int fetchRelative(CheckStatusWrapper* status, int offset, void* message) override; |
| 324 | FB_BOOLEAN isEof(CheckStatusWrapper* status) override; |
| 325 | FB_BOOLEAN isBof(CheckStatusWrapper* status) override; |
| 326 | IMessageMetadata* getMetadata(CheckStatusWrapper* status) override; |
| 327 | void close(CheckStatusWrapper* status) override; |
| 328 | void deprecatedClose(CheckStatusWrapper* status) override; |
| 329 | void setDelayedOutputFormat(CheckStatusWrapper* status, IMessageMetadata* format) override; |
| 330 | void getInfo(CheckStatusWrapper* status, |
| 331 | unsigned int itemsLength, const unsigned char* items, |
| 332 | unsigned int bufferLength, unsigned char* buffer) override; |
| 333 | |
| 334 | ResultSet(Statement* s, IMessageMetadata* outFmt, unsigned f) |
| 335 | : stmt(s), flags(f), tmpStatement(false), delayedFormat(outFmt == DELAYED_OUT_FORMAT) |
| 336 | { |
| 337 | if (!delayedFormat) |
| 338 | outputFormat = outFmt; |
| 339 | } |
| 340 | |
| 341 | private: |
| 342 | bool fetch(CheckStatusWrapper* status, void* message, P_FETCH operation, int position = 0); |
| 343 | void releaseStatement(); |
| 344 | void freeClientData(CheckStatusWrapper* status, bool force = false); |
| 345 | void internalClose(CheckStatusWrapper* status); |
| 346 | |
| 347 | Statement* stmt; |
| 348 | const unsigned flags; |
| 349 | RefPtr<IMessageMetadata> outputFormat; |
| 350 | |
| 351 | public: |
| 352 | bool tmpStatement, delayedFormat; |
| 353 | }; |
| 354 | |
| 355 | int ResultSet::release() |
| 356 | { |