@@ -16,12 +16,24 @@ namespace tao
1616{
1717 namespace json
1818 {
19+ template < typename Handler >
20+ inline void from_string ( const char * data, const std::size_t size, Handler & handler, const char * source = nullptr , const std::size_t line = 1 , const std::size_t column = 0 )
21+ {
22+ tao_json_pegtl::input input ( line, column, data, data + size, source ? source : __PRETTY_FUNCTION__ );
23+ tao_json_pegtl::parse_input< internal::grammar, internal::action, internal::control >( input, handler );
24+ }
25+
26+ template < typename Handler >
27+ inline void from_string ( const std::string & data, Handler & handler, const char * source = nullptr , const std::size_t line = 1 , const std::size_t column = 0 )
28+ {
29+ json::from_string ( data.data (), data.size (), handler, source, line, column );
30+ }
31+
1932 template < template < typename ... > class Traits >
2033 inline basic_value< Traits > from_string ( const char * data, const std::size_t size, const char * source = nullptr , const std::size_t line = 1 , const std::size_t column = 0 )
2134 {
2235 internal::value_builder< Traits > handler;
23- tao_json_pegtl::input input ( line, column, data, data + size, source ? source : __PRETTY_FUNCTION__ );
24- tao_json_pegtl::parse_input< internal::grammar, internal::action, internal::control >( input, handler );
36+ json::from_string ( data, size, handler, source, line, column );
2537 return std::move ( handler.value_ );
2638 }
2739
0 commit comments