1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
#pragma once
#include "Core/Object.h"
namespace code {
STORM_PKG(core.asm);
class Listing;
class Arena;
/**
* Base class for custom transforms.
*/
class Transform : public Object {
STORM_CLASS;
public:
STORM_CTOR Transform();
// Called before transforming something.
virtual void STORM_FN before(Listing *dest, Listing *src);
// Called once for each instruction in 'src'.
virtual void STORM_FN during(Listing *dest, Listing *src, Nat id);
// Called after thransforming is done.
virtual void STORM_FN after(Listing *dest, Listing *src);
};
// Transform using a transformer.
Listing *STORM_FN transform(Listing *src, const Arena *arena, Transform *use);
}
|