handler.ipp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. //
  2. // Copyright (c) 2019 Vinnie Falco (vinnie.falco@gmail.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. // Official repository: https://github.com/boostorg/json
  8. //
  9. #ifndef BOOST_JSON_DETAIL_IMPL_HANDLER_HPP
  10. #define BOOST_JSON_DETAIL_IMPL_HANDLER_HPP
  11. #include <boost/json/detail/handler.hpp>
  12. #include <utility>
  13. BOOST_JSON_NS_BEGIN
  14. namespace detail {
  15. template<class... Args>
  16. handler::
  17. handler(Args&&... args)
  18. : st(std::forward<Args>(args)...)
  19. {
  20. }
  21. bool
  22. handler::
  23. on_document_begin(
  24. error_code&)
  25. {
  26. return true;
  27. }
  28. bool
  29. handler::
  30. on_document_end(
  31. error_code&)
  32. {
  33. return true;
  34. }
  35. bool
  36. handler::
  37. on_object_begin(
  38. error_code&)
  39. {
  40. return true;
  41. }
  42. bool
  43. handler::
  44. on_object_end(
  45. std::size_t n,
  46. error_code&)
  47. {
  48. st.push_object(n);
  49. return true;
  50. }
  51. bool
  52. handler::
  53. on_array_begin(
  54. error_code&)
  55. {
  56. return true;
  57. }
  58. bool
  59. handler::
  60. on_array_end(
  61. std::size_t n,
  62. error_code&)
  63. {
  64. st.push_array(n);
  65. return true;
  66. }
  67. bool
  68. handler::
  69. on_key_part(
  70. string_view s,
  71. std::size_t,
  72. error_code&)
  73. {
  74. st.push_chars(s);
  75. return true;
  76. }
  77. bool
  78. handler::
  79. on_key(
  80. string_view s,
  81. std::size_t,
  82. error_code&)
  83. {
  84. st.push_key(s);
  85. return true;
  86. }
  87. bool
  88. handler::
  89. on_string_part(
  90. string_view s,
  91. std::size_t,
  92. error_code&)
  93. {
  94. st.push_chars(s);
  95. return true;
  96. }
  97. bool
  98. handler::
  99. on_string(
  100. string_view s,
  101. std::size_t,
  102. error_code&)
  103. {
  104. st.push_string(s);
  105. return true;
  106. }
  107. bool
  108. handler::
  109. on_number_part(
  110. string_view,
  111. error_code&)
  112. {
  113. return true;
  114. }
  115. bool
  116. handler::
  117. on_int64(
  118. std::int64_t i,
  119. string_view,
  120. error_code&)
  121. {
  122. st.push_int64(i);
  123. return true;
  124. }
  125. bool
  126. handler::
  127. on_uint64(
  128. std::uint64_t u,
  129. string_view,
  130. error_code&)
  131. {
  132. st.push_uint64(u);
  133. return true;
  134. }
  135. bool
  136. handler::
  137. on_double(
  138. double d,
  139. string_view,
  140. error_code&)
  141. {
  142. st.push_double(d);
  143. return true;
  144. }
  145. bool
  146. handler::
  147. on_bool(
  148. bool b,
  149. error_code&)
  150. {
  151. st.push_bool(b);
  152. return true;
  153. }
  154. bool
  155. handler::
  156. on_null(error_code&)
  157. {
  158. st.push_null();
  159. return true;
  160. }
  161. bool
  162. handler::
  163. on_comment_part(
  164. string_view,
  165. error_code&)
  166. {
  167. return true;
  168. }
  169. bool
  170. handler::
  171. on_comment(
  172. string_view, error_code&)
  173. {
  174. return true;
  175. }
  176. } // detail
  177. BOOST_JSON_NS_END
  178. #endif