MCPcopy Create free account
hub / github.com/boostorg/json / serialize_cbor_value

Function serialize_cbor_value

example/cbor.cpp:73–145  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

71}
72
73void
74serialize_cbor_value( const value& jv, std::vector<unsigned char>& out )
75{
76 switch( jv.kind() )
77 {
78 case kind::null:
79 out.push_back( 224 + 22 );
80 break;
81
82 case kind::bool_:
83 out.push_back( 224 + 20 + jv.get_bool() );
84 break;
85
86 case kind::int64:
87 {
88 std::int64_t n = jv.get_int64();
89 if( n >= 0 )
90 serialize_cbor_number( 0, n, out );
91 else
92 serialize_cbor_number( 1, ~n, out );
93 }
94 break;
95
96 case kind::uint64:
97 serialize_cbor_number( 0, jv.get_uint64(), out );
98 break;
99
100 case kind::double_:
101 {
102 unsigned char data[ 9 ];
103 data[ 0 ] = 224 + 27;
104 boost::endian::endian_store<double, 8, boost::endian::order::big>( data + 1, jv.get_double() );
105
106 out.insert( out.end(), std::begin(data), std::end(data) );
107 }
108 break;
109
110 case kind::string:
111 serialize_cbor_string( jv.get_string(), out );
112 break;
113
114 case kind::array:
115 {
116 const array& ja = jv.get_array();
117 std::size_t n = ja.size();
118
119 out.reserve( out.size() + n + 1 );
120
121 serialize_cbor_number( 4, n, out );
122
123 for( std::size_t i = 0; i < n; ++i )
124 serialize_cbor_value( ja[i], out );
125 }
126 break;
127
128 case kind::object:
129 {
130 const object& jo = jv.get_object();

Callers 1

mainFunction · 0.85

Calls 14

serialize_cbor_numberFunction · 0.85
serialize_cbor_stringFunction · 0.85
kindMethod · 0.80
get_boolMethod · 0.80
get_int64Method · 0.80
get_uint64Method · 0.80
get_doubleMethod · 0.80
keyMethod · 0.80
valueMethod · 0.80
push_backMethod · 0.45
insertMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected