Esempio n. 1
0
        /// <summary>
        ///     Compare la pile avec un objet tiers.
        /// </summary>
        /// <param name="obj">Objet traité.</param>
        /// <returns>true si les objets sont équivalents, false sinon.</returns>
        public override bool Equals(object obj)
        {
            IContractStack other = obj as IContractStack;

            if (other == null)
            {
                return(false);
            }

            return(Enumerable.SequenceEqual(this, other));
        }
Esempio n. 2
0
 /// <summary>
 ///     <see cref="IContractGroups{TContract}.Pull(IContractStack, TContract)" />
 /// </summary>
 public void Pull(IContractStack key, TContract value)
 {
     if (ContainsKey(key))
     {
         this[key].Remove(value);
         if (this[key].Count == 0)
         {
             Remove(key);
         }
     }
 }
Esempio n. 3
0
 /// <summary>
 ///     <see cref="IContractGroups{TContract}.Push(IContractStack, TContract)" />
 /// </summary>
 public void Push(IContractStack key, TContract value)
 {
     if (ContainsKey(key))
     {
         // Ajout à une entrée pré-existante du tampon
         this[key].Add(value);
     }
     else
     {
         // Création d'une entrée dans le tampon
         var group = new ContractGroup <TContract>(value);
         Add(key, group);
     }
 }
Esempio n. 4
0
 /// <summary>
 ///     Constructeur par copie.
 /// </summary>
 /// <param name="source">Liste d'origine.</param>
 public ContractStack(IContractStack source) : base(source)
 {
 }
Esempio n. 5
0
 /// <summary>
 ///     Constructeur complémentant une pile pré-existante.
 /// </summary>
 /// <param name="parent">Pile parente.</param>
 /// <param name="current">Classe de groupage courante.</param>
 public ContractStack(IContractStack parent, IContractGrouper current) : base(parent)
 {
     Add(current);
 }