LLVM: llvm::msgpack::Document Class Reference (original) (raw)

Simple in-memory representation of a document of msgpack objects with ability to find and create array and map elements. More...

#include "[llvm/BinaryFormat/MsgPackDocument.h](MsgPackDocument%5F8h%5Fsource.html)"

Public Member Functions
Document ()
DocNode & getRoot ()
Get ref to the document's root element.
void clear ()
Restore the Document to an empty state.
DocNode getEmptyNode ()
Create an empty node associated with this Document.
DocNode getNode ()
Create a nil node associated with this Document.
DocNode getNode (int64_t V)
Create an Int node associated with this Document.
DocNode getNode (int V)
Create an Int node associated with this Document.
DocNode getNode (uint64_t V)
Create a UInt node associated with this Document.
DocNode getNode (unsigned V)
Create a UInt node associated with this Document.
DocNode getNode (bool V)
Create a Boolean node associated with this Document.
DocNode getNode (double V)
Create a Float node associated with this Document.
DocNode getNode (StringRef V, bool Copy=false)
Create a String node associated with this Document.
DocNode getNode (const char *V, bool Copy=false)
Create a String node associated with this Document.
DocNode getNode (MemoryBufferRef V, bool Copy=false)
Create a Binary node associated with this Document.
MapDocNode getMapNode ()
Create an empty Map node associated with this Document.
ArrayDocNode getArrayNode ()
Create an empty Array node associated with this Document.
LLVM_ABI bool readFromBlob (StringRef Blob, bool Multi, function_ref< int(DocNode *DestNode, DocNode SrcNode, DocNode MapKey)> Merger=[](DocNode *DestNode, DocNode SrcNode, DocNode MapKey) { return -1;})
Read a document from a binary msgpack blob, merging into anything already in the Document.
LLVM_ABI void writeToBlob (std::string &Blob)
Write a MsgPack document to a binary MsgPack blob.
StringRef addString (StringRef S)
Copy a string into the Document's strings list, and return the copy that is owned by the Document.
void setHexMode (bool Val=true)
Set whether YAML output uses hex for UInt. Default off.
bool getHexMode () const
Get Hexmode flag.
LLVM_ABI void toYAML (raw_ostream &OS)
Convert MsgPack Document to YAML text.
LLVM_ABI bool fromYAML (StringRef S)
Read YAML text into the MsgPack document. Returns false on failure.

Simple in-memory representation of a document of msgpack objects with ability to find and create array and map elements.

Does not currently cope with any extension types.

Definition at line 280 of file MsgPackDocument.h.

llvm::msgpack::Document::Document ( ) inline

addString()

clear()

void llvm::msgpack::Document::clear ( ) inline

fromYAML()

getArrayNode()

ArrayDocNode llvm::msgpack::Document::getArrayNode ( ) inline

getEmptyNode()

DocNode llvm::msgpack::Document::getEmptyNode ( ) inline

getHexMode()

bool llvm::msgpack::Document::getHexMode ( ) const inline

getMapNode()

MapDocNode llvm::msgpack::Document::getMapNode ( ) inline

getNode() [1/10]

DocNode llvm::msgpack::Document::getNode ( ) inline

Create a nil node associated with this Document.

Definition at line 316 of file MsgPackDocument.h.

References N, and llvm::msgpack::Nil.

Referenced by llvm::AMDGPU::HSAMD::MetadataStreamerMsgPackV4::emitKernelAttrs(), llvm::AMDGPU::HSAMD::MetadataStreamerMsgPackV5::emitKernelAttrs(), llvm::AMDGPU::HSAMD::MetadataStreamerMsgPackV4::emitKernelLanguage(), llvm::msgpack::DocNode::fromString(), getNode(), getNode(), llvm::msgpack::DocNode::operator=(), llvm::msgpack::DocNode::operator=(), llvm::msgpack::DocNode::operator=(), llvm::msgpack::DocNode::operator=(), llvm::msgpack::DocNode::operator=(), llvm::msgpack::DocNode::operator=(), llvm::msgpack::DocNode::operator=(), llvm::msgpack::DocNode::operator=(), llvm::msgpack::MapDocNode::operator, llvm::msgpack::MapDocNode::operator, llvm::msgpack::MapDocNode::operator, llvm::msgpack::MapDocNode::operator, llvm::msgpack::MapDocNode::operator, and readFromBlob().

