odin-blend2d

Odin bindings to Blend2D
Log | Files | Refs | README | LICENSE

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