예제 #1
0
    // Token: 0x06002501 RID: 9473 RVA: 0x0008816C File Offset: 0x0008636C
    protected void DoUnionWith(global::ODBList <T> list)
    {
        if (!list.any || list == this)
        {
            return;
        }
        global::ODBSibling <T> n = list.first;

        do
        {
            T self = n.item.self;
            n = n.item.n;
            if (this.hashSet.Add(self))
            {
                global::ODBNode <T> .New(this, self);
            }
        }while (n.has);
    }
예제 #2
0
 // Token: 0x06002504 RID: 9476 RVA: 0x00088340 File Offset: 0x00086540
 protected void DoIntersectWith(global::ODBList <T> list)
 {
     if (this.any)
     {
         if (list.any)
         {
             if (list != this)
             {
                 this.hashSet.IntersectWith(list.hashSet);
                 int num = this.hashSet.Count;
                 if (num == 0)
                 {
                     while (this.any)
                     {
                         this.first.item.Dispose();
                     }
                 }
                 else
                 {
                     global::ODBSibling <T> n = this.first;
                     do
                     {
                         global::ODBNode <T> item = n.item;
                         n = n.item.n;
                         if (!this.hashSet.Contains(item.self))
                         {
                             item.Dispose();
                             if (this.count == num)
                             {
                                 break;
                             }
                         }
                     }while (n.has);
                 }
             }
         }
         else
         {
             this.DoClear();
         }
     }
 }
예제 #3
0
 // Token: 0x06002503 RID: 9475 RVA: 0x00088254 File Offset: 0x00086454
 protected void DoSymmetricExceptWith(global::ODBList <T> list)
 {
     if (this.any)
     {
         if (list.any)
         {
             if (list == this)
             {
                 this.DoClear();
             }
             else
             {
                 global::ODBSibling <T> n = list.first;
                 do
                 {
                     T self = n.item.self;
                     n = n.item.n;
                     if (this.hashSet.Remove(self))
                     {
                         this.KnownFind(self).Dispose();
                     }
                     else
                     {
                         this.hashSet.Add(self);
                         global::ODBNode <T> .New(this, self);
                     }
                 }while (n.has);
             }
         }
     }
     else if (list.any)
     {
         global::ODBSibling <T> n2 = list.first;
         do
         {
             T self2 = n2.item.self;
             n2 = n2.item.n;
             this.hashSet.Add(self2);
             global::ODBNode <T> .New(this, self2);
         }while (n2.has);
     }
 }
예제 #4
0
    // Token: 0x06002505 RID: 9477 RVA: 0x00088414 File Offset: 0x00086614
    protected global::ODBNode <T> KnownFind(T item)
    {
        global::ODBSibling <T> n = this.first;

        for (;;)
        {
            T self = n.item.self;
            if (self == item)
            {
                break;
            }
            n = n.item.n;
            if (!n.has)
            {
                goto Block_2;
            }
        }
        return(n.item);

Block_2:
        throw new ArgumentException("item was not found", "item");
    }
예제 #5
0
 // Token: 0x06002502 RID: 9474 RVA: 0x000881D4 File Offset: 0x000863D4
 protected void DoExceptWith(global::ODBList <T> list)
 {
     if (!this.any || !list.any)
     {
         return;
     }
     if (list == this)
     {
         this.DoClear();
     }
     else
     {
         global::ODBSibling <T> n = list.first;
         do
         {
             T self = n.item.self;
             n = n.item.n;
             if (this.hashSet.Remove(self))
             {
                 this.KnownFind(self).Dispose();
             }
         }while (n.has);
     }
 }
 // Token: 0x060024C3 RID: 9411 RVA: 0x000877C0 File Offset: 0x000859C0
 public ODBForwardEnumerable(global::ODBSibling <T> sibling)
 {
     this.sibling = sibling;
 }
예제 #7
0
 // Token: 0x060024BC RID: 9404 RVA: 0x00087730 File Offset: 0x00085930
 public ODBReverseEnumerable(global::ODBSibling <T> sibling)
 {
     this.sibling = sibling;
 }
 // Token: 0x060024A6 RID: 9382 RVA: 0x00087530 File Offset: 0x00085730
 public ODBForwardEnumerator(global::ODBSibling <T> sibling)
 {
     this.sib     = sibling;
     this.Current = (T)((object)null);
 }