LLVM  16.0.0git
Classes | Functions
llvm::json Namespace Reference

Classes

class  Array
 An Array is a JSON array, which contains heterogeneous JSON values. More...
 
class  Object
 An Object is a JSON object, which maps strings to heterogenous JSON values. More...
 
class  ObjectKey
 ObjectKey is a used to capture keys in Object. More...
 
class  ObjectMapper
 Helper for mapping JSON objects onto protocol structs. More...
 
class  OStream
 json::OStream allows writing well-formed JSON without materializing all structures as json::Value ahead of time. More...
 
class  ParseError
 
class  Path
 A "cursor" marking a position within a Value. More...
 
class  Value
 A Value is an JSON value of unknown type. More...
 

Functions

bool isUTF8 (llvm::StringRef S, size_t *ErrOffset=nullptr)
 Returns true if S is valid UTF-8, which is required for use as JSON. More...
 
std::string fixUTF8 (llvm::StringRef S)
 Replaces invalid UTF-8 sequences in S with the replacement character (U+FFFD). More...
 
template<typename T >
Value toJSON (const llvm::Optional< T > &Opt)
 
bool operator== (const Object &LHS, const Object &RHS)
 
bool operator!= (const Object &LHS, const Object &RHS)
 
bool operator!= (const Array &L, const Array &R)
 
bool operator== (const Value &, const Value &)
 
bool operator!= (const Value &L, const Value &R)
 
bool operator== (const Array &L, const Array &R)
 
bool operator== (const ObjectKey &L, const ObjectKey &R)
 
bool operator!= (const ObjectKey &L, const ObjectKey &R)
 
bool operator< (const ObjectKey &L, const ObjectKey &R)
 
bool fromJSON (const Value &E, std::string &Out, Path P)
 
bool fromJSON (const Value &E, int &Out, Path P)
 
bool fromJSON (const Value &E, int64_t &Out, Path P)
 
bool fromJSON (const Value &E, double &Out, Path P)
 
bool fromJSON (const Value &E, bool &Out, Path P)
 
bool fromJSON (const Value &E, uint64_t &Out, Path P)
 
bool fromJSON (const Value &E, std::nullptr_t &Out, Path P)
 
template<typename T >
bool fromJSON (const Value &E, llvm::Optional< T > &Out, Path P)
 
template<typename T >
bool fromJSON (const Value &E, std::vector< T > &Out, Path P)
 
template<typename T >
bool fromJSON (const Value &E, std::map< std::string, T > &Out, Path P)
 
llvm::Expected< Valueparse (llvm::StringRef JSON)
 Parses the provided JSON source, or returns a ParseError. More...
 
template<typename T >
Expected< Tparse (const llvm::StringRef &JSON, const char *RootName="")
 Version of parse() that converts the parsed value to the type T. More...
 
llvm::raw_ostreamoperator<< (llvm::raw_ostream &OS, const Value &V)
 Serializes this Value to JSON, writing it to the provided stream. More...
 
static void quote (llvm::raw_ostream &OS, llvm::StringRef S)
 

Function Documentation

◆ fixUTF8()

std::string llvm::json::fixUTF8 ( llvm::StringRef  S)

Replaces invalid UTF-8 sequences in S with the replacement character (U+FFFD).

The returned string is valid UTF-8. This is much slower than isUTF8, so test that first.

Definition at line 708 of file JSON.cpp.

References llvm::ConvertUTF32toUTF8(), llvm::ConvertUTF8toUTF32(), llvm::lenientConversion, S, and llvm::strictConversion.

Referenced by llvm::json::OStream::attributeBegin(), llvm::json::ObjectKey::ObjectKey(), and llvm::json::Value::Value().

◆ fromJSON() [1/10]

bool llvm::json::fromJSON ( const Value E,
bool &  Out,
Path  P 
)
inline

Definition at line 739 of file JSON.h.

References E, P, and S.

◆ fromJSON() [2/10]

bool llvm::json::fromJSON ( const Value E,
double Out,
Path  P 
)
inline

Definition at line 731 of file JSON.h.

References E, P, and S.

◆ fromJSON() [3/10]

bool llvm::json::fromJSON ( const Value E,
int Out,
Path  P 
)
inline

Definition at line 715 of file JSON.h.

References E, P, and S.

◆ fromJSON() [4/10]

bool llvm::json::fromJSON ( const Value E,
int64_t &  Out,
Path  P 
)
inline

Definition at line 723 of file JSON.h.

References E, P, and S.

◆ fromJSON() [5/10]

template<typename T >
bool llvm::json::fromJSON ( const Value E,
llvm::Optional< T > &  Out,
Path  P 
)

Definition at line 764 of file JSON.h.

References E, fromJSON(), move, llvm::None, P, and T.

◆ fromJSON() [6/10]

