]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - tools/elftosb/common/Blob.h
merged tx6dl-devel into denx master branch
[karo-tx-uboot.git] / tools / elftosb / common / Blob.h
1 /*
2  * File:        Blob.h
3  *
4  * Copyright (c) Freescale Semiconductor, Inc. All rights reserved.
5  * See included license file for license details.
6  */
7 #if !defined(_Blob_h_)
8 #define _Blob_h_
9
10 #include "stdafx.h"
11
12 /*!
13  * \brief Manages a binary object of arbitrary length.
14  *
15  * The data block is allocated with malloc() instead of the new
16  * operator so that we can use realloc() to resize it.
17  */
18 class Blob
19 {
20 public:
21         //! \brief Default constructor.
22         Blob();
23         
24         //! \brief Constructor.
25         Blob(const uint8_t * data, unsigned length);
26         
27         //! \brief Copy constructor.
28         Blob(const Blob & other);
29         
30         //! \brief Destructor.
31         virtual ~Blob();
32         
33         //! \name Operations
34         //@{
35         //! \brief Replaces the blob's data.
36         void setData(const uint8_t * data, unsigned length);
37         
38         //! \brief Change the size of the blob's data.
39         void setLength(unsigned length);
40         
41         //! \brief Adds data to the end of the blob.
42         void append(const uint8_t * newData, unsigned newDataLength);
43         
44         //! \brief Disposes of the data.
45         void clear();
46         
47         //! \brief Tell the blob that it no longer owns its data.
48         void relinquish();
49         //@}
50         
51         //! \name Accessors
52         //@{
53         uint8_t * getData() { return m_data; }
54         const uint8_t * getData() const { return m_data; }
55         unsigned getLength() const { return m_length; }
56         //@}
57         
58         //! \name Operators
59         //@{
60         operator uint8_t * () { return m_data; }
61         operator const uint8_t * () const { return m_data; }
62         //@}
63
64 protected:
65         uint8_t * m_data;       //!< The binary data held by this object.
66         unsigned m_length;      //!< Number of bytes pointed to by #m_data.
67 };
68
69 #endif // _Blob_h_
70