rows_view.hpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. //
  2. // Copyright (c) 2019-2023 Ruben Perez Hidalgo (rubenperez038 at gmail dot com)
  3. //
  4. // Distributed under the Boost Software License, Version 1.0. (See accompanying
  5. // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  6. //
  7. #ifndef BOOST_MYSQL_IMPL_ROWS_VIEW_HPP
  8. #define BOOST_MYSQL_IMPL_ROWS_VIEW_HPP
  9. #pragma once
  10. #include <boost/mysql/rows_view.hpp>
  11. #include <boost/mysql/detail/auxiliar/access_fwd.hpp>
  12. #include <boost/mysql/detail/auxiliar/rows_iterator.hpp>
  13. #include <cassert>
  14. #include <stdexcept>
  15. boost::mysql::row_view boost::mysql::rows_view::operator[](std::size_t i) const noexcept
  16. {
  17. assert(i < size());
  18. return detail::row_slice(fields_, num_columns_, i);
  19. }
  20. boost::mysql::row_view boost::mysql::rows_view::at(std::size_t i) const
  21. {
  22. if (i >= size())
  23. {
  24. throw std::out_of_range("rows_view::at");
  25. }
  26. return detail::row_slice(fields_, num_columns_, i);
  27. }
  28. inline bool boost::mysql::rows_view::operator==(const rows_view& rhs) const noexcept
  29. {
  30. if (num_fields_ != rhs.num_fields_ || num_columns_ != rhs.num_columns_)
  31. return false;
  32. for (std::size_t i = 0; i < num_fields_; ++i)
  33. {
  34. if (fields_[i] != rhs.fields_[i])
  35. return false;
  36. }
  37. return true;
  38. }
  39. struct boost::mysql::detail::rows_view_access
  40. {
  41. static rows_view construct(
  42. const field_view* fields,
  43. std::size_t num_fields,
  44. std::size_t num_columns
  45. ) noexcept
  46. {
  47. return rows_view(fields, num_fields, num_columns);
  48. }
  49. };
  50. #endif