//===-- MsgPackDocument.h - MsgPack Document --------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// /// \file /// This file declares a class that exposes a simple in-memory representation /// of a document of MsgPack objects, that can be read from MsgPack, written to /// MsgPack, and inspected and modified in memory. This is intended to be a /// lighter-weight (in terms of memory allocations) replacement for /// MsgPackTypes. /// //===----------------------------------------------------------------------===// #ifndef LLVM_BINARYFORMAT_MSGPACKDOCUMENT_H #define LLVM_BINARYFORMAT_MSGPACKDOCUMENT_H #include "llvm/BinaryFormat/MsgPackReader.h" #include <map> namespace llvm { namespace msgpack { class ArrayDocNode; class Document; class MapDocNode; /// The kind of a DocNode and its owning Document. struct KindAndDocument { … }; /// A node in a MsgPack Document. This is a simple copyable and /// passable-by-value type that does not own any memory. class DocNode { … }; /// A DocNode that is a map. class MapDocNode : public DocNode { … }; /// A DocNode that is an array. class ArrayDocNode : public DocNode { … }; /// 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. class Document { … }; } // namespace msgpack } // namespace llvm #endif // LLVM_BINARYFORMAT_MSGPACKDOCUMENT_H