summaryrefslogtreecommitdiffstats
path: root/src/Data.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Data.cpp')
-rw-r--r--src/Data.cpp25
1 files changed, 14 insertions, 11 deletions
diff --git a/src/Data.cpp b/src/Data.cpp
index df5c1c7..94767c9 100644
--- a/src/Data.cpp
+++ b/src/Data.cpp
@@ -18,7 +18,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include <stdlib.h>
+#include <cstdlib>
#include <plist/Data.h>
namespace PList
@@ -32,14 +32,16 @@ Data::Data(plist_t node, Node* parent) : Node(node, parent)
{
}
-Data::Data(PList::Data& d) : Node(PLIST_DATA)
+Data::Data(const PList::Data& d) : Node(PLIST_DATA)
{
std::vector<char> b = d.GetValue();
plist_set_data_val(_node, &b[0], b.size());
}
-Data& Data::operator=(PList::Data& b)
+Data& Data::operator=(const PList::Data& b)
{
+ if (this == &b) return *this;
+
plist_free(_node);
_node = plist_copy(b.GetPlist());
return *this;
@@ -50,11 +52,16 @@ Data::Data(const std::vector<char>& buff) : Node(PLIST_DATA)
plist_set_data_val(_node, &buff[0], buff.size());
}
+Data::Data(const char* buff, uint64_t size) : Node(PLIST_DATA)
+{
+ plist_set_data_val(_node, buff, size);
+}
+
Data::~Data()
{
}
-Node* Data::Clone()
+Node* Data::Clone() const
{
return new Data(*this);
}
@@ -64,16 +71,12 @@ void Data::SetValue(const std::vector<char>& buff)
plist_set_data_val(_node, &buff[0], buff.size());
}
-std::vector<char> Data::GetValue()
+std::vector<char> Data::GetValue() const
{
- char* buff = NULL;
uint64_t length = 0;
- plist_get_data_val(_node, &buff, &length);
+ const char* buff = plist_get_data_ptr(_node, &length);
std::vector<char> ret(buff, buff + length);
- free(buff);
return ret;
}
-
-
-};
+} // namespace PList