/* * File: BootImage.h * * Copyright (c) Freescale Semiconductor, Inc. All rights reserved. * See included license file for license details. */ #if !defined(_BootImage_h_) #define _BootImage_h_ #include #include "Version.h" namespace elftosb { /*! * \brief Abstract base class for all boot image format classes. * * Provides virtual methods for all of the common features between different * boot image formats. These are the product and component version numbers * and the drive tag. * * Also provided is the virtual method writeToStream() that lets the caller * stream out the boot image without knowing the underlying format type. */ class BootImage { public: //! \brief Constructor. BootImage() {} //! \brief Destructor. virtual ~BootImage() {} //! \name Versions //@{ virtual void setProductVersion(const version_t &version) = 0; virtual void setComponentVersion(const version_t &version) = 0; //@} //! \brief Specify the drive tag to be set in the output file header. virtual void setDriveTag(uint16_t tag) = 0; //! \brief Returns a string containing the preferred file extension for image format. virtual std::string getFileExtension() const = 0; //! \brief Write the boot image to an output stream. virtual void writeToStream(std::ostream &stream) = 0; }; }; // namespace elftosb #endif // _BootImage_h_