#ifndef QUERY_QUERY_RESULT_READER_HPP #define QUERY_QUERY_RESULT_READER_HPP #include "matador/sql/internal/object_result_binder.hpp" #include "matador/utils/attribute_reader.hpp" #include "matador/utils/error.hpp" #include "matador/utils/result.hpp" namespace matador::sql { class query_result_reader : public utils::attribute_reader { public: [[nodiscard]] virtual size_t column_count() const = 0; [[nodiscard]] virtual const char* column(size_t index) const = 0; [[nodiscard]] virtual utils::result fetch() = 0; [[nodiscard]] virtual size_t start_column_index() const = 0; virtual void unshift() = 0; template void bind(Type &obj) { object_binder_.reset(); object_binder_.bind(obj, result_binder()); } protected: virtual attribute_reader& result_binder() = 0; private: // detail::empty_binder empty_result_binder_; object_result_binder object_binder_; }; } #endif //QUERY_QUERY_RESULT_READER_HPP