Json telemetry
This commit is contained in:
60
apps/RenderCadenceCompositor/json/JsonWriter.h
Normal file
60
apps/RenderCadenceCompositor/json/JsonWriter.h
Normal file
@@ -0,0 +1,60 @@
|
||||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
|
||||
namespace RenderCadenceCompositor
|
||||
{
|
||||
class JsonWriter
|
||||
{
|
||||
public:
|
||||
void BeginObject();
|
||||
void EndObject();
|
||||
void BeginArray();
|
||||
void EndArray();
|
||||
|
||||
void Key(const std::string& name);
|
||||
void String(const std::string& value);
|
||||
void Bool(bool value);
|
||||
void Null();
|
||||
void Int(int64_t value);
|
||||
void UInt(uint64_t value);
|
||||
void Double(double value);
|
||||
|
||||
void KeyString(const std::string& name, const std::string& value);
|
||||
void KeyBool(const std::string& name, bool value);
|
||||
void KeyNull(const std::string& name);
|
||||
void KeyInt(const std::string& name, int64_t value);
|
||||
void KeyUInt(const std::string& name, uint64_t value);
|
||||
void KeyDouble(const std::string& name, double value);
|
||||
|
||||
std::string StringValue() const;
|
||||
void Reset();
|
||||
|
||||
static std::string EscapeString(const std::string& value);
|
||||
|
||||
private:
|
||||
enum class ScopeKind
|
||||
{
|
||||
Object,
|
||||
Array
|
||||
};
|
||||
|
||||
struct Scope
|
||||
{
|
||||
ScopeKind kind = ScopeKind::Object;
|
||||
bool first = true;
|
||||
bool expectingValue = false;
|
||||
};
|
||||
|
||||
void BeginValue();
|
||||
void BeginKey();
|
||||
void PushScope(ScopeKind kind);
|
||||
void PopScope(ScopeKind kind);
|
||||
|
||||
std::ostringstream mStream;
|
||||
Scope mScopes[32];
|
||||
int mScopeDepth = 0;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user