public override bool Equals(object obj) { if (!(obj is OclBag)) { return(false); } OclBag bag = (OclBag)obj; foreach (KeyValuePair <OclAny, int> t in map) { int i; if (!bag.map.TryGetValue(t.Key, out i) || i != t.Value) { return(false); } } foreach (KeyValuePair <OclAny, int> t in bag.map) { int i; if (!map.TryGetValue(t.Key, out i) || i != t.Value) { return(false); } } return(true); }
public OclBag excluding <T>(OclClassifier newElementType, T item) where T : OclAny { OclBag bg = new OclBag(newElementType, map); bg.map.Remove(item); return(bg); }
public OclBag union(OclClassifier newElementType, OclBag s2) { if (IsNull(s2)) { throw new ArgumentNullException(); } //Use Bag implemetation return(s2.union(newElementType, this)); }
public OclBag union(OclClassifier newElementType, OclSet set) { if (IsNull(set)) { throw new ArgumentNullException(); } OclBag bg = new OclBag(newElementType, map); bg.AddRange(set); return(bg); }
public OclSet intersection(OclBag bag) { if (IsNull(bag)) { throw new ArgumentNullException(); } OclSet newSet = new OclSet(elementType, set); newSet.set.IntersectWith(bag.map.Keys); return(newSet); }
public OclBag intersection(OclBag bag) { if (IsNull(bag)) { throw new ArgumentNullException(); } OclBag bg = new OclBag(elementType); foreach (KeyValuePair <OclAny, int> pair in map) { int count; if (bag.map.TryGetValue(pair.Key, out count)) { bg.map.Add(pair.Key, Math.Min(count, pair.Value)); } } return(bg); }