Exemple #1
0
 public SimpleTreeBranch(int index, string name, string type, SimpleTreeNode <TLeaf> value)
 {
     BranchIndex = index;
     BranchName  = name;
     BranchType  = type;
     BranchNode  = value;
 }
Exemple #2
0
 public SimpleTreeBranch(int index, string name, string type, TLeaf value)
 {
     BranchIndex = index;
     BranchName  = name;
     BranchType  = type;
     BranchNode  = new SimpleTreeLeaf <TLeaf>(value);
 }
Exemple #3
0
        /// <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);
            }
        }
Exemple #4
0
        /// <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);
        }
Exemple #5
0
        /// <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);
        }
Exemple #6
0
        /// <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);
        }
Exemple #7
0
        public void Add(string branchName, string branchType, SimpleTreeNode <TLeaf> branchNode)
        {
            var item = new SimpleTreeBranch <TLeaf>(_branches.Count, branchName, branchType, branchNode);

            _branches.Add(item);
        }
Exemple #8
0
 public bool Remove(SimpleTreeNode <TLeaf> item)
 {
     throw new NotImplementedException();
 }
Exemple #9
0
 public bool Contains(SimpleTreeNode <TLeaf> item)
 {
     throw new NotImplementedException();
 }
Exemple #10
0
 public void Add(SimpleTreeNode <TLeaf> item)
 {
     _nodes.Add(item);
 }
Exemple #11
0
 public void Insert(int index, SimpleTreeNode <TLeaf> item)
 {
     _nodes.Insert(index, item);
 }
Exemple #12
0
 public int IndexOf(SimpleTreeNode <TLeaf> item)
 {
     throw new NotImplementedException();
 }
Exemple #13
0
 public void Add(string key, SimpleTreeNode<TLeaf> value)
 {
     _nodes.Add(key, value);
 }
Exemple #14
0
 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);
        }