Files
revng-revng/lib/HeadersGeneration/ModelToHeaderPipe.cpp
T
2026-06-17 11:30:34 +02:00

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