brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 710ae95 Raw
52 lines · c
1//===- DXContainerObject.h --------------------------------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_LIB_OBJCOPY_DXCONTAINER_DXCONTAINEROBJECT_H10#define LLVM_LIB_OBJCOPY_DXCONTAINER_DXCONTAINEROBJECT_H11 12#include "llvm/ADT/ArrayRef.h"13#include "llvm/ADT/StringRef.h"14#include "llvm/Object/DXContainer.h"15 16namespace llvm {17namespace objcopy {18namespace dxbc {19 20using namespace object;21 22struct Part {23  StringRef Name;24  ArrayRef<uint8_t> Data;25 26  size_t size() const {27    return sizeof(::llvm::dxbc::PartHeader) // base header28           + Data.size();                   // contents size29  }30};31 32using PartPred = llvm::function_ref<bool(const Part &)>;33 34struct Object {35  ::llvm::dxbc::Header Header;36  SmallVector<Part> Parts;37 38  size_t headerSize() const {39    return sizeof(::llvm::dxbc::Header)       // base header40           + sizeof(uint32_t) * Parts.size(); // part offset values41  }42 43  Error removeParts(PartPred ToRemove);44  void recomputeHeader();45};46 47} // end namespace dxbc48} // end namespace objcopy49} // end namespace llvm50 51#endif // LLVM_LIB_OBJCOPY_DXCONTAINER_DXCONTAINEROBJECT_H52