diff options
author | Tobias Arrskog <topfs2@xbmc.org> | 2011-05-04 20:13:27 +0200 |
---|---|---|
committer | Tobias Arrskog <topfs2@xbmc.org> | 2011-05-17 20:05:38 +0200 |
commit | c32316c569c026fb09eb46d67d23e9c364e97e3c (patch) | |
tree | 385f71355ef3fd992527bb0a78431618f0cb2f64 | |
parent | 6b4b5a08508cb0cd4dd3fde572870c44641e555c (diff) |
Added array and map iterators to CVariant
-rw-r--r-- | xbmc/utils/Variant.cpp | 64 | ||||
-rw-r--r-- | xbmc/utils/Variant.h | 24 |
2 files changed, 85 insertions, 3 deletions
diff --git a/xbmc/utils/Variant.cpp b/xbmc/utils/Variant.cpp index 5971dfa8d3..f55ada0cc0 100644 --- a/xbmc/utils/Variant.cpp +++ b/xbmc/utils/Variant.cpp @@ -332,6 +332,70 @@ void CVariant::append(CVariant variant) push_back(variant); } +CVariant::iterator_array CVariant::begin_array() +{ + if (m_type == VariantTypeArray) + return m_data.array->begin(); + else + return iterator_array(); +} + +CVariant::const_iterator_array CVariant::begin_array() const +{ + if (m_type == VariantTypeArray) + return m_data.array->begin(); + else + return const_iterator_array(); +} + +CVariant::iterator_array CVariant::end_array() +{ + if (m_type == VariantTypeArray) + return m_data.array->end(); + else + return iterator_array(); +} + +CVariant::const_iterator_array CVariant::end_array() const +{ + if (m_type == VariantTypeArray) + return m_data.array->end(); + else + return const_iterator_array(); +} + +CVariant::iterator_map CVariant::begin_map() +{ + if (m_type == VariantTypeObject) + return m_data.map->begin(); + else + return iterator_map(); +} + +CVariant::const_iterator_map CVariant::begin_map() const +{ + if (m_type == VariantTypeObject) + return m_data.map->begin(); + else + return const_iterator_map(); +} + +CVariant::iterator_map CVariant::end_map() +{ + if (m_type == VariantTypeObject) + return m_data.map->end(); + else + return iterator_map(); +} + +CVariant::const_iterator_map CVariant::end_map() const +{ + if (m_type == VariantTypeObject) + return m_data.map->end(); + else + return const_iterator_map(); +} + unsigned int CVariant::size() const { if (isObject()) diff --git a/xbmc/utils/Variant.h b/xbmc/utils/Variant.h index 94925c3652..2e5efc3283 100644 --- a/xbmc/utils/Variant.h +++ b/xbmc/utils/Variant.h @@ -84,6 +84,27 @@ public: void push_back(CVariant variant); void append(CVariant variant); +private: + typedef std::vector<CVariant> VariantArray; + typedef std::map<std::string, CVariant> VariantMap; + +public: + typedef VariantArray::iterator iterator_array; + typedef VariantArray::const_iterator const_iterator_array; + + typedef VariantMap::iterator iterator_map; + typedef VariantMap::const_iterator const_iterator_map; + + iterator_array begin_array(); + const_iterator_array begin_array() const; + iterator_array end_array(); + const_iterator_array end_array() const; + + iterator_map begin_map(); + const_iterator_map begin_map() const; + iterator_map end_map(); + const_iterator_map end_map() const; + unsigned int size() const; bool empty() const; void clear(); @@ -96,9 +117,6 @@ public: private: VariantType m_type; - typedef std::vector<CVariant> VariantArray; - typedef std::map<std::string, CVariant> VariantMap; - union { int64_t integer; |