31#ifndef MYSQLX_DETAIL_ROW_H 
   32#define MYSQLX_DETAIL_ROW_H 
   41#include "../document.h" 
   53template <
class COLS> 
class Row_result_detail;
 
   54struct Table_insert_detail;
 
   57class PUBLIC_API Row_detail
 
   61  class MYSQLX_INTERNAL Impl;
 
   63  std::shared_ptr<Impl>  m_impl;
 
   66  Row_detail() = 
default;
 
   68  Row_detail(std::shared_ptr<Impl> &&impl)
 
   70    m_impl = std::move(impl);
 
   73  col_count_t col_count() 
const;
 
   74  bytes       get_bytes(col_count_t) 
const;
 
   75  Value&      get_val(col_count_t);
 
   84  const Impl& get_impl()
 const 
   86    return const_cast<Row_detail*
>(
this)->get_impl();
 
   91  using Args_prc = Args_processor<Row_detail, std::pair<Impl*, col_count_t>*>;
 
   93  template<
typename... Types>
 
   94  void set_values(col_count_t pos, Types... args)
 
   98    std::pair<Impl*, col_count_t> data{ m_impl.get(), pos };
 
   99    Args_prc::process_args(&data, args...);
 
  102  static void process_one(std::pair<Impl*, col_count_t>*, 
const Value &val);
 
  104  friend Table_insert_detail;
 
  105  friend Row_result_detail<Columns>;