lokinet/llarp/util/json.hpp
Thomas Winget 7caa87862e standardize include format and pragma once
All #ifndef guards on headers have been removed, I think,
in favor of #pragma once

Headers are now included as `#include "filename"` if the included file
resides in the same directory as the file including it, or any
subdirectory therein.  Otherwise they are included as
`#include <project/top/dir/relative/path/filename>`

The above does not include system/os headers.
2021-03-09 19:01:41 -05:00

43 lines
831 B
C++

#pragma once
#include <nlohmann/json.hpp>
#include <memory>
#include <iostream>
namespace llarp
{
namespace json
{
using Object = nlohmann::json;
struct IParser
{
virtual ~IParser() = default;
/// result from feeding data to parser
enum Result
{
/// we need more data to finish parsing
eNeedData,
/// we have parsed the object fully
eDone,
/// we have a parsing syntax error
eParseError
};
/// feed data to parser return true if successful
virtual bool
FeedData(const char* buf, size_t sz) = 0;
/// parse internal buffer
virtual Result
Parse(Object& obj) const = 0;
};
/// create new parser
IParser*
MakeParser(size_t contentSize);
} // namespace json
} // namespace llarp