jsonbuilder.h (1162B)
1 #ifndef BL_BENCH_JSONBUILDER_H_INCLUDED 2 #define BL_BENCH_JSONBUILDER_H_INCLUDED 3 4 #include <blend2d.h> 5 6 namespace blbench { 7 8 class JSONBuilder { 9 public: 10 enum Token : uint32_t { 11 kTokenNone = 0, 12 kTokenValue = 1 13 }; 14 15 explicit JSONBuilder(BLString* dst); 16 17 JSONBuilder& open_array(); 18 JSONBuilder& close_array(bool nl = false); 19 20 JSONBuilder& open_object(); 21 JSONBuilder& close_object(bool nl = false); 22 23 JSONBuilder& comma(); 24 25 JSONBuilder& add_key(const char* str); 26 27 JSONBuilder& add_bool(bool b); 28 JSONBuilder& add_int(int64_t n); 29 JSONBuilder& add_uint(uint64_t n); 30 JSONBuilder& add_double(double d); 31 JSONBuilder& add_doublef(const char* fmt, double d); 32 JSONBuilder& add_string(const char* str); 33 JSONBuilder& add_stringf(const char* fmt, ...); 34 JSONBuilder& add_string_no_quotes(const char* str); 35 36 JSONBuilder& align_to(size_t n); 37 JSONBuilder& before_record(); 38 39 JSONBuilder& nl() { _dst->append('\n'); return *this; } 40 JSONBuilder& indent() { _dst->append(' ', _level); return *this; } 41 42 BLString* _dst {}; 43 uint32_t _last {}; 44 uint32_t _level {}; 45 }; 46 47 } // {blbench} namespace 48 49 #endif // BL_BENCH_JSONBUILDER_H_INCLUDED