Esempio n. 1
0
        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));
        }
Esempio n. 2
0
    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);
    }
Esempio n. 3
0
 public override void Update( )
 {
     foreach (ParticleBase particle in Particles)
     {
         particle.Update( );
     }
     foreach (ParticleBase particle in Removes)
     {
         Particles.Remove(particle);
     }
     Removes.Clear( );
 }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
 public LWW_SetWithVC <T> Merge(ImmutableHashSet <LWW_SetWithVCElement <T> > adds, ImmutableHashSet <LWW_SetWithVCElement <T> > removes)
 {
     return(new(Adds.Union(adds), Removes.Union(removes)));
 }
Esempio n. 7
0
        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)));
 }
Esempio n. 9
0
 public void Remove(ParticleBase particle)
 {
     Removes.Add(particle);
 }
Esempio n. 10
0
 public P_Set <T> Merge(ImmutableHashSet <T> adds, ImmutableHashSet <T> removes)
 {
     return(new(Adds.Union(adds), Removes.Union(removes)));
 }