//===- DXContainer.h - DXContainer file 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 // //===----------------------------------------------------------------------===// // // This file declares the DXContainerFile class, which implements the ObjectFile // interface for DXContainer files. // // //===----------------------------------------------------------------------===// #ifndef LLVM_OBJECT_DXCONTAINER_H #define LLVM_OBJECT_DXCONTAINER_H #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/StringRef.h" #include "llvm/BinaryFormat/DXContainer.h" #include "llvm/Support/Error.h" #include "llvm/Support/MemoryBufferRef.h" #include "llvm/TargetParser/Triple.h" #include <array> #include <variant> namespace llvm { namespace object { namespace detail { template <typename T> std::enable_if_t<std::is_arithmetic<T>::value, void> swapBytes(T &value) { … } template <typename T> std::enable_if_t<std::is_class<T>::value, void> swapBytes(T &value) { … } } // namespace detail // This class provides a view into the underlying resource array. The Resource // data is little-endian encoded and may not be properly aligned to read // directly from. The dereference operator creates a copy of the data and byte // swaps it as appropriate. template <typename T> struct ViewArray { … }; namespace DirectX { class PSVRuntimeInfo { … }; class Signature { … }; } // namespace DirectX class DXContainer { … }; } // namespace object } // namespace llvm #endif // LLVM_OBJECT_DXCONTAINER_H