Commit 46a5feb3 authored by Nikias Bassen's avatar Nikias Bassen

C++ bindings: added support for PLIST_KEY nodes.

parent 58151b6c
/*
* Key.h
* Key node type for C++ binding
*
* 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
*/
#ifndef PLIST__KEY_H
#define PLIST__KEY_H
#include <plist/Node.h>
#include <string>
namespace PList
{
class Key : public Node
{
public :
Key(Node* parent = NULL);
Key(plist_t node, Node* parent = NULL);
Key(Key& s);
Key& operator=(Key& s);
Key(const std::string& s);
virtual ~Key();
Node* Clone();
void SetValue(const std::string& s);
std::string GetValue();
};
};
#endif // PLIST__KEY_H
......@@ -19,6 +19,7 @@ SET(libplist++_SRC
String.cpp
Date.cpp
Data.cpp
Key.cpp
Structure.cpp
Array.cpp
Dictionary.cpp
......
/*
* 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;
}
};
......@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment