public void AddNewValue(string identifier, VariableState value) { if (VariableStates.ContainsKey(identifier)) //New variable in a different scope { Logger.Log("Removing existing state for " + identifier); Variables.Remove(identifier); } Logger.Log($"Adding state for {identifier} ({value})"); Variables.Add(identifier, value); }
public void AddOrUpdateValue(string identifier, VariableState value) { if (VariableStates.ContainsKey(identifier)) //Override existing value { VariableStates[identifier].Replace(value); Logger.Log($"Updating state for {identifier} ({value})"); } else { //Unexpected state Logger.Log($"Adding state for {identifier} ({value})"); Variables.Add(identifier, value); } }
public void MergeValue(string identifier, VariableState value) { if (VariableStates.ContainsKey(identifier)) //Override existing value { var state = VariableStates[identifier]; var newState = state.Merge(value); Variables.Remove(identifier); Variables.Add(identifier, newState); if (DebugMode) { Logger.Log($"Merging state for {identifier} ({newState})"); } } else { //Unexpected state if (DebugMode) { Logger.Log($"Merging state for {identifier} ({value}) .. /!\\ unexpected state"); } Variables.Add(identifier, value); } }