//===- OffloadYAML.h - Offload Binary YAMLIO implementation -----*- 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 classes for handling the YAML representation of /// offloading binaries. /// //===----------------------------------------------------------------------===// #ifndef LLVM_OBJECTYAML_OFFLOADYAML_H #define LLVM_OBJECTYAML_OFFLOADYAML_H #include "llvm/Object/OffloadBinary.h" #include "llvm/ObjectYAML/YAML.h" #include "llvm/Support/YAMLTraits.h" #include namespace llvm { namespace OffloadYAML { struct Binary { struct StringEntry { StringRef Key; StringRef Value; }; struct Member { std::optional ImageKind; std::optional OffloadKind; std::optional Flags; std::optional> StringEntries; std::optional Content; }; std::optional Version; std::optional Size; std::optional EntryOffset; std::optional EntrySize; std::vector Members; }; } // end namespace OffloadYAML } // end namespace llvm LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::OffloadYAML::Binary::Member) LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::OffloadYAML::Binary::StringEntry) namespace llvm { namespace yaml { template <> struct ScalarEnumerationTraits { static void enumeration(IO &IO, object::ImageKind &Value); }; template <> struct ScalarEnumerationTraits { static void enumeration(IO &IO, object::OffloadKind &Value); }; template <> struct MappingTraits { static void mapping(IO &IO, OffloadYAML::Binary &O); }; template <> struct MappingTraits { static void mapping(IO &IO, OffloadYAML::Binary::StringEntry &M); }; template <> struct MappingTraits { static void mapping(IO &IO, OffloadYAML::Binary::Member &M); }; } // end namespace yaml } // end namespace llvm #endif // LLVM_OBJECTYAML_OFFLOADYAML_H