Subversion Repositories spk

Rev

Rev 195 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

#pragma once

#include "WString.h"
#include "../lists.h"
#include "List.h"

namespace Utils {

        typedef struct {
                WString str;
                WString data;
        } WStringNode;

        typedef CListNode<WStringNode> WStringListNode;
        typedef CList<WStringNode>::iterator WStringListIterator;

        class SPKEXPORT WStringList
        {
        private:
                CList<WStringNode> *_lList;

        public:
                WStringList();
                ~WStringList();

                void pushBack(const WString &str, const WString &data);
                void pushBack(const WString &str);
                void pushFront(const WString &str, const WString &data);
                void pushFront(const WString &str);
                void popBack();
                void popFront();

                void insertAt(int at, const WString& str, const WString& data);
                void insertAt(int at, const WString& str);

                void clear();
                void tokenise(const WString &str, const WString &token);

                Utils::WString firstString();
                Utils::WString nextString();
                Utils::WStringNode *first();
                Utils::WStringNode *next();
                WStringListIterator begin() const;
                WStringListIterator end() const;

                Utils::WString front() const;
                Utils::WString back() const;

                Utils::WStringNode *get(int i) const;

                bool changeData(const Utils::WString &str, const Utils::WString &data, bool bIgnoreCase = false);
                bool contains(const Utils::WString &data, bool bIgnoreCase = false) const;
                bool containsData(const Utils::WString& str, bool bIgnoreCase = false) const;
                bool containsStringAndData(const Utils::WString& str, const Utils::WString &data, bool bIgnoreCase = false) const;
                Utils::WString findData(const Utils::WString &data, bool bIgnoreCase = false) const;
                Utils::WString findString(const Utils::WString &str, bool bIgnoreCase = false) const;
                int findStringAndData(const Utils::WString& str, const Utils::WString& data, bool bIgnoreCase = false) const;
                int findPos(const Utils::WString& str, bool bIgnoreCase = false) const;

                WStringListIterator remove(WStringListIterator itr);
                bool remove(const Utils::WString &str, bool single = true);
                void removeAt(int at);

                size_t size() const;
                bool empty() const;

                const Utils::WStringNode* operator[](int num) const;
                Utils::WStringNode* operator[](int num);
                const Utils::WStringNode* operator[](const WString& str) const;
                Utils::WStringNode* operator[](const WString& str);
        };
} //NAMESPACE