public SimpleTreeBranch(int index, string name, string type, SimpleTreeNode <TLeaf> value) { BranchIndex = index; BranchName = name; BranchType = type; BranchNode = value; }
public SimpleTreeBranch(int index, string name, string type, TLeaf value) { BranchIndex = index; BranchName = name; BranchType = type; BranchNode = new SimpleTreeLeaf <TLeaf>(value); }
/// <summary> /// Save a simple tree node to a file using serialization /// </summary> /// <typeparam name="TLeaf"></typeparam> /// <param name="treeNode"></param> /// <param name="filePath"></param> public static void SaveToFile <TLeaf>(this SimpleTreeNode <TLeaf> treeNode, string filePath) { using (var stream = File.Open(filePath, FileMode.Create, FileAccess.Write)) { var formatter = new BinaryFormatter(); formatter.Serialize(stream, treeNode); } }
/// <summary> /// Create an exact copy of the given tree node but replace all leaf values of type T1 by values /// of type T2 using the as operator /// </summary> /// <typeparam name="T1"></typeparam> /// <typeparam name="T2"></typeparam> /// <param name="treeNode"></param> /// <returns></returns> public static SimpleTreeNode <T2> Cast <T1, T2>(this SimpleTreeNode <T1> treeNode) where T1 : class where T2 : class { var node1 = treeNode.AsLeaf; if (ReferenceEquals(node1, null) == false) { return(Cast <T1, T2>(node1)); } var node2 = treeNode.AsBranchDictionaryByIndex; if (ReferenceEquals(node2, null) == false) { return(Cast <T1, T2>(node2)); } var node3 = treeNode.AsBranchDictionaryByName; if (ReferenceEquals(node3, null) == false) { return(Cast <T1, T2>(node3)); } var node4 = treeNode.AsBranchList; if (ReferenceEquals(node4, null) == false) { return(Cast <T1, T2>(node4)); } var node5 = treeNode.AsNodeDictionaryByIndex; if (ReferenceEquals(node5, null) == false) { return(Cast <T1, T2>(node5)); } var node6 = treeNode.AsNodeDictionaryByName; if (ReferenceEquals(node6, null) == false) { return(Cast <T1, T2>(node6)); } var node7 = treeNode.AsNodeList; if (ReferenceEquals(node7, null) == false) { return(Cast <T1, T2>(node7)); } return(null); }
/// <summary> /// Create an exact copy of the given tree node but replace all leaf values of type T1 by values /// of type string using the ToString() method /// </summary> /// <typeparam name="T1"></typeparam> /// <param name="treeNode"></param> /// <returns></returns> public static SimpleTreeNode <string> ToStringTree <T1>(this SimpleTreeNode <T1> treeNode) { var node1 = treeNode.AsLeaf; if (ReferenceEquals(node1, null) == false) { return(ToStringTree(node1)); } var node2 = treeNode.AsBranchDictionaryByIndex; if (ReferenceEquals(node2, null) == false) { return(ToStringTree(node2)); } var node3 = treeNode.AsBranchDictionaryByName; if (ReferenceEquals(node3, null) == false) { return(ToStringTree(node3)); } var node4 = treeNode.AsBranchList; if (ReferenceEquals(node4, null) == false) { return(ToStringTree(node4)); } var node5 = treeNode.AsNodeDictionaryByIndex; if (ReferenceEquals(node5, null) == false) { return(ToStringTree(node5)); } var node6 = treeNode.AsNodeDictionaryByName; if (ReferenceEquals(node6, null) == false) { return(ToStringTree(node6)); } var node7 = treeNode.AsNodeList; if (ReferenceEquals(node7, null) == false) { return(ToStringTree(node7)); } return(null); }
/// <summary> /// Create an exact copy of the given tree node but replace all leaf values of type T1 by values /// of type T2 using the given cast function /// </summary> /// <typeparam name="T1"></typeparam> /// <typeparam name="T2"></typeparam> /// <param name="treeNode"></param> /// <param name="castFunc"></param> /// <returns></returns> public static SimpleTreeNode <T2> Cast <T1, T2>(this SimpleTreeNode <T1> treeNode, Func <T1, T2> castFunc) { var node1 = treeNode.AsLeaf; if (ReferenceEquals(node1, null) == false) { return(Cast(node1, castFunc)); } var node2 = treeNode.AsBranchDictionaryByIndex; if (ReferenceEquals(node2, null) == false) { return(Cast(node2, castFunc)); } var node3 = treeNode.AsBranchDictionaryByName; if (ReferenceEquals(node3, null) == false) { return(Cast(node3, castFunc)); } var node4 = treeNode.AsBranchList; if (ReferenceEquals(node4, null) == false) { return(Cast(node4, castFunc)); } var node5 = treeNode.AsNodeDictionaryByIndex; if (ReferenceEquals(node5, null) == false) { return(Cast(node5, castFunc)); } var node6 = treeNode.AsNodeDictionaryByName; if (ReferenceEquals(node6, null) == false) { return(Cast(node6, castFunc)); } var node7 = treeNode.AsNodeList; if (ReferenceEquals(node7, null) == false) { return(Cast(node7, castFunc)); } return(null); }
public void Add(string branchName, string branchType, SimpleTreeNode <TLeaf> branchNode) { var item = new SimpleTreeBranch <TLeaf>(_branches.Count, branchName, branchType, branchNode); _branches.Add(item); }
public bool Remove(SimpleTreeNode <TLeaf> item) { throw new NotImplementedException(); }
public bool Contains(SimpleTreeNode <TLeaf> item) { throw new NotImplementedException(); }
public void Add(SimpleTreeNode <TLeaf> item) { _nodes.Add(item); }
public void Insert(int index, SimpleTreeNode <TLeaf> item) { _nodes.Insert(index, item); }
public int IndexOf(SimpleTreeNode <TLeaf> item) { throw new NotImplementedException(); }
public void Add(string key, SimpleTreeNode<TLeaf> value) { _nodes.Add(key, value); }
public bool TryGetValue(string key, out SimpleTreeNode<TLeaf> value) { return _nodes.TryGetValue(key, out value); }
public bool TryGetValue(int key, out SimpleTreeNode <TLeaf> value) { return(_nodes.TryGetValue(key, out value)); }
public void Add(int branchIndex, string branchName, string branchType, SimpleTreeNode <TLeaf> branchValue) { var branch = new SimpleTreeBranch <TLeaf>(branchIndex, branchName, branchType, branchValue); _branches.Add(branchIndex, branch); }