diff --git a/include/zipr.h b/include/zipr.h index f473c528c90e5ee1069dc68e7be0f7e764926efe..5dccca2e715d90891dbe581a4ae38d0a83e62e71 100644 --- a/include/zipr.h +++ b/include/zipr.h @@ -33,38 +33,20 @@ #include <memory_space.h> #include <dollop_man.h> +#include <set> +#include <utility> namespace Zipr_SDK { +typedef std::set< std::pair<Dollop_t*,RangeAddress_t> > PlacementQueue_t; + class Zipr_t { - protected: - /* - * Private, but listing them here so that SDK users - * can get a sense of the overall flow of the rewriter. - */ - virtual void FindFreeRanges(const std::string &name) = 0; - virtual void AddPinnedInstructions() = 0; - virtual void ReservePinnedInstructions() = 0; - virtual void PreReserve2ByteJumpTargets() = 0; - virtual void ExpandPinnedInstructions() = 0; - virtual void Fix2BytePinnedInstructions() = 0; - virtual void CreateDollops() = 0; - virtual void PlaceDollops() = 0; - virtual void WriteDollops() = 0; - virtual void UpdatePins() = 0; - virtual void OptimizePinnedInstructions() = 0; - virtual void AskPluginsAboutPlopping() = 0; - virtual void UpdateCallbacks() = 0; - virtual void PrintStats() = 0; - virtual void RecordPinnedInsnAddrs() = 0; - public: /* - * These are public functions that the SDK user - * way want to use. + * These are public functions that the SDK user way want to use. */ virtual int DetermineWorstCaseInsnSize(libIRDB::Instruction_t*, bool account_for_jump = true) = 0; @@ -89,6 +71,7 @@ class Zipr_t virtual libIRDB::FileIR_t *GetFileIR()=0; virtual Zipr_SDK::InstructionLocationMap_t *GetLocationMap()=0; virtual Zipr_SDK::DollopManager_t *GetDollopManager()=0; + virtual Zipr_SDK::PlacementQueue_t* GetPlacementQueue()=0; }; };