#ifndef LLVMLAYER_H
#define LLVMLAYER_H

#include "llvm/IR/Module.h"
#include "llvm/IR/Function.h"
#include "llvm/PassManager.h"
#include "llvm/IR/CallingConv.h"
#include "llvm/Analysis/Verifier.h"
#include "llvm/Assembly/PrintModulePass.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/IR/LLVMContext.h"

class LLVMLayer
{
public:
    LLVMLayer();

    llvm::Module* module;
    llvm::IRBuilder<> builder;

    void moveToGarbage(void* o);

private:
    std::vector<void*> __garbage;
};

#endif // LLVMLAYER_H
