--- /dev/null
+/*
+ * 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_
+