/*
* File:        DataSourceImager.h
*
* Copyright (c) Freescale Semiconductor, Inc. All rights reserved.
* See included license file for license details.
*/
#if !defined(_DataSourceImager_h_)
#define _DataSourceImager_h_

#include "Blob.h"
#include "DataSource.h"

namespace elftosb {

/*!
* \brief Converts a DataSource into a single binary buffer.
*/
class DataSourceImager : public Blob
{
public:
       //! \brief Constructor.
       DataSourceImager();

       //! \name Setup
       //@{
       void setBaseAddress(uint32_t address);
       void setFillPattern(uint8_t pattern);
       //@}

       void reset();

       //! \name Accessors
       //@{
       uint32_t getBaseAddress() { return m_baseAddress; }
       //@}

       //! \name Operations
       //@{
       //! \brief Adds all of the segments of which \a dataSource is composed.
       void addDataSource(DataSource * source);

       //! \brief Adds the data from one data segment.
       void addDataSegment(DataSource::Segment * segment);
       //@}

protected:
       uint8_t m_fill;
       uint32_t m_baseAddress;
       bool m_isBaseAddressSet;
};

};

#endif // _DataSourceImager_h_