public void set(string name, string val) {
// 1.7.31+ - we assume our inner settings don't have Enter within them
Debug.Assert(val.IndexOf("\r") < 0 && val.IndexOf("\n") < 0);
lock (this) {
bool exists = sett_.ContainsKey(name);
if (exists && sett_[name] == val)
return; // nothing changed
if (!exists && val == "")
return; // nothing changed
if (exists)
sett_[name] = val;
else
sett_.Add(name, val);
if (val == "")
sett_.Remove(name);
}
if (on_changed != null)
on_changed(name);
}