/*************************************************************************** mymoneykeyvaluecontainer.h ------------------- begin : Sun Nov 10 2002 copyright : (C) 2000-2005 by Thomas Baumgart email : Thomas Baumgart ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef MYMONEYKEYVALUECONTAINER_H #define MYMONEYKEYVALUECONTAINER_H /** * @author Thomas Baumgart */ #ifdef HAVE_CONFIG_H #include #endif // ---------------------------------------------------------------------------- // QT Includes #include #include #include #include // ---------------------------------------------------------------------------- // Project Includes /** * This class implements a container for key/value pairs. This is used * to store an arbitrary number of attributes with any of the engine * object. The container can also be used to have attributes that are * attached to this object only for a limited time (e.g. between * start of reconciliation end it's end). * * To give any class the ability to have a key/value pair container, * just derive the class from this one. See MyMoneyAccount as an example. */ class KMYMONEY_EXPORT MyMoneyKeyValueContainer { public: MyMoneyKeyValueContainer(); MyMoneyKeyValueContainer(const TQDomElement& node); ~MyMoneyKeyValueContainer(); /** * This method can be used to retrieve the value for a specific @p key. * If the key is unknown in this container, an empty string will be returned. * * @param key const reference to TQString with the key to search for * @return reference to value of this key. If the key does not exist, * an emtpy string is returned. */ const TQString& value(const TQString& key) const; /** * This method is used to add a key/value pair to the container or * modify an existing pair. * * @param key const reference to TQString with the key to search for * @param value const reference to TQString with the value for this key */ void setValue(const TQString& key, const TQString& value); /** * This method is used to remove an existing key/value pair from the * container. If the key does not exist, the container is not changed. * * @param key const reference to TQString with the key to remove */ void deletePair(const TQString& key); /** * This method clears all pairs currently in the container. */ void clear(void); /** * This method is used to retrieve the whole set of key/value pairs * from the container. It is meant to be used for permanent storage * functionality. * * @return TQMap containing all key/value pairs of * this container. */ const TQMap& pairs(void) const { return m_kvp; }; /** * This method is used to initially store a set of key/value pairs * in the container. It is meant to be used for loading functionality * from permanent storage. * * @param list const TQMap containing the set of * key/value pairs to be loaded into the container. * * @note All existing key/value pairs in the container will be deleted. */ void setPairs(const TQMap& list); /** * This operator tests for equality of two MyMoneyKeyValueContainer objects */ bool operator == (const MyMoneyKeyValueContainer &) const; const TQString& operator[] ( const TQString& k ) const { return value(k); } TQString& operator[] ( const TQString& k) { return m_kvp[k]; } /** * This method creates a TQDomElement for the @p document * under the tqparent node @p tqparent. * * @param document reference to TQDomDocument * @param tqparent reference to TQDomElement tqparent node */ void writeXML(TQDomDocument& document, TQDomElement& tqparent) const; private: /** * This member variable represents the container of key/value pairs. */ TQMap m_kvp; }; #endif