getNode() [2/10]

DocNode llvm::msgpack::Document::getNode ( bool V) inline

getNode() [3/10]

getNode() [4/10]

DocNode llvm::msgpack::Document::getNode ( double V) inline

getNode() [5/10]

DocNode llvm::msgpack::Document::getNode ( int V) inline

getNode() [6/10]

DocNode llvm::msgpack::Document::getNode ( int64_t V) inline

getNode() [7/10]

getNode() [8/10]

getNode() [9/10]

getNode() [10/10]

getRoot()

DocNode & llvm::msgpack::Document::getRoot ( ) inline

readFromBlob()

Read a document from a binary msgpack blob, merging into anything already in the Document.

The blob data must remain valid for the lifetime of this Document (because a string object in the document contains a StringRef into the original blob). If Multi, then this sets root to an array and adds top-level objects to it. If !Multi, then it only reads a single top-level object, even if there are more, and sets root to that. Returns false if failed due to illegal format or merge error.

The Merger arg is a callback function that is called when the merge has a conflict, that is, it is trying to set an item that is already set. If the conflict cannot be resolved, the callback function returns -1. If the conflict can be resolved, the callback returns a non-negative number and sets *DestNode to the resolved node. The returned non-negative number is significant only for an array node; it is then the array index to start populating at. That allows Merger to choose whether to merge array elements (returns 0) or append new elements (returns existing size).

If SrcNode is an array or map, the resolution must be that *DestNode is an array or map respectively, although it could be the array or map (respectively) that was already there. MapKey is the key if *DestNode is a map entry, a nil node otherwise.

The default for Merger is to disallow any conflict.

Definition at line 135 of file MsgPackDocument.cpp.

References llvm::msgpack::Array, assert(), llvm::msgpack::Binary, llvm::msgpack::Boolean, llvm::consumeError(), llvm::msgpack::Float, llvm::Expected< T >::get(), getArrayNode(), llvm::msgpack::DocNode::getKind(), getMapNode(), getNode(), llvm::msgpack::Int, llvm::msgpack::DocNode::isArray(), llvm::msgpack::DocNode::isEmpty(), llvm::msgpack::DocNode::isMap(), llvm::msgpack::Map, Merger, llvm::msgpack::Nil, llvm::msgpack::Reader::read(), llvm::msgpack::String, llvm::Expected< T >::takeError(), and llvm::msgpack::UInt.

setHexMode()

void llvm::msgpack::Document::setHexMode ( bool Val = true) inline

Set whether YAML output uses hex for UInt. Default off.

Definition at line 448 of file MsgPackDocument.h.

toYAML()

writeToBlob()

void Document::writeToBlob ( std::string & Blob )

Write a MsgPack document to a binary MsgPack blob.

Definition at line 264 of file MsgPackDocument.cpp.

References llvm::msgpack::Array, llvm::msgpack::Binary, llvm::msgpack::Boolean, llvm::msgpack::Empty, llvm::msgpack::Float, Node::getKind(), getRoot(), llvm::msgpack::Int, llvm_unreachable, llvm::msgpack::Map, llvm::msgpack::Nil, llvm::msgpack::String, llvm::msgpack::UInt, llvm::msgpack::Writer::write(), llvm::msgpack::Writer::writeArraySize(), llvm::msgpack::Writer::writeMapSize(), and llvm::msgpack::Writer::writeNil().

Referenced by llvm::AMDGPUTargetELFStreamer::EmitHSAMetadata().


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