public bool Add(Actor actor) { if (this.Contains(actor)) { return(false); } else { ++this.numActors; ActorSet.ListNode newNode = new ActorSet.ListNode(actor, this.listHeadTail.prev); int seq = actor.GetSequenceNumber(); if (this.numActors >= 2 * this.hashMap.Length) { this.Resize(); } else { int hash = seq % this.hashMap.Length; ActorSet.ListNode hashHead = this.hashMap[hash]; this.hashMap[hash] = newNode; newNode.SetHashListHead(hashHead); } this.code += seq; return(true); } }
public bool Add(Actor actor) { if (this.Contains(actor)) { return false; } else { ++this.numActors; ActorSet.ListNode newNode = new ActorSet.ListNode(actor, this.listHeadTail.prev); int seq = actor.GetSequenceNumber(); if (this.numActors >= 2 * this.hashMap.Length) { this.Resize(); } else { int hash = seq % this.hashMap.Length; ActorSet.ListNode hashHead = this.hashMap[hash]; this.hashMap[hash] = newNode; newNode.SetHashListHead(hashHead); } this.code += seq; return true; } }
private ActorSet.ListNode GetActorNode(Actor actor) { if (this.hashMap.Length == 0) { return(null); } else { int seq = actor.GetSequenceNumber(); int hash = seq % this.hashMap.Length; ActorSet.ListNode hashHead = this.hashMap[hash]; if (hashHead == null) { return(null); } else if (hashHead.actor == actor) { return(hashHead); } else { for (ActorSet.ListNode curNode = hashHead.nextHash; curNode != hashHead; curNode = curNode.nextHash) { if (curNode.actor == actor) { return(curNode); } } return(null); } } }
public bool Remove(Actor actor) { ActorSet.ListNode actorNode = this.GetActorNode(actor); if (actorNode != null) { this.Remove(actorNode); this.code -= actor.GetSequenceNumber(); return(true); } else { return(false); } }
public void AddAll(Actor[] o) { int size = o.Length; this.numActors = size; this.Resize(); for (int i = 0; i < size; i++) { Actor actor = o[i]; ActorSet.ListNode newNode = new ActorSet.ListNode(actor, this.listHeadTail.prev); int seq = actor.GetSequenceNumber(); int hash = seq % this.hashMap.Length; ActorSet.ListNode hashHead = this.hashMap[hash]; this.hashMap[hash] = newNode; newNode.SetHashListHead(hashHead); this.code += seq; } }
public bool Remove(Actor actor) { ActorSet.ListNode actorNode = this.GetActorNode(actor); if (actorNode != null) { this.Remove(actorNode); this.code -= actor.GetSequenceNumber(); return true; } else { return false; } }
private ActorSet.ListNode GetActorNode(Actor actor) { if (this.hashMap.Length == 0) { return null; } else { int seq = actor.GetSequenceNumber(); int hash = seq % this.hashMap.Length; ActorSet.ListNode hashHead = this.hashMap[hash]; if (hashHead == null) { return null; } else if (hashHead.actor == actor) { return hashHead; } else { for (ActorSet.ListNode curNode = hashHead.nextHash; curNode != hashHead; curNode = curNode.nextHash) { if (curNode.actor == actor) { return curNode; } } return null; } } }