LLVM 20.0.0git
|
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. | |
std::string | fixUTF8 (llvm::StringRef S) |
Replaces invalid UTF-8 sequences in S with the replacement character (U+FFFD). | |
template<typename T > | |
Value | toJSON (const std::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) |
std::vector< const Object::value_type * > | sortedElements (const Object &O) |
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, std::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< Value > | parse (llvm::StringRef JSON) |
Parses the provided JSON source, or returns a ParseError. | |
template<typename T > | |
Expected< T > | parse (const llvm::StringRef &JSON, const char *RootName="") |
Version of parse() that converts the parsed value to the type T. | |
llvm::raw_ostream & | operator<< (llvm::raw_ostream &OS, const Value &V) |
Serializes this Value to JSON, writing it to the provided stream. | |
Value | toJSON (const PGOCtxProfContext &P) |
Value | toJSON (const PGOCtxProfContext::CallTargetMapTy &P) |
static void | abbreviate (const Value &V, OStream &JOS) |
static void | abbreviateChildren (const Value &V, OStream &JOS) |
static void | encodeUtf8 (uint32_t Rune, std::string &Out) |
static void | quote (llvm::raw_ostream &OS, llvm::StringRef S) |
Variables | |
template<typename T > | |
constexpr bool | is_uint_64_bit_v |
Definition at line 259 of file JSON.cpp.
References llvm::json::Value::Array, fixUTF8(), llvm::json::Value::Object, llvm::json::OStream::rawValue(), llvm::StringRef::size(), llvm::json::Value::String, llvm::StringRef::take_front(), and llvm::json::OStream::value().
Referenced by abbreviateChildren(), and llvm::json::Path::Root::printErrorContext().
Definition at line 285 of file JSON.cpp.
References abbreviate(), llvm::json::Value::Array, llvm::json::OStream::array(), I, llvm::json::Value::Object, llvm::json::OStream::object(), sortedElements(), and llvm::json::OStream::value().
Referenced by llvm::json::Path::Root::printErrorContext().
|
static |
Definition at line 580 of file JSON.cpp.
References llvm_unreachable.
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 707 of file JSON.cpp.
References llvm::ConvertUTF32toUTF8(), llvm::ConvertUTF8toUTF32(), llvm::StringRef::data(), llvm::lenientConversion, llvm::StringRef::size(), and llvm::strictConversion.
Referenced by abbreviate(), llvm::json::OStream::attributeBegin(), llvm::json::ObjectKey::ObjectKey(), and llvm::json::Value::Value().
bool llvm::json::fromJSON | ( | const Value & | E, |
std::map< std::string, T > & | Out, | ||
Path | P | ||
) |
Definition at line 813 of file JSON.h.
References E, fromJSON(), and P.
bool llvm::json::fromJSON | ( | const Value & | E, |
std::optional< T > & | Out, | ||
Path | P | ||
) |
Definition at line 788 of file JSON.h.
References E, fromJSON(), and P.
Definition at line 731 of file JSON.h.
Referenced by fromJSON(), llvm::json::ObjectMapper::map(), llvm::json::ObjectMapper::mapOptional(), and parse().
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 693 of file JSON.cpp.
References llvm::StringRef::data(), llvm::Data, llvm::isLegalUTF8String(), LLVM_LIKELY, and llvm::StringRef::size().
Referenced by llvm::json::OStream::attributeBegin(), llvm::json::ObjectKey::ObjectKey(), and llvm::json::Value::Value().
|
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 1089 of file JSON.h.
References OS, and llvm::json::OStream::value().
Definition at line 87 of file JSON.cpp.
References LHS, llvm::operator==(), and RHS.
Definition at line 621 of file JSON.h.
References llvm::operator==().
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 914 of file JSON.h.
References fromJSON().
Expected< Value > llvm::json::parse | ( | llvm::StringRef | JSON | ) |
|
static |
Definition at line 724 of file JSON.cpp.
References llvm::CallingConv::C, llvm::Lower, OS, and llvm::write_hex().
Referenced by llvm::json::OStream::attributeBegin(), and llvm::json::OStream::value().
std::vector< const Object::value_type * > llvm::json::sortedElements | ( | const Object & | O | ) |
Definition at line 245 of file JSON.cpp.
References E, and llvm::sort().
Referenced by abbreviateChildren(), llvm::json::Path::Root::printErrorContext(), and llvm::json::OStream::value().
Value llvm::json::toJSON | ( | const PGOCtxProfContext & | P | ) |
Definition at line 34 of file CtxProfAnalysis.cpp.
References _, assert(), llvm::json::Array::back(), llvm::json::Value::getAsArray(), I, llvm::map_range(), llvm::max_element(), P, llvm::json::Array::push_back(), and toJSON().
Value llvm::json::toJSON | ( | const PGOCtxProfContext::CallTargetMapTy & | P | ) |
Definition at line 59 of file CtxProfAnalysis.cpp.
Definition at line 827 of file JSON.h.
Referenced by llvm::CtxProfAnalysisPrinterPass::run(), and toJSON().