Exemple #1
0
        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);
        }
Exemple #2
0
        public OclBag excluding <T>(OclClassifier newElementType, T item) where T : OclAny
        {
            OclBag bg = new OclBag(newElementType, map);

            bg.map.Remove(item);
            return(bg);
        }
Exemple #3
0
 public OclBag union(OclClassifier newElementType, OclBag s2)
 {
     if (IsNull(s2))
     {
         throw new ArgumentNullException();
     }
     //Use Bag implemetation
     return(s2.union(newElementType, this));
 }
Exemple #4
0
        public OclBag union(OclClassifier newElementType, OclSet set)
        {
            if (IsNull(set))
            {
                throw new ArgumentNullException();
            }
            OclBag bg = new OclBag(newElementType, map);

            bg.AddRange(set);
            return(bg);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
        }