Beispiel #1
0
 //Supression elemnt
 public void DeleteOustruct(Outils outil)
 {
     for (int i = Sorties.Count - 1; i >= 0; i--)
     {
         if (Sorties[i].getOutils().Equals(outil))
         {
             Sorties.Remove(Sorties[i]);
         }
     }
 }
 /// <summary>
 /// Retourne True si outil a été ajouté au circuit
 /// </summary>
 /// <param name="outil"></param>
 /// <returns></returns>
 public bool AddComponent(Outils outil)
 {
     if (!Circuit.ContainsVertex(outil)) //Si outil n'est aps déjà présent dans le circuit
     {
         Circuit.AddVertex(outil);
         outil.circuit = this;
         return(true);
     }
     else
     {
         return(false);
     }
 }
        /// <summary>
        /// pour calculsortie()
        /// </summary>
        /// <param name="outil"></param>
        /// <param name="hs"></param>
        //pour calculsortie()
        public void EvaluatePerso(Outils outil, ICollection <Edge <Outils> > hs)
        {
            if (!outil.end || Circuit.InEdges(outil) != null)
            {
                IEnumerable <Edge <Outils> > inEdges = Circuit.InEdges(outil);
                foreach (Edge <Outils> edge in inEdges)
                {
                    if (!hs.Contains(edge))
                    {
                        hs.Add(edge);
                        EvaluatePerso(edge.Source, hs);
                    }
                }
            }

            outil.calcul_sorties();
        }
        /// <summary>
        /// Evalue le circuit en considérant outil sa fin
        /// </summary>
        /// <param name="outil">La fin du circuit considéré</param>
        /// <param name="hs">Collection des edges déjà passé par</param>
        public void Evaluate(Outils outil, ICollection <Edge <Outils> > hs)
        {
            if (Circuit.ContainsVertex(outil))
            {
                if (!Circuit.IsInEdgesEmpty(outil))
                {
                    IEnumerable <Edge <Outils> > inEdges = Circuit.InEdges(outil);

                    foreach (Edge <Outils> edge in inEdges)
                    {
                        if (!hs.Contains(edge))
                        {
                            hs.Add(edge);
                            Evaluate(edge.Source, hs);//on remonte au debut du circuit
                        }
                    }
                }
            }
            outil.calcul_sorties();//on calcul en décendant vers la fin du circuit
        }
        //recuperation de la sortie
        public void RecupSorti(Outils outil, PinOut pin)
        {
            foreach (Sortie sorti in outil.getListesorties())
            {
                foreach (OutStruct outs in sorti.get_OutStruct())
                {
                    if (outs.getOutils().Equals(pin))
                    {
                        this.nb_sorties++;
                        sorti.set_Sorties(new List <OutStruct>());
                        sorti.setDispo(Disposition.right);
                        //creation de la liste pour la sauvegarde du circuit aprés  reutilisation
                        this.Sortie.Add(new Point(outil.id, outil.getListesorties().IndexOf(sorti)));
                        this.liste_sorties.Add(sorti);

                        //on supprime la sortie de gate
                        ((Grid)(sorti.Parent)).Children.Remove(sorti);
                    }
                }
            }
        }
Beispiel #6
0
        /// <summary>
        /// Construire la liste de fin d'un element
        /// </summary>
        /// <param name="iN"></param>
        public void EndCircuit(IN iN, ICollection <Edge <Outils> > hs)
        {
            Outils o = this;

            if ((iN.circuit.getCircuit().OutEdges(o)).Any())
            {
                foreach (Edge <Outils> edge in iN.circuit.getCircuit().OutEdges(o))
                {
                    if (!hs.Contains(edge))
                    {
                        hs.Add(edge);
                        if ((edge.Target is PinOut) || edge.Target.Empty())
                        {
                            iN.getEndListe().Add(edge.Target);
                        }
                        else
                        {
                            edge.Target.EndCircuit(iN, hs);
                        }
                    }
                }
            }
        }
Beispiel #7
0
 public OutStruct(ClasseEntree entree, Outils outils)
 {
     this.entree = entree;
     this.outils = outils;
 }