internal virtual IConstraint Join1(Db4objects.Db4o.Internal.Query.Processor.QCon a_with, bool a_and) { if (a_with is QConstraints) { int j = 0; Collection4 joinHooks = new Collection4(); IConstraint[] constraints = ((QConstraints)a_with).ToArray(); for (j = 0; j < constraints.Length; j++) { joinHooks.Ensure(((Db4objects.Db4o.Internal.Query.Processor.QCon)constraints[j]). JoinHook()); } IConstraint[] joins = new IConstraint[joinHooks.Size()]; j = 0; IEnumerator i = joinHooks.GetEnumerator(); while (i.MoveNext()) { joins[j++] = Join((IConstraint)i.Current, a_and); } return new QConstraints(i_trans, joins); } Db4objects.Db4o.Internal.Query.Processor.QCon myHook = JoinHook(); Db4objects.Db4o.Internal.Query.Processor.QCon otherHook = a_with.JoinHook(); if (myHook == otherHook) { // You might like to check out, what happens, if you // remove this line. It seems to open a bug in an // StOr testcase. return myHook; } QConJoin cj = new QConJoin(i_trans, myHook, otherHook, a_and); myHook.AddJoin(cj); otherHook.AddJoin(cj); return cj; }
internal virtual Db4objects.Db4o.Internal.Query.Processor.QCon ProduceTopLevelJoin () { if (!HasJoins()) { return this; } IEnumerator i = IterateJoins(); if (i_joins.Size() == 1) { i.MoveNext(); return ((Db4objects.Db4o.Internal.Query.Processor.QCon)i.Current).ProduceTopLevelJoin (); } Collection4 col = new Collection4(); while (i.MoveNext()) { col.Ensure(((Db4objects.Db4o.Internal.Query.Processor.QCon)i.Current).ProduceTopLevelJoin ()); } i = col.GetEnumerator(); i.MoveNext(); Db4objects.Db4o.Internal.Query.Processor.QCon qcon = (Db4objects.Db4o.Internal.Query.Processor.QCon )i.Current; if (col.Size() == 1) { return qcon; } while (i.MoveNext()) { qcon = (Db4objects.Db4o.Internal.Query.Processor.QCon)qcon.And((IConstraint)i.Current ); } return qcon; }
private void AssertContainsNull(Collection4 c) { Assert.IsTrue(c.Contains(null)); Assert.IsNull(c.Get(null)); var size = c.Size(); c.Ensure(null); Assert.AreEqual(size, c.Size()); }
private void AssertNotContainsNull(Collection4 c) { Assert.IsFalse(c.Contains(null)); Assert.IsNull(c.Get(null)); int size = c.Size(); c.Ensure(null); Assert.AreEqual(size + 1, c.Size()); c.Remove(null); Assert.AreEqual(size, c.Size()); }
internal virtual QCon ProduceTopLevelJoin () { if (!HasJoins()) { return this; } var i = IterateJoins(); if (i_joins.Size() == 1) { i.MoveNext(); return ((QCon) i.Current).ProduceTopLevelJoin (); } var col = new Collection4(); while (i.MoveNext()) { col.Ensure(((QCon) i.Current).ProduceTopLevelJoin ()); } i = col.GetEnumerator(); i.MoveNext(); var qcon = (QCon ) i.Current; if (col.Size() == 1) { return qcon; } while (i.MoveNext()) { qcon = (QCon) qcon.And((IConstraint) i.Current ); } return qcon; }