template<typename T >
bool llvm::json::fromJSON ( const Value E,
std::map< std::string, T > &  Out,
Path  P 
)

Definition at line 789 of file JSON.h.

References E, fromJSON(), llvm::RISCVFenceField::O, and P.

◆ fromJSON() [7/10]

bool llvm::json::fromJSON ( const Value E,
std::nullptr_t &  Out,
Path  P 
)
inline

Definition at line 755 of file JSON.h.

References E, P, and S.

◆ fromJSON() [8/10]

bool llvm::json::fromJSON ( const Value E,
std::string &  Out,
Path  P 
)
inline

Definition at line 707 of file JSON.h.

References E, P, and S.

Referenced by fromJSON(), llvm::json::ObjectMapper::map(), llvm::json::ObjectMapper::mapOptional(), and parse().

◆ fromJSON() [9/10]

template<typename T >
bool llvm::json::fromJSON ( const Value E,
std::vector< T > &  Out,
Path  P 
)

Definition at line 776 of file JSON.h.

References E, fromJSON(), I, and P.

◆ fromJSON() [10/10]

bool llvm::json::fromJSON ( const Value E,
uint64_t Out,
Path  P 
)
inline

Definition at line 747 of file JSON.h.

References E, P, and S.

◆ isUTF8()

bool llvm::json::isUTF8 ( llvm::StringRef  S,
size_t ErrOffset = nullptr 
)

Returns true if S is valid UTF-8, which is required for use as JSON.

If it returns false, Offset is set to a byte offset near the first error.

Definition at line 694 of file JSON.cpp.

References llvm::Data, llvm::isLegalUTF8String(), LLVM_LIKELY, and S.

Referenced by llvm::json::OStream::attributeBegin(), llvm::json::ObjectKey::ObjectKey(), and llvm::json::Value::Value().

◆ operator!=() [1/4]

bool llvm::json::operator!= ( const Array L,
const Array R 
)
inline

Definition at line 203 of file JSON.h.

◆ operator!=() [2/4]

bool llvm::json::operator!= ( const Object LHS,
const Object RHS 
)
inline

Definition at line 151 of file JSON.h.

References LHS, and RHS.

◆ operator!=() [3/4]

bool llvm::json::operator!= ( const ObjectKey L,
const ObjectKey R 
)
inline

Definition at line 602 of file JSON.h.

◆ operator!=() [4/4]

bool llvm::json::operator!= ( const Value L,
const Value R 
)
inline

Definition at line 508 of file JSON.h.

References llvm::RISCVFenceField::R.

◆ operator<()

bool llvm::json::operator< ( const ObjectKey L,
const ObjectKey R 
)
inline

Definition at line 605 of file JSON.h.

◆ operator<<()

llvm::raw_ostream& llvm::json::operator<< ( llvm::raw_ostream OS,
const Value V 
)
inline

Serializes this Value to JSON, writing it to the provided stream.

The formatting is compact (no extra whitespace) and deterministic. For pretty-printing, use the formatv() format_provider below.

Definition at line 1065 of file JSON.h.

References llvm::json::OStream::value().

◆ operator==() [1/4]

bool llvm::json::operator== ( const Array L,
const Array R 
)
inline

Definition at line 550 of file JSON.h.

References llvm::RISCVFenceField::R.

◆ operator==() [2/4]

bool llvm::json::operator== ( const Object LHS,
const Object RHS 
)

Definition at line 84 of file JSON.cpp.

References LHS, and RHS.

◆ operator==() [3/4]

bool llvm::json::operator== ( const ObjectKey L,
const ObjectKey R 
)
inline

Definition at line 599 of file JSON.h.

◆ operator==() [4/4]

bool llvm::json::operator== ( const Value L,
const Value R 
)

◆ parse() [1/2]

template<typename T >
Expected<T> llvm::json::parse ( const llvm::StringRef JSON,
const char *  RootName = "" 
)

Version of parse() that converts the parsed value to the type T.

RootName describes the root object and is used in error messages.

Definition at line 890 of file JSON.h.

References fromJSON(), move, parse(), and T.

◆ parse() [2/2]

Expected< Value > llvm::json::parse ( llvm::StringRef  JSON)

Parses the provided JSON source, or returns a ParseError.

The returned Value is self-contained and owns its strings (they do not refer to the original source).

Definition at line 683 of file JSON.cpp.

References E, move, and P.

Referenced by parse().

◆ quote()

static void llvm::json::quote ( llvm::raw_ostream OS,
llvm::StringRef  S 
)
static

Definition at line 725 of file JSON.cpp.

References llvm::Lower, S, and llvm::write_hex().

Referenced by llvm::json::OStream::attributeBegin(), and llvm::json::OStream::value().

◆ toJSON()

template<typename T >
Value llvm::json::toJSON ( const llvm::Optional< T > &  Opt)

Definition at line 803 of file JSON.h.