diff options
Diffstat (limited to 'src/Integer.cpp')
| -rw-r--r-- | src/Integer.cpp | 45 | 
1 files changed, 37 insertions, 8 deletions
| diff --git a/src/Integer.cpp b/src/Integer.cpp index 04315d7..653455d 100644 --- a/src/Integer.cpp +++ b/src/Integer.cpp @@ -18,13 +18,14 @@   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA   */ -#include <stdlib.h> +#include <cstdlib> +#include "plist.h"  #include <plist/Integer.h>  namespace PList  { -Integer::Integer(Node* parent) : Node(PLIST_UINT, parent) +Integer::Integer(Node* parent) : Node(PLIST_INT, parent)  {  } @@ -32,23 +33,29 @@ Integer::Integer(plist_t node, Node* parent) : Node(node, parent)  {  } -Integer::Integer(const PList::Integer& i) : Node(PLIST_UINT) +Integer::Integer(const PList::Integer& i) : Node(PLIST_INT)  { -    plist_set_uint_val(_node, i.GetValue()); +    plist_free(_node); +    _node = plist_copy(i.GetPlist());  } -Integer& Integer::operator=(PList::Integer& i) +Integer& Integer::operator=(const PList::Integer& i)  {      plist_free(_node);      _node = plist_copy(i.GetPlist());      return *this;  } -Integer::Integer(uint64_t i) : Node(PLIST_UINT) +Integer::Integer(uint64_t i) : Node(PLIST_INT)  {      plist_set_uint_val(_node, i);  } +Integer::Integer(int64_t i) : Node(PLIST_INT) +{ +    plist_set_int_val(_node, i); +} +  Integer::~Integer()  {  } @@ -58,16 +65,38 @@ Node* Integer::Clone() const      return new Integer(*this);  } +void Integer::SetValue(int64_t i) +{ +    plist_set_int_val(_node, i); +} +  void Integer::SetValue(uint64_t i)  {      plist_set_uint_val(_node, i);  } -uint64_t Integer::GetValue() const +void Integer::SetUnsignedValue(uint64_t i) +{ +    plist_set_uint_val(_node, i); +} + +int64_t Integer::GetValue() const +{ +    int64_t i = 0; +    plist_get_int_val(_node, &i); +    return i; +} + +uint64_t Integer::GetUnsignedValue() const  {      uint64_t i = 0;      plist_get_uint_val(_node, &i);      return i;  } -}; +bool Integer::isNegative() const +{ +    return plist_int_val_is_negative(_node); +} + +}  // namespace PList | 
