Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
08/21/17 11:33:53 (7 years ago)
Author:
pkimmesw
Message:

#2665 Testet Problems, Testet error functions, Small fixes, Created HL files

Location:
branches/PushGP/HeuristicLab.PushGP
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/PushGP/HeuristicLab.PushGP

    • Property svn:ignore
      •  

        old new  
        11*.user
         2packages
         3TestResults
  • branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Stack/PrintStack.cs

    r15289 r15334  
    1414  public class PrintStack : IPrintStack {
    1515    private int lineCount = 0;
     16    private int length = 0;
     17    private IReadOnlyList<string> lines;
    1618    private readonly StringBuilder stringBuilder = new StringBuilder();
    1719
     20    public PrintStack() {
     21      IsCurrentLineEmpty = true;
     22    }
     23
     24    public bool IsCurrentLineEmpty { get; private set; }
     25
    1826    IEnumerator IEnumerable.GetEnumerator() {
    19       var lines = AsStrings();
    20       return lines.GetEnumerator();
     27      return Lines.GetEnumerator();
    2128    }
    2229
     
    2532    }
    2633
     34    public IReadOnlyList<string> Lines
     35    {
     36      get
     37      {
     38        if (stringBuilder.Length == length) return lines;
     39        length = stringBuilder.Length;
     40        lines = stringBuilder.ToString().Split(PushEnvironment.NewLine);
     41
     42        return lines;
     43      }
     44    }
     45
    2746    void IPushStack.Clear() {
     47      lineCount = 0;
     48      length = 0;
     49      lines = null;
     50      IsCurrentLineEmpty = true;
    2851      stringBuilder.Clear();
    2952    }
     
    3154    public void NewLine() {
    3255      stringBuilder.Append(PushEnvironment.NewLine);
     56      IsCurrentLineEmpty = true;
    3357      lineCount++;
    3458    }
     
    3660    public void Push<T>(T item) {
    3761      if (IsEmpty) lineCount = 1;
    38       stringBuilder.Append(item);
     62      var str = item.ToString();
     63      stringBuilder.Append(str);
     64      IsCurrentLineEmpty = IsCurrentLineEmpty && string.IsNullOrEmpty(str);
    3965    }
    4066
     
    4268      if (IsEmpty) lineCount = 1;
    4369      stringBuilder.Concat(item);
     70      IsCurrentLineEmpty = false;
    4471    }
    4572
     
    4774      if (IsEmpty) lineCount = 1;
    4875      stringBuilder.Concat(item);
     76      IsCurrentLineEmpty = false;
    4977    }
    5078
     
    5280      if (IsEmpty) lineCount = 1;
    5381      stringBuilder.Concat(item);
     82      IsCurrentLineEmpty = false;
    5483    }
    5584
     
    5786      if (IsEmpty) lineCount = 1;
    5887      stringBuilder.Concat(item);
     88      IsCurrentLineEmpty = false;
    5989    }
    6090
     
    6292      if (IsEmpty) lineCount = 1;
    6393      stringBuilder.Append(item);
     94      IsCurrentLineEmpty = false;
    6495    }
    6596
     
    6798      if (IsEmpty) lineCount = 1;
    6899      stringBuilder.Append(item);
     100      IsCurrentLineEmpty = false;
    69101    }
    70 
    71102
    72103    public void Push(string item) {
    73104      if (IsEmpty) lineCount = 1;
    74105      stringBuilder.Append(item);
     106      IsCurrentLineEmpty = IsCurrentLineEmpty && string.IsNullOrEmpty(item);
    75107    }
    76108
     
    78110      for (var i = startIndex; i < items.Count; i++)
    79111        stringBuilder.Append(items[i]);
     112
     113      IsCurrentLineEmpty = false;
    80114    }
    81115
     
    87121      foreach (var item in items)
    88122        stringBuilder.Append(item);
     123
     124      IsCurrentLineEmpty = false;
    89125    }
    90126
    91127    public IEnumerable<string> AsStrings() {
    92       var lines = stringBuilder.ToString().Split(PushEnvironment.NewLine);
    93       return lines;
     128      return Lines;
    94129    }
    95130
    96131    public IEnumerable<object> AsObjects() {
    97       return AsStrings();
     132      return Lines;
    98133    }
    99134
Note: See TracChangeset for help on using the changeset viewer.