1/*
2 * File:	DataSourceImager.h
3 *
4 * Copyright (c) Freescale Semiconductor, Inc. All rights reserved.
5 * See included license file for license details.
6 */
7#if !defined(_DataSourceImager_h_)
8#define _DataSourceImager_h_
9
10#include "Blob.h"
11#include "DataSource.h"
12
13namespace elftosb {
14
15/*!
16 * \brief Converts a DataSource into a single binary buffer.
17 */
18class DataSourceImager : public Blob
19{
20public:
21	//! \brief Constructor.
22	DataSourceImager();
23
24	//! \name Setup
25	//@{
26	void setBaseAddress(uint32_t address);
27	void setFillPattern(uint8_t pattern);
28	//@}
29
30	void reset();
31
32	//! \name Accessors
33	//@{
34	uint32_t getBaseAddress() { return m_baseAddress; }
35	//@}
36
37	//! \name Operations
38	//@{
39	//! \brief Adds all of the segments of which \a dataSource is composed.
40	void addDataSource(DataSource * source);
41
42	//! \brief Adds the data from one data segment.
43	void addDataSegment(DataSource::Segment * segment);
44	//@}
45
46protected:
47	uint8_t m_fill;
48	uint32_t m_baseAddress;
49	bool m_isBaseAddressSet;
50};
51
52};
53
54#endif // _DataSourceImager_h_
55