mirror of
https://github.com/revng/revng
synced 2026-06-21 14:07:57 +00:00
35 lines
1.2 KiB
C++
35 lines
1.2 KiB
C++
//
|
|
// This file is distributed under the MIT License. See LICENSE.md for details.
|
|
//
|
|
|
|
#include "revng/HeadersGeneration/ConfigurationHelpers.h"
|
|
#include "revng/HeadersGeneration/ModelToHeaderPipe.h"
|
|
#include "revng/HeadersGeneration/PTMLHeaderBuilder.h"
|
|
#include "revng/Pipeline/AllRegistries.h"
|
|
#include "revng/Pipeline/RegisterContainerFactory.h"
|
|
#include "revng/Pipes/FileContainer.h"
|
|
#include "revng/Pipes/Kinds.h"
|
|
#include "revng/Pipes/ModelGlobal.h"
|
|
|
|
namespace revng::pypeline::piperuns {
|
|
|
|
ModelToHeader::ModelToHeader(const Model &TheModel,
|
|
llvm::StringRef StaticConfig,
|
|
llvm::StringRef DynamicConfig,
|
|
PTMLCBytesContainer &Buffer) :
|
|
Binary(*TheModel.get().get()), Buffer(Buffer){};
|
|
|
|
void ModelToHeader::run() {
|
|
std::unique_ptr<llvm::raw_ostream> Out = Buffer.getOStream(ObjectID());
|
|
ptml::ModelCBuilder
|
|
B(*Out,
|
|
Binary,
|
|
/* EnableTaglessMode = */ false,
|
|
{ .EnablePrintingOfTheMaximumEnumValue = true,
|
|
.ExplicitTargetPointerSize = getExplicitPointerSize(Binary) });
|
|
ptml::HeaderBuilder(B).printModelHeader(/*DefineOpaqueTypes*/ true);
|
|
Out->flush();
|
|
}
|
|
|
|
} // namespace revng::pypeline::piperuns
|