/*************************************************************************** * Copyright (c) 2014 Zephyr Software LLC. All rights reserved. * * This software is furnished under a license and/or other restrictive * terms and may be used and copied only in accordance with such terms * and the inclusion of the above copyright notice. This software or * any other copies thereof may not be provided or otherwise made * available to any other person without the express written consent * of an authorized representative of Zephyr Software LCC. Title to, * ownership of, and all rights in the software is retained by * Zephyr Software LCC. * * Zephyr Software LLC. Proprietary Information * * Unless otherwise specified, the information contained in this * directory, following this legend, and/or referenced herein is * Zephyr Software LLC. (Zephyr) Proprietary Information. * * CONTACT * * For technical assistance, contact Zephyr Software LCC. at: * * * Zephyr Software, LLC * 2040 Tremont Rd * Charlottesville, VA 22911 * * E-mail: jwd@zephyr-software.com **************************************************************************/ #ifndef zipr_h #define zipr_h #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 { public: /* * These are public functions that the SDK user way want to use. */ virtual size_t DetermineDollopEntrySize( DollopEntry_t*, bool account_for_fallthrough) = 0; virtual RangeAddress_t PlopDollopEntry( DollopEntry_t *, RangeAddress_t = 0, RangeAddress_t = 0) = 0; virtual RangeAddress_t PlopDollopEntryWithTarget( DollopEntry_t *, RangeAddress_t = 0, RangeAddress_t = 0) = 0; virtual RangeAddress_t PlopDollopEntryWithCallback( DollopEntry_t *, RangeAddress_t = 0) = 0; virtual MemorySpace_t *GetMemorySpace()=0; virtual ELFIO::elfio *getELFIO()=0; virtual IRDB_SDK::FileIR_t *getFileIR()=0; virtual InstructionLocationMap_t *GetLocationMap()=0; virtual DollopManager_t *getDollopManager()=0; virtual PlacementQueue_t* GetPlacementQueue()=0; virtual void ApplyPatch( RangeAddress_t from_addr, RangeAddress_t to_addr)=0; }; }; #endif