From 553c3849207a29abd1cb58f82d5994e5cd9d1f2d Mon Sep 17 00:00:00 2001 From: Nikias Bassen Date: Tue, 19 Mar 2013 16:50:47 +0100 Subject: C++: added support for PLIST_UID nodes (class Uid) --- src/CMakeLists.txt | 1 + src/Node.cpp | 7 ++++++ src/Uid.cpp | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 src/Uid.cpp (limited to 'src') diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ad7362b..c4f5483 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -20,6 +20,7 @@ SET(libplist++_SRC Date.cpp Data.cpp Key.cpp + Uid.cpp Structure.cpp Array.cpp Dictionary.cpp diff --git a/src/Node.cpp b/src/Node.cpp index 35128a6..516d1ae 100644 --- a/src/Node.cpp +++ b/src/Node.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include @@ -64,6 +65,9 @@ Node::Node(plist_type type, Node* parent) : _parent(parent) _node = plist_new_string(""); plist_set_key_val(_node, ""); break; + case PLIST_UID: + _node = plist_new_uid(0); + break; case PLIST_DATA: _node = plist_new_data(NULL,0); break; @@ -137,6 +141,9 @@ Node* Node::FromPlist(plist_t node, Node* parent) case PLIST_KEY: ret = new Key(node, parent); break; + case PLIST_UID: + ret = new Uid(node, parent); + break; case PLIST_DATE: ret = new Date(node, parent); break; diff --git a/src/Uid.cpp b/src/Uid.cpp new file mode 100644 index 0000000..02a59b3 --- /dev/null +++ b/src/Uid.cpp @@ -0,0 +1,73 @@ +/* + * Uid.cpp + * + * Copyright (c) 2012 Nikias Bassen, All Rights Reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include +#include + +namespace PList +{ + +Uid::Uid(Node* parent) : Node(PLIST_UID, parent) +{ +} + +Uid::Uid(plist_t node, Node* parent) : Node(node, parent) +{ +} + +Uid::Uid(PList::Uid& i) : Node(PLIST_UID) +{ + plist_set_uid_val(_node, i.GetValue()); +} + +Uid& Uid::operator=(PList::Uid& i) +{ + plist_free(_node); + _node = plist_copy(i.GetPlist()); + return *this; +} + +Uid::Uid(uint64_t i) : Node(PLIST_UID) +{ + plist_set_uid_val(_node, i); +} + +Uid::~Uid() +{ +} + +Node* Uid::Clone() +{ + return new Uid(*this); +} + +void Uid::SetValue(uint64_t i) +{ + plist_set_uid_val(_node, i); +} + +uint64_t Uid::GetValue() +{ + uint64_t i = 0; + plist_get_uid_val(_node, &i); + return i; +} + +}; -- cgit v1.1-32-gdbae