/* * 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 <iostream> #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_ |