public object this[string key] { get { ArgumentTree child = null; if (children.TryGetValue(key, out child)) { return(child.value); } return(null); } set { ArgumentTree child = null; if (children.TryGetValue(key, out child)) { child.value = value; } else { children[key] = new ArgumentTree(value); } } }
public PluginEnvironment(IMessageReceiver receiver) : base(receiver) { plugins = new List <IPlugin>(); config = new ArgumentTree(null); sources = new Dictionary <string, IDataSource>(); hooks = new Dictionary <string, List <IMessageReceiver> >(); }
protected void LoadConfigurationFile(string conffile) { configPath = conffile; // first load the config file XmlDocument doc = new XmlDocument(); doc.Load(conffile); config = ArgumentTree.LoadFromXml(doc.DocumentElement); }
public bool Contains(KeyValuePair <string, object> item) { ArgumentTree child = null; if (children.TryGetValue(item.Key, out child)) { return(child.value == item.Value); } return(false); }
public PluginEnvironment(IMessageReceiver receiver) { this.receiver = receiver; plugins = new List <IPlugin>(); config = new ArgumentTree(null); sources = new Dictionary <string, IDataSource>(); actions = new Dictionary <string, List <IAction> >(); actions[""] = new List <IAction>(); hooks = new Dictionary <string, List <IMessageReceiver> >(); }
public void SetConfig(string key, object value) { ArgumentTree node = null; if (!config.Children.TryGetValue(key, out node)) { config.Children[key] = new ArgumentTree(value); } else { node.Value = value; } }
public object GetConfig(string key) { ArgumentTree node = null; if (!config.Children.TryGetValue(key, out node)) { return(null); } else { return(node.Value); } }
public string GetConfigDirectory(string key) { ArgumentTree node = null; if (!config.Children.TryGetValue(key, out node)) { return(null); } else { return(Path.Combine(Directory.GetParent(configPath).FullName, (string)node.Value).ToString()); } }
public bool TryGetValue(string key, out object value) { ArgumentTree child = null; if (children.TryGetValue(key, out child)) { value = child.value; return(true); } value = null; return(false); }
public object Clone() { ArgumentTree copy = (ArgumentTree)MemberwiseClone(); copy.children = new Dictionary <string, ArgumentTree>(); foreach (KeyValuePair <string, ArgumentTree> child in children) { copy.children[child.Key] = (ArgumentTree)child.Value.Clone(); } return(copy); }
public ArgumentTree(object value) { if (value is ArgumentTree) { ArgumentTree clone = (ArgumentTree)((ArgumentTree)value).Clone(); value = clone.value; children = clone.children; } else { this.value = value; children = new Dictionary <string, ArgumentTree>(); } }
public ArgumentTree(ArgumentTree copy) { if (copy == null) { // treat as ArgumentTree(object) this.value = null; children = new Dictionary <string, ArgumentTree>(); } else { ArgumentTree clone = (ArgumentTree)copy.Clone(); value = clone.value; children = clone.Children; } }
public static ArgumentTree LoadFromXml(XmlNode root) { // Find the value of this node object value = GetAttribute(root, "value"); if (value == null) { // Use the inner text (that isn't included in other nodes) as the value StringBuilder text = new StringBuilder(); foreach (XmlNode child in root.ChildNodes) { if (child is XmlText) { text.Append(((XmlText)child).Data); } else if (child is XmlWhitespace) { text.Append(" "); } } string strtext = text.ToString().Trim(); if (strtext.Length > 0) { value = strtext; } } ArgumentTree node = new ArgumentTree(value); foreach (XmlAttribute attr in root.Attributes) { if (attr.Name.ToLower() != "value") { node.children[attr.Name] = new ArgumentTree(attr.Value); } } foreach (XmlNode child in root.ChildNodes) { if (child is XmlElement) { node.children[child.Name] = LoadFromXml(child); } } return(node); }
public ArgumentTreeEnumerator(ArgumentTree tree) { elements = tree.children.GetEnumerator(); }