64 lines
2.1 KiB
C++
64 lines
2.1 KiB
C++
/*
|
|
* File: BootImageGenerator.h
|
|
*
|
|
* Copyright (c) Freescale Semiconductor, Inc. All rights reserved.
|
|
* See included license file for license details.
|
|
*/
|
|
#if !defined(_BootImageGenerator_h_)
|
|
#define _BootImageGenerator_h_
|
|
|
|
#include "OutputSection.h"
|
|
#include "BootImage.h"
|
|
#include "OptionContext.h"
|
|
|
|
namespace elftosb
|
|
{
|
|
/*!
|
|
* \brief Abstract base class for generators of specific boot image formats.
|
|
*
|
|
* Subclasses implement a concrete generator for a certain boot image format, but
|
|
* they all have the same interface.
|
|
*
|
|
* After creating an instance of a subclass the user adds OutputSection objects
|
|
* to the generator. These objects describe discrete sections within the resulting
|
|
* boot image file. If the format does not support multiple sections then only
|
|
* the first will be used.
|
|
*
|
|
* Options that are common to all boot image formats are handled by methods
|
|
* defined in this class. These are the current common options:
|
|
* - productVersion
|
|
* - componentVersion
|
|
* - driveTag
|
|
*/
|
|
class BootImageGenerator
|
|
{
|
|
public:
|
|
//! \brief Constructor.
|
|
BootImageGenerator() {}
|
|
//! \brief Destructor.
|
|
virtual ~BootImageGenerator() {}
|
|
//! \brief Add another section to the output.
|
|
void addOutputSection(OutputSection *section) { m_sections.push_back(section); }
|
|
//! \brief Set the global option context.
|
|
void setOptionContext(OptionContext *context) { m_options = context; }
|
|
//! \brief Pure virtual method to generate the output BootImage from input sections.
|
|
virtual BootImage *generate() = 0;
|
|
|
|
protected:
|
|
//! Type for a list of model output sections.
|
|
typedef std::vector<OutputSection *> section_vector_t;
|
|
|
|
section_vector_t m_sections; //!< Requested output sections.
|
|
OptionContext *m_options; //!< Global option context.
|
|
|
|
//! \brief Handle common product and component version options.
|
|
void processVersionOptions(BootImage *image);
|
|
|
|
//! \brief Handle the common option which sets the system drive tag.
|
|
void processDriveTagOption(BootImage *image);
|
|
};
|
|
|
|
}; // namespace elftosb
|
|
|
|
#endif // _BootImageGenerator_h_
|