public MGRB And(MGRB B) { var v = new SafeSortedList <int, Container>(); var len = _size; if (B.Length < len) { len = B.Length; } var a = LastContainerIdx(); var b = B.LastContainerIdx(); var min = a; if (b < min) { min = b; } min++; for (int i = 0; i < min; i++) { Container ca = null; Container cb = null; _containers.TryGetValue(i, out ca); B._containers.TryGetValue(i, out cb); if (ca != null && cb != null) { v.Add(i, containerAND(ca, cb)); } } return(new MGRB(v, len)); }
public MGRB Or(MGRB B) { var v = new SafeSortedList <int, Container>(); var len = _size; if (B.Length > len) { len = B.Length; } var a = LastContainerIdx(); var b = B.LastContainerIdx(); var max = a; if (b > max) { max = b; } max++; for (int i = 0; i < max; i++) { Container ca = null; Container cb = null; _containers.TryGetValue(i, out ca); B._containers.TryGetValue(i, out cb); if (ca == null && cb != null) { v.Add(i, cb.Copy()); } else if (cb == null && ca != null) { v.Add(i, ca.Copy()); } else if (ca != null && cb != null) { v.Add(i, containerOR(ca, cb)); } } return(new MGRB(v, len)); }