GCC Middle and Back End API Reference
json::value Class Referenceabstract

#include <json.h>

Inheritance diagram for json::value:
Collaboration diagram for json::value:

Public Member Functions

virtual ~value ()
virtual enum kind get_kind () const =0
virtual void print (pretty_printer *pp, bool formatted) const =0
virtual std::unique_ptr< valueclone () const =0
void dump (FILE *, bool formatted) const
void DEBUG_FUNCTION dump () const
virtual objectdyn_cast_object ()
virtual stringdyn_cast_string ()
const pointer::tokenget_pointer_token () const

Static Public Member Functions

static int compare (const json::value &val_a, const json::value &val_b)

Data Fields

pointer::token m_pointer_token

Detailed Description

Base class of JSON value.   

Constructor & Destructor Documentation

◆ ~value()

virtual json::value::~value ( )
inlinevirtual

Member Function Documentation

◆ clone()

virtual std::unique_ptr< value > json::value::clone ( ) const
pure virtual

◆ compare()

int value::compare ( const json::value & val_a,
const json::value & val_b )
static
A deterministic total ordering for comparing json values, so that we
can e.g. put them in std::map.

This is intended to follow the condition for equality described in
the JSON Schema standard (§4.3, “Instance equality”), as referenced
by SARIF v2.1.0 (§3.7.3 "Array properties with unique values"), but has
the following limitations:
- numbers are supposed to be checked for "the same mathematical value",
but in this implementation int vs float numbers won't compare as equal,
and float number comparison is bitwise
- strings are supposed to be "the same codepoint-for-codepoint", but
this implementation doesn't take into account canonicalization issues.   

References json::object::compare(), compare(), gcc_unreachable, json::float_number::get(), json::integer_number::get(), get_kind(), json::string::get_string(), json::JSON_ARRAY, json::JSON_FALSE, json::JSON_FLOAT, json::JSON_INTEGER, json::JSON_NULL, json::JSON_OBJECT, json::JSON_STRING, json::JSON_TRUE, and json::array::size().

Referenced by json::object::compare(), compare(), and diagnostics::sarif_array_of_unique< JsonElementType >::comparator_t::operator()().

◆ dump() [1/2]

void value::dump ( ) const
A convenience function for debugging.
Dump to stderr with formatting, and a trailing newline.  

References dump().

◆ dump() [2/2]

void value::dump ( FILE * outf,
bool formatted ) const
class json::value.   
Dump this json::value tree to OUTF.

The key/value pairs of json::objects are printed in the order
in which the keys were originally inserted.   

References output_buffer::m_stream, pp_buffer(), pp_flush(), and print().

Referenced by dump(), generate_results(), and diagnostics::sarif_serialization_format_json::write_to_file().

◆ dyn_cast_object()

virtual object * json::value::dyn_cast_object ( )
inlinevirtual

◆ dyn_cast_string()

virtual string * json::value::dyn_cast_string ( )
inlinevirtual

Reimplemented in json::string.

◆ get_kind()

virtual enum kind json::value::get_kind ( ) const
pure virtual

◆ get_pointer_token()

const pointer::token & json::value::get_pointer_token ( ) const
inline

References m_pointer_token.

◆ print()

virtual void json::value::print ( pretty_printer * pp,
bool formatted ) const
pure virtual

Field Documentation

◆ m_pointer_token

pointer::token json::value::m_pointer_token

The documentation for this class was generated from the following files: