mirror of
https://github.com/oxen-io/lokinet.git
synced 2024-11-17 15:25:35 +00:00
7caa87862e
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.
43 lines
831 B
C++
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
|