public override Variable Duplicate() { VariableDictionary v = new VariableDictionary(); foreach (KeyValuePair <string, Variable> kp in Values) { v.SetValue(kp.Key, kp.Value.Duplicate()); } v.LastChanger = LastChanger; v.LastChanged = LastChanged; return(v); }
public override int CompareTo(object o) { if ((o is Variable) == false) { throw new InvalidOperationException(); } if (o is VariableScalar) { return(1); } if (o is VariableList) { return(1); } if (o is VariableDictionary) { VariableDictionary v = (VariableDictionary)o; if (v.Values.Keys.Count > Values.Keys.Count) { return(-1); } if (v.Values.Keys.Count < Values.Keys.Count) { return(1); } List <string> a = new List <string>(Values.Keys); List <string> b = new List <string>(v.Values.Keys); a.Sort(); b.Sort(); for (int i = 0; i < a.Count; i++) { int res = a[i].CompareTo(b[i]); if (res != 0) { return(res); } res = Values[a[i]].CompareTo(v.Values[a[i]]); if (res != 0) { return(res); } } return(0); } return(-1); }