public P_Set <T> Add(T value) { var add = Adds.FirstOrDefault(e => e.Id == value.Id); var remove = Removes.FirstOrDefault(e => e.Id == value.Id); if (add is not null || remove is not null) { return(this); } return(new(Adds.Add(value), Removes)); }
public override T Remove() { if (Collection.Count == 0) { throw new InvalidOperationException("The list is empty"); } T element = Collection[0]; Collection.RemoveAt(0); Removes.Add(element); return(element); }
public override void Update( ) { foreach (ParticleBase particle in Particles) { particle.Update( ); } foreach (ParticleBase particle in Removes) { Particles.Remove(particle); } Removes.Clear( ); }
public LWW_SetWithVC <T> Remove(T value, VectorClock vectorClock) { if (Adds.Any(a => Equals(a.Value, value) && a.VectorClock < vectorClock)) { var element = Removes.FirstOrDefault(r => r.Value.Id == value.Id); ImmutableHashSet <LWW_SetWithVCElement <T> > elements = Removes; if (element is not null) { elements = Removes.Remove(element); } return(new(Adds, elements.Add(new LWW_SetWithVCElement <T>(value, vectorClock)))); } return(this); }
public LWW_Set <T> Remove(T value, long timestamp) { if (Adds.Any(a => Equals(a.Value, value) && a.Timestamp < timestamp)) { var element = Removes.FirstOrDefault(r => r.Value.Id == value.Id); ImmutableHashSet <LWW_SetElement <T> > elements = Removes; if (element is not null) { elements = Removes.Remove(element); } return(new(Adds, elements.Add(new LWW_SetElement <T>(value, timestamp)))); } return(this); }
public LWW_SetWithVC <T> Merge(ImmutableHashSet <LWW_SetWithVCElement <T> > adds, ImmutableHashSet <LWW_SetWithVCElement <T> > removes) { return(new(Adds.Union(adds), Removes.Union(removes))); }
private void DeletedNodes(XmlNode node, XmlNamespaceManager nsmgr) { foreach (XmlNode n in node.ChildNodes) { if (n.NodeType != XmlNodeType.Element) { continue; } DeletedNodes(n, nsmgr); } if (node.NodeType != XmlNodeType.Element) { return; } int matchIndex = -1; int leftoverAttr = 0; var parentXp = new List <string>(); if (node.Attributes != null && node.Attributes.Count > 0) { foreach (XmlAttribute a in node.Attributes) { matchIndex = MatchedNodes.IndexOf(a); if (matchIndex != -1) { MatchedNodes.RemoveAt(matchIndex); continue; } leftoverAttr++; if (Identifiers.Contains(a.Name)) { string xp = GetXPath(a.OwnerElement); parentXp.Add(xp); for (int i = Removes.Count - 1; i >= 0; i--) { var d = Removes[i]; if (d.XPath.StartsWith(xp)) { Removes.RemoveAt(i); } } Removes.Add(new Diff(GetXPath(a.OwnerElement), null, null)); } else { string xp = GetXPath(a); if (parentXp.FirstOrDefault(p => xp.StartsWith(p)) != null) { continue; } Removes.Add(new Diff(xp, null, a.Value)); } } } matchIndex = MatchedNodes.IndexOf(node); if (matchIndex != -1) { MatchedNodes.RemoveAt(matchIndex); } if (leftoverAttr > 0 || node.HasChildNodes || node.ParentNode.HasChildNodes) { return; } string xpn = GetXPath(node); if (parentXp.FirstOrDefault(p => xpn.StartsWith(p)) != null) { return; } Removes.Add(new Diff(xpn, null, node.GetValue())); }
public OUR_Set <T> Merge(ImmutableHashSet <OUR_SetElement <T> > adds, ImmutableHashSet <OUR_SetElement <T> > removes) { return(new(Adds.Union(adds), Removes.Union(removes))); }
public void Remove(ParticleBase particle) { Removes.Add(particle); }
public P_Set <T> Merge(ImmutableHashSet <T> adds, ImmutableHashSet <T> removes) { return(new(Adds.Union(adds), Removes.Union(removes))); }