diff options
author | Nikias Bassen | 2012-11-13 03:22:51 +0100 |
---|---|---|
committer | Nikias Bassen | 2012-11-13 03:22:51 +0100 |
commit | 46a5feb381512cebf5a05286730edd047b989e73 (patch) | |
tree | 9863c49e447b0d4411b0058348f53b465fcd4d78 /src | |
parent | 58151b6cd801435d79145907cf6ef779d21573d3 (diff) | |
download | libplist-46a5feb381512cebf5a05286730edd047b989e73.tar.gz libplist-46a5feb381512cebf5a05286730edd047b989e73.tar.bz2 |
C++ bindings: added support for PLIST_KEY nodes.
Diffstat (limited to 'src')
-rw-r--r-- | src/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/Key.cpp | 75 | ||||
-rw-r--r-- | src/Node.cpp | 9 |
3 files changed, 84 insertions, 1 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 0de4c8c..ad7362b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -19,6 +19,7 @@ SET(libplist++_SRC String.cpp Date.cpp Data.cpp + Key.cpp Structure.cpp Array.cpp Dictionary.cpp diff --git a/src/Key.cpp b/src/Key.cpp new file mode 100644 index 0000000..4145f05 --- /dev/null +++ b/src/Key.cpp @@ -0,0 +1,75 @@ +/* + * Key.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 <stdlib.h> +#include <plist/Key.h> + +namespace PList +{ + +Key::Key(Node* parent) : Node(PLIST_KEY, parent) +{ +} + +Key::Key(plist_t node, Node* parent) : Node(node, parent) +{ +} + +Key::Key(PList::Key& k) : Node(PLIST_UINT) +{ + plist_set_key_val(_node, k.GetValue().c_str()); +} + +Key& Key::operator=(PList::Key& k) +{ + plist_free(_node); + _node = plist_copy(k.GetPlist()); + return *this; +} + +Key::Key(const std::string& s) : Node(PLIST_STRING) +{ + plist_set_key_val(_node, s.c_str()); +} + +Key::~Key() +{ +} + +Node* Key::Clone() +{ + return new Key(*this); +} + +void Key::SetValue(const std::string& s) +{ + plist_set_key_val(_node, s.c_str()); +} + +std::string Key::GetValue() +{ + char* s = NULL; + plist_get_key_val(_node, &s); + std::string ret = s; + free(s); + return ret; +} + +}; diff --git a/src/Node.cpp b/src/Node.cpp index 9bf50ee..35128a6 100644 --- a/src/Node.cpp +++ b/src/Node.cpp @@ -27,6 +27,7 @@ #include <plist/Integer.h> #include <plist/Real.h> #include <plist/String.h> +#include <plist/Key.h> #include <plist/Data.h> #include <plist/Date.h> @@ -59,6 +60,10 @@ Node::Node(plist_type type, Node* parent) : _parent(parent) case PLIST_STRING: _node = plist_new_string(""); break; + case PLIST_KEY: + _node = plist_new_string(""); + plist_set_key_val(_node, ""); + break; case PLIST_DATA: _node = plist_new_data(NULL,0); break; @@ -71,7 +76,6 @@ Node::Node(plist_type type, Node* parent) : _parent(parent) case PLIST_DICT: _node = plist_new_dict(); break; - case PLIST_KEY: case PLIST_NONE: default: break; @@ -130,6 +134,9 @@ Node* Node::FromPlist(plist_t node, Node* parent) case PLIST_STRING: ret = new String(node, parent); break; + case PLIST_KEY: + ret = new Key(node, parent); + break; case PLIST_DATE: ret = new Date(node, parent); break; |