Ejemplo n.º 1
0
	SettingItem Setting::GetItem(string key) {
		auto itm = items.find(key);
		if (itm != items.end()) {
			return itm->second;
		}
		return SettingItem();
	}
Ejemplo n.º 2
0
	void Setting::LoadFromXml(xml_node& node) {
		name = node.attribute("name").as_string("");

		for (auto itemNode : node.children("item")) {
			
			SettingItem item = SettingItem();
			item.key = itemNode.attribute("key").as_string("");

			auto value = itemNode.attribute("value");

			if (value) {
				// single string  <item key="abc" value="def" />
				item.AddValues(value.as_string(""));
			}
			else {
				/* more xml elements:
				<item key="abc">
				<value>val1</value>
				<value>val2</value>
				</item>
				*/
				for (auto valueNode : itemNode.children("value")) {
					string val = valueNode.value();
					item.AddValues(val);
				}
			}

			items[item.key] = item;
		}

		// items may be declared as attributes, e.g. <setting name="myset" key1="value1" key2="value2" />
		for (auto attrNode : node.attributes()) {
			auto attrName = attrNode.name();
			if (string(attrName).compare("name") != 0) {
				string val = attrNode.value();
				items[attrName] = SettingItem(attrName, val);
			}
		}
	}
Ejemplo n.º 3
0
    void add(const std::string &lk, const std::string &k, const std::string &desc, T&& default_value)
    {
        if (lk.empty())
        {
            throw std::runtime_error("key is empty: " + k);
        }
        if (m_Items.find(lk) != m_Items.end())
        {
            throw std::runtime_error("options key already registered: " + lk);
        }

        m_Items[lk] = SettingItem(lk, k, desc, std::forward<T>(default_value));
    }
Ejemplo n.º 4
0
	void Setting::AddItem(string key, string value) {
		SettingItem newItem = SettingItem(key, value);
		items[key] = newItem;
	}