Files
revng-revng/include/revng/Model/LoadModelPass.h
Alessandro Di Federico 38031f2f8a Import preliminary model
This commit imports:

* support for (de-)serializing tuple-like objects in YAML
* the Model data structure
* the {Load,Serialize}ModelPass
2021-01-27 19:46:53 +01:00

37 lines
738 B
C++

#pragma once
//
// This file is distributed under the MIT License. See LICENSE.md for details.
//
#include "llvm/Pass.h"
#include "revng/Model/Binary.h"
inline const char *ModelMetadataName = "revng.model";
class LoadModelPass : public llvm::ImmutablePass {
public:
static char ID;
private:
model::Binary TheBinary;
bool Modified = false;
public:
LoadModelPass() : llvm::ImmutablePass(ID) {}
public:
bool doInitialization(llvm::Module &M) override final;
bool doFinalization(llvm::Module &M) override final;
public:
bool hasChanged() const { return Modified; }
const model::Binary &getReadOnlyModel() { return TheBinary; }
model::Binary &getWriteableModel() {
Modified = true;
return TheBinary;
}
};