Changeset 6618 for branches/GP.Grammar.Editor/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/SymbolicExpressionGrammarBase.cs
- Timestamp:
- 08/01/11 17:48:53 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/GP.Grammar.Editor/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/SymbolicExpressionGrammarBase.cs
r6493 r6618 86 86 suppressEvents = false; 87 87 } 88 [StorableHook(HookType.AfterDeserialization)]89 private void AfterDeserialization() {90 foreach (ISymbol symbol in symbols.Values)91 RegisterSymbolEvents(symbol);92 }93 88 94 89 protected SymbolicExpressionGrammarBase(SymbolicExpressionGrammarBase original, Cloner cloner) … … 109 104 allowedChildSymbolsPerIndex.Add(element.Key, new List<string>(element.Value)); 110 105 111 foreach (ISymbol symbol in symbols.Values)112 RegisterSymbolEvents(symbol);113 114 106 suppressEvents = false; 115 107 } … … 130 122 131 123 #region protected grammar manipulation methods 132 protected v oid 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)); 136 128 ClearCaches(); 137 129 OnChanged(); 138 130 } 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) { 156 133 symbols.Remove(symbol.Name); 157 134 allowedChildSymbols.Remove(symbol.Name); … … 170 147 } 171 148 } 172 DeregisterSymbolEvents(symbol);173 149 } 174 150 … … 370 346 } 371 347 372 pr ivatevoid ClearCaches() {348 protected void ClearCaches() { 373 349 cachedMinExpressionLength.Clear(); 374 350 cachedMaxExpressionLength.Clear();
Note: See TracChangeset
for help on using the changeset viewer.