#ifndef _library_patchrom__hpp__included__ #define _library_patchrom__hpp__included__ #include #include /** * Patch a ROM. Autodetects type of patch. * * Parameter original: The orignal file to patch. * Parameter patch: The patch to apply. * Parameter offset: Offset to apply. * Returns The patched file. * Throws std::bad_alloc: Not enough memory. * Throws std::runtime_error: Invalid patch file. */ std::vector do_patch_file(const std::vector& original, const std::vector& patch, int32_t offset) throw(std::bad_alloc, std::runtime_error); /** * ROM patcher. */ struct rom_patcher { /** * Constructor. */ rom_patcher() throw(std::bad_alloc); /** * Destructor. */ virtual ~rom_patcher() throw(); /** * Identify patch. * * Parameter patch: The patch. * Returns: True if my format, false if not. */ virtual bool identify(const std::vector& patch) throw() = 0; /** * Do the patch. */ virtual void dopatch(std::vector& out, const std::vector& original, const std::vector& patch, int32_t offset) throw(std::bad_alloc, std::runtime_error) = 0; }; #endif