#ifndef QUERY_QUERY_RESULT_READER_HPP #define QUERY_QUERY_RESULT_READER_HPP #include "matador/sql/any_type.hpp" #include "matador/sql/data_type_traits.hpp" namespace matador::sql { class query_result_reader { public: virtual ~query_result_reader() = default; [[nodiscard]] virtual size_t column_count() const = 0; [[nodiscard]] virtual const char* column(size_t index) const = 0; [[nodiscard]] virtual bool fetch() = 0; virtual void read_value(const char *id, size_t index, char &value); virtual void read_value(const char *id, size_t index, short &value); virtual void read_value(const char *id, size_t index, int &value); virtual void read_value(const char *id, size_t index, long &value); virtual void read_value(const char *id, size_t index, long long &value); virtual void read_value(const char *id, size_t index, unsigned char &value); virtual void read_value(const char *id, size_t index, unsigned short &value); virtual void read_value(const char *id, size_t index, unsigned int &value); virtual void read_value(const char *id, size_t index, unsigned long &value); virtual void read_value(const char *id, size_t index, unsigned long long &value); virtual void read_value(const char *id, size_t index, bool &value); virtual void read_value(const char *id, size_t index, float &value); virtual void read_value(const char *id, size_t index, double &value); // virtual void read_value(const char *id, size_t index, matador::time &value); // virtual void read_value(const char *id, size_t index, matador::date &value); virtual void read_value(const char *id, size_t index, char *value, size_t s); virtual void read_value(const char *id, size_t index, std::string &value); virtual void read_value(const char *id, size_t index, std::string &value, size_t s); virtual void read_value(const char *id, size_t index, utils::blob &value); virtual void read_value(const char *id, size_t index, any_type &value, data_type_t type, size_t size); }; } #endif //QUERY_QUERY_RESULT_READER_HPP