Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
08/01/11 17:48:53 (13 years ago)
Author:
mkommend
Message:

#1479: Integrated trunk changes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/GP.Grammar.Editor/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/SymbolicExpressionGrammarBase.cs

    r6493 r6618  
    8686      suppressEvents = false;
    8787    }
    88     [StorableHook(HookType.AfterDeserialization)]
    89     private void AfterDeserialization() {
    90       foreach (ISymbol symbol in symbols.Values)
    91         RegisterSymbolEvents(symbol);
    92     }
    9388
    9489    protected SymbolicExpressionGrammarBase(SymbolicExpressionGrammarBase original, Cloner cloner)
     
    109104        allowedChildSymbolsPerIndex.Add(element.Key, new List<string>(element.Value));
    110105
    111       foreach (ISymbol symbol in symbols.Values)
    112         RegisterSymbolEvents(symbol);
    113 
    114106      suppressEvents = false;
    115107    }
     
    130122
    131123    #region protected grammar manipulation methods
    132     protected void AddSymbol(ISymbol symbol) {
    133       foreach (ISymbol s in symbol.Flatten())
    134         AddSymbolToDictionaries(s);
    135 
     124    protected virtual void AddSymbol(ISymbol symbol) {
     125      if (ContainsSymbol(symbol)) throw new ArgumentException("Symbol " + symbol + " is already defined.");
     126      symbols.Add(symbol.Name, symbol);
     127      symbolSubtreeCount.Add(symbol.Name, Tuple.Create(0, 0));
    136128      ClearCaches();
    137129      OnChanged();
    138130    }
    139     private void AddSymbolToDictionaries(ISymbol symbol) {
    140       symbols.Add(symbol.Name, symbol);
    141       symbolSubtreeCount.Add(symbol.Name, Tuple.Create(symbol.MinimumArity, symbol.MinimumArity));
    142       RegisterSymbolEvents(symbol);
    143     }
    144 
    145     protected void RemoveSymbol(ISymbol symbol) {
    146       foreach (ISymbol s in symbol.Flatten())
    147         RemoveSymbolFromDictionaries(s);
    148 
    149       foreach (GroupSymbol group in symbols.Values.OfType<GroupSymbol>())
    150         group.SymbolsCollection.Remove(symbol);
    151 
    152       ClearCaches();
    153       OnChanged();
    154     }
    155     private void RemoveSymbolFromDictionaries(ISymbol symbol) {
     131
     132    protected virtual void RemoveSymbol(ISymbol symbol) {
    156133      symbols.Remove(symbol.Name);
    157134      allowedChildSymbols.Remove(symbol.Name);
     
    170147        }
    171148      }
    172       DeregisterSymbolEvents(symbol);
    173149    }
    174150
     
    370346    }
    371347
    372     private void ClearCaches() {
     348    protected void ClearCaches() {
    373349      cachedMinExpressionLength.Clear();
    374350      cachedMaxExpressionLength.Clear();
Note: See TracChangeset for help on using the changeset viewer.