| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- //
- // json_binder.h
- // json
- //
- // Created by Sam Jaffe on 1/31/16.
- // Copyright © 2016 Sam Jaffe. All rights reserved.
- //
- #ifndef json_parser_h
- #define json_parser_h
- #pragma once
- #include <iostream>
- namespace json {
- class value;
-
- namespace binder { template <typename, typename> class visitor; }
-
- namespace parser {
- void parse(value& json, char const* data);
-
- template <typename T, typename S>
- void parse(binder::visitor<T, S>&, char const*);
-
- template <typename T>
- void parse(T& json, std::string const& str) {
- parse(json, str.c_str());
- }
-
- template <typename T>
- void parse(T& json, std::istream & in) {
- in.seekg(0, std::ios_base::end);
- size_t end = in.tellg();
- char data[end];
- in.seekg(0);
- in.read(data, end);
- parse(json, data);
- }
-
- template <typename T, typename S, typename V>
- void parse(binder::visitor<T, S>&& v, V& s) {
- parse(v, s);
- }
- }
- }
- #endif /* json_parser_h */
|