diff options
Diffstat (limited to 'Swiften/Parser/AttributeMap.h')
| -rw-r--r-- | Swiften/Parser/AttributeMap.h | 62 | 
1 files changed, 37 insertions, 25 deletions
| diff --git a/Swiften/Parser/AttributeMap.h b/Swiften/Parser/AttributeMap.h index c8b287b..31df606 100644 --- a/Swiften/Parser/AttributeMap.h +++ b/Swiften/Parser/AttributeMap.h @@ -4,38 +4,50 @@   * See Documentation/Licenses/GPLv3.txt for more information.   */ -#ifndef ATTRIBUTEMAP_H -#define ATTRIBUTEMAP_H +#pragma once +#include <vector> +#include <string>  #include <map> +#include <boost/optional/optional_fwd.hpp> -#include <string> +#include <Swiften/Parser/Attribute.h>  namespace Swift { -	class AttributeMap : public std::map<std::string,std::string> { +	class AttributeMap {  		public: -			AttributeMap() {} - -			std::string getAttribute(const std::string& attribute) const { -				AttributeMap::const_iterator i = find(attribute); -				if (i == end()) { -					return ""; -				} -				else { -					return i->second; -				} -			} +			class Entry { +				public: +					Entry(const Attribute& attribute, const std::string& value) : attribute(attribute), value(value) { +					} + +					const Attribute& getAttribute() const { +						return attribute; +					} + +					const std::string& getValue() const { +						return value; +					} + +				private: +					Attribute attribute; +					std::string value; +			}; -			bool getBoolAttribute(const std::string& attribute, bool defaultValue = false) const { -				AttributeMap::const_iterator i = find(attribute); -				if (i == end()) { -					return defaultValue; -				} -				else { -					return i->second == "true" || i->second == "1"; -				} +			AttributeMap(); + +			std::string getAttribute(const std::string& attribute, const std::string& ns = "") const; +			bool getBoolAttribute(const std::string& attribute, bool defaultValue = false) const; +			boost::optional<std::string> getAttributeValue(const std::string&) const; + +			void addAttribute(const std::string& name, const std::string& ns, const std::string& value); + +			const std::vector<Entry>& getEntries() const { +				return attributes;  			} + +		private: +			typedef std::vector<Entry> AttributeValueMap; +			AttributeValueMap attributes;  	};  } - -#endif | 
 Swift
 Swift