From f763438c478e923677c5922b2aec8efdf965737f Mon Sep 17 00:00:00 2001 From: rexy712 Date: Sun, 11 Apr 2021 14:51:54 -0700 Subject: [PATCH] Add object and array size queries to rjp++ --- rjp++/include/array.hpp | 4 ++++ rjp++/include/object.hpp | 4 ++++ rjp++/src/array.cpp | 3 +++ rjp++/src/object.cpp | 3 +++ 4 files changed, 14 insertions(+) diff --git a/rjp++/include/array.hpp b/rjp++/include/array.hpp index d0c8e97..6b60598 100644 --- a/rjp++/include/array.hpp +++ b/rjp++/include/array.hpp @@ -20,6 +20,7 @@ #define RJP_ARRAY_HPP #include +#include //size_t #include "iterator.hpp" #include "value.hpp" #include "integral.hpp" @@ -57,6 +58,7 @@ namespace rjp{ public: using iterator = array_iterator; using const_iterator = const iterator; + using size_type = size_t; public: using value::value; array(void); @@ -102,6 +104,8 @@ namespace rjp{ const_iterator begin(void)const; const_iterator end(void)const; + size_type size(void)const; + private: static RJP_value* create_element(RJP_value* arr); }; diff --git a/rjp++/include/object.hpp b/rjp++/include/object.hpp index 19ec821..84517ef 100644 --- a/rjp++/include/object.hpp +++ b/rjp++/include/object.hpp @@ -21,6 +21,7 @@ #include #include +#include //size_t #include "value.hpp" #include "iterator.hpp" #include "member.hpp" @@ -60,6 +61,7 @@ namespace rjp{ public: using iterator = object_iterator; using const_iterator = const iterator; + using size_type = size_t; public: using value::value; object(void); @@ -134,6 +136,8 @@ namespace rjp{ const_iterator begin(void)const; iterator end(void)const; + size_type size(void)const; + value search(const rexy::string_base& key)const; private: diff --git a/rjp++/src/array.cpp b/rjp++/src/array.cpp index c1a0c0a..dff1c29 100644 --- a/rjp++/src/array.cpp +++ b/rjp++/src/array.cpp @@ -82,6 +82,9 @@ namespace rjp{ array::iterator array::end(void){ return iterator(); } + array::size_type array::size(void)const{ + return rjp_num_elements(m_value); + } RJP_value* array::create_element(RJP_value* arr){ return rjp_new_element(arr); } diff --git a/rjp++/src/object.cpp b/rjp++/src/object.cpp index 0730425..a6e256a 100644 --- a/rjp++/src/object.cpp +++ b/rjp++/src/object.cpp @@ -122,6 +122,9 @@ namespace rjp{ object::iterator object::end(void)const{ return iterator(); } + object::size_type object::size(void)const{ + return rjp_num_members(m_value); + } value object::search(const rexy::string_base& key)const{ RJP_value* result = rjp_search_member(m_value, key.get()); return create_unmanaged(result);