//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); } } } }
/// <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); } } } } }
public OutStruct(ClasseEntree entree, Outils outils) { this.entree = entree; this.outils = outils; }