#pragma once
#include <string>
#include <map>
#include "CivVariant.h"

using namespace std;

class CivVariant;

/**
	属性类
*/
class CivAttributes
{
public:
	typedef pair<string, CivVariant> Pair;
	typedef map<string, CivVariant> Params;

	CivAttributes() = default;
	CivAttributes(const Params& params);
	/**
	 * @brief 添加单个属性
	 * @param [name] 属性名
	 * @param [value] 属性值
	 */
	void setAttribute(const std::string& name,const CivVariant& value);

	/**
	 * @brief 属性合并
	 * @param [params] 另一个属性集合
	 */
	void merge(const CivAttributes& );

	/**
	* @brief 根据属性名，获取单个属性值
	* @param [name] 属性名
	*/
	CivVariant attribute(const std::string& name) const ;

	/**
	*@brief 获取所有属性
	*/
	Params attributes() const;
private:
	Params mParams;
};
