// CFTTJson - [2020-04-13 11:57:46]
#ifndef _CFTTJSON_H_
#define _CFTTJSON_H_

#include "common.h"
#include "rapidjson/document.h"
#include "rapidjson/prettywriter.h"
#include "rapidjson/stringbuffer.h"
//#include "rapidjson/writer.h"

using namespace rapidjson;

/*
0025F120 CFTTJson::CFTTJson()
0025F140 CFTTJson::CreateJsonDoc(char const*)
0025F17C CFTTJson::CFTTJson(char const*)
0025F1A4 CFTTJson::~CFTTJson()
0025F22E CFTTJson::AddUint(char const*,uint)
0025F254 CFTTJson::CreateWriter()
0025F2CE CFTTJson::AddDouble(char const*,double)
0025F314 CFTTJson::AddInt64(char const*,long long)
0025F35A CFTTJson::AddUInt64(char const*,uint64_t)
0025F3A0 CFTTJson::AddInt(char const*,int)
0025F3DE CFTTJson::AddBool(char const*,bool)
0025F422 CFTTJson::AddString(char const*,char const*)
0025F46A CFTTJson::AddJSON(char const*,CFTTJson*)
0025F4AC CFTTJson::GetJSONString(char *&)
0025F54C CFTTJson::StartNested(char const*)
0025F5A2 CFTTJson::EndNested()
0025F5E0 CFTTJson::StartArray(char const*)
0025F63C CFTTJson::EndArray()
0025F682 CFTTJson::EndJSON()
0025F834 CFTTJson::IsValid()
0025F83A CFTTJson::GetItem(char const*,   rapidjson::GenericValue<rapidjson::UTF8<char>,rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>> *)
0025F920 CFTTJson::GetJSONStringFromValue(rapidjson::GenericValue<rapidjson::UTF8<char>,rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>> *)

0x24
*/

class CFTTJson {
public:
  CFTTJson();                                  // 0025F120
  CFTTJson(const char *pJsonData);             // 0025F17C
  ~CFTTJson();                                 // 0025F1A4
  bool CreateJsonDoc(char const *pJsonData);   // 0025F140
  void AddUint(char const *, uint);            // 0025F22E
  void CreateWriter();                         // 0025F254
  void AddDouble(char const *, double);        // 0025F2CE
  void AddInt64(char const *, int64_t);        // 0025F314
  void AddUInt64(char const *, uint64_t);      // 0025F35A
  void AddInt(char const *, int);              // 0025F3A0
  void AddBool(char const *, bool);            // 0025F3DE
  void AddString(char const *, char const *);  // 0025F422
  void AddJSON(char const *, CFTTJson *);      // 0025F46A
  size_t GetJSONString(char *&pS);             // 0025F4AC
  void StartNested(char const *);              // 0025F54C
  void EndNested();                            // 0025F5A2
  void StartArray(char const *);               // 0025F5E0
  void EndArray();                             // 0025F63C
  void EndJSON();                              // 0025F682
  bool IsValid();                              // 0025F834
  char *GetItem(char const *, Value *v);       // 0025F83A
  char *GetJSONStringFromValue(Value *v);      // 0025F920

  rapidjson::Document *pDocument_0;
  rapidjson::StringBuffer Stringbuffer_4;
  PrettyWriter<StringBuffer> *pPrettyWriter_1C;
  bool parsejson_flag_20;
};

#endif  //_CFTTJSON_H_