Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/17/11 14:07:47 (13 years ago)
Author:
mkommend
Message:

#1418: Corrected problem interfaces & unified naming of subtrees.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/SymbolicExpressionTreeNode.cs

    r5728 r5733  
    3030  public class SymbolicExpressionTreeNode : DeepCloneable, ISymbolicExpressionTreeNode {
    3131    [Storable]
    32     private IList<ISymbolicExpressionTreeNode> subTrees;
     32    private IList<ISymbolicExpressionTreeNode> subtrees;
    3333    [Storable]
    3434    private ISymbol symbol;
     
    5555      : base() {
    5656      symbol = original.symbol; // symbols are reused
    57       subTrees = new List<ISymbolicExpressionTreeNode>(original.subTrees.Count);
    58       foreach (var subtree in original.subTrees) {
    59         var clonedSubTree = cloner.Clone(subtree);
    60         subTrees.Add(clonedSubTree);
    61         clonedSubTree.Parent = this;
     57      subtrees = new List<ISymbolicExpressionTreeNode>(original.subtrees.Count);
     58      foreach (var subtree in original.subtrees) {
     59        var clonedSubtree = cloner.Clone(subtree);
     60        subtrees.Add(clonedSubtree);
     61        clonedSubtree.Parent = this;
    6262      }
    6363    }
     
    7474    public SymbolicExpressionTreeNode(ISymbol symbol)
    7575      : base() {
    76       subTrees = new List<ISymbolicExpressionTreeNode>(3);
     76      subtrees = new List<ISymbolicExpressionTreeNode>(3);
    7777      this.symbol = symbol;
    7878    }
     
    8181    [StorableHook(HookType.AfterDeserialization)]
    8282    private void AfterDeserialization() {
    83       if (subTrees != null) {
    84         foreach (var subtree in subTrees)
     83      if (subtrees != null) {
     84        foreach (var subtree in subtrees)
    8585          subtree.Parent = this;
    8686      }
     
    9191    }
    9292
    93     public virtual IEnumerable<ISymbolicExpressionTreeNode> SubTrees {
    94       get { return subTrees; }
     93    public virtual IEnumerable<ISymbolicExpressionTreeNode> Subtrees {
     94      get { return subtrees; }
    9595    }
    9696
     
    103103      else {
    104104        length = 1;
    105         if (subTrees != null) {
    106           for (int i = 0; i < subTrees.Count; i++) {
    107             checked { length += (ushort)subTrees[i].GetLength(); }
     105        if (subtrees != null) {
     106          for (int i = 0; i < subtrees.Count; i++) {
     107            checked { length += (ushort)subtrees[i].GetLength(); }
    108108          }
    109109        }
     
    115115      if (depth > 0) return depth;
    116116      else {
    117         if (subTrees != null) {
    118           for (int i = 0; i < subTrees.Count; i++) depth = Math.Max(depth, (ushort)subTrees[i].GetDepth());
     117        if (subtrees != null) {
     118          for (int i = 0; i < subtrees.Count; i++) depth = Math.Max(depth, (ushort)subtrees[i].GetDepth());
    119119        }
    120120        depth++;
     
    128128    public int SubtreesCount {
    129129      get {
    130         if (subTrees == null) return 0;
    131         return subTrees.Count;
     130        if (subtrees == null) return 0;
     131        return subtrees.Count;
    132132      }
    133133    }
    134134
    135     public virtual ISymbolicExpressionTreeNode GetSubTree(int index) {
    136       return subTrees[index];
     135    public virtual ISymbolicExpressionTreeNode GetSubtree(int index) {
     136      return subtrees[index];
    137137    }
    138     public virtual int IndexOfSubTree(ISymbolicExpressionTreeNode tree) {
    139       return subTrees.IndexOf(tree);
     138    public virtual int IndexOfSubtree(ISymbolicExpressionTreeNode tree) {
     139      return subtrees.IndexOf(tree);
    140140    }
    141     public virtual void AddSubTree(ISymbolicExpressionTreeNode tree) {
    142       subTrees.Add(tree);
     141    public virtual void AddSubtree(ISymbolicExpressionTreeNode tree) {
     142      subtrees.Add(tree);
    143143      tree.Parent = this;
    144144      ResetCachedValues();
    145145    }
    146     public virtual void InsertSubTree(int index, ISymbolicExpressionTreeNode tree) {
    147       subTrees.Insert(index, tree);
     146    public virtual void InsertSubtree(int index, ISymbolicExpressionTreeNode tree) {
     147      subtrees.Insert(index, tree);
    148148      tree.Parent = this;
    149149      ResetCachedValues();
    150150    }
    151     public virtual void RemoveSubTree(int index) {
    152       subTrees[index].Parent = null;
    153       subTrees.RemoveAt(index);
     151    public virtual void RemoveSubtree(int index) {
     152      subtrees[index].Parent = null;
     153      subtrees.RemoveAt(index);
    154154      ResetCachedValues();
    155155    }
     
    163163    public void ForEachNodePrefix(Action<ISymbolicExpressionTreeNode> a) {
    164164      a(this);
    165       if (SubTrees != null) {
    166         foreach (var subtree in SubTrees) {
     165      if (Subtrees != null) {
     166        foreach (var subtree in Subtrees) {
    167167          subtree.ForEachNodePrefix(a);
    168168        }
     
    177177
    178178    public void ForEachNodePostfix(Action<ISymbolicExpressionTreeNode> a) {
    179       if (SubTrees != null) {
    180         foreach (var subtree in SubTrees) {
     179      if (Subtrees != null) {
     180        foreach (var subtree in Subtrees) {
    181181          subtree.ForEachNodePostfix(a);
    182182        }
Note: See TracChangeset for help on using the changeset viewer.