diff options
Diffstat (limited to 'include/plist/Array.h')
| -rw-r--r-- | include/plist/Array.h | 43 |
1 files changed, 34 insertions, 9 deletions
diff --git a/include/plist/Array.h b/include/plist/Array.h index fd4dea8..f4360c5 100644 --- a/include/plist/Array.h +++ b/include/plist/Array.h @@ -19,8 +19,8 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef PLIST__ARRAY_H -#define PLIST__ARRAY_H +#ifndef PLIST_ARRAY_H +#define PLIST_ARRAY_H #include <plist/Structure.h> #include <vector> @@ -33,18 +33,43 @@ class Array : public Structure public : Array(Node* parent = NULL); Array(plist_t node, Node* parent = NULL); - Array(Array& a); - Array& operator=(Array& a); + Array(const Array& a); + Array& operator=(const Array& a); virtual ~Array(); - Node* Clone(); + Node* Clone() const; + + typedef std::vector<Node*>::iterator iterator; + typedef std::vector<Node*>::const_iterator const_iterator; Node* operator[](unsigned int index); - void Append(Node* node); - void Insert(Node* node, unsigned int pos); + Node* Back(); + Node* back(); + Node* Front(); + Node* front(); + iterator Begin(); + iterator begin(); + iterator End(); + iterator end(); + const_iterator Begin() const; + const_iterator begin() const; + const_iterator End() const; + const_iterator end() const; + size_t size() const; + void Append(const Node& node); + void Append(const Node* node); + void Insert(const Node& node, unsigned int pos); + void Insert(const Node* node, unsigned int pos); void Remove(Node* node); void Remove(unsigned int pos); - unsigned int GetNodeIndex(Node* node); + unsigned int GetNodeIndex(const Node& node) const; + unsigned int GetNodeIndex(const Node* node) const; + template <typename T> T* at(unsigned int index) { + return (T*)(_array.at(index)); + } + template <typename T> T* At(unsigned int index) { + return (T*)(_array.at(index)); + } private : std::vector<Node*> _array; @@ -52,4 +77,4 @@ private : }; -#endif // PLIST__ARRAY_H +#endif // PLIST_ARRAY_H |
