/// <summary> /// Retourne True si une sortie d'un component1 à une sortie d'un component2 ont été reliées, et si c'est le cas mettre à jour les input/output /// </summary> /// <param name="component1">Le composant qui comporte le input/output sortie</param> /// <param name="component2">Le composant qui comporte le input/output entree</param> /// <param name="sortie">La sortie à relier</param> /// <param name="entree">L'entrée à relier</param> /// <returns></returns> public bool Relate(Outils component1, Outils component2, Sortie sortie, ClasseEntree entree) { component1.circuit = this; component2.circuit = this; //On vérifie si l'entrée entree n'est pas déjà reliée, //et si sortie et entree ont le meme état booléen, //et si sortie est contenue dans la liste_sorties de component1, //et si entree est contenue dans la liste_sentrees de component2, //et si component1 et component2 sont contenus dans le circuit if (!entree.getRelated() && entree.getEtat() == sortie.getEtat() && component1.getListesorties().Contains(sortie) && component2.getListeentrees().Contains(entree) && Circuit.ContainsVertex(component2) && Circuit.ContainsVertex(component1)) //Si l'entrée de component2 n'est pas reliée { OutStruct outstruct = new OutStruct(entree, component2); //Mise à jour des liaison if (!sortie.getSortie().Contains(outstruct)) { sortie.getSortie().Add(outstruct); entree.setRelated(true);//Mise à jour de related } if (!Circuit.ContainsEdge(component1, component2)) //Si il n'y a pas un edge déja présent liant component1 et component2 { Edge <Outils> edge = new Edge <Outils>(component1, component2); Circuit.AddEdge(edge); //Ajouter edge entre component1 et component2 } entree.setEtat(sortie.getEtat()); //Mise à jour de l'état d'entree de component2 return(true); // component1 et component2 liées avec succès } else { return(false); } }
/// Pour la réeutilisation public override void setEntreeSpe(int i, bool etat) { ClasseEntree io = liste_entrees[i]; foreach (Outils v in Circuit.Vertices) { if (v.getListeentrees().Contains(io)) { v.setEntreeSpe(v.getListeentrees().IndexOf(io), etat); } } }
public void DeleteOustruct(Outils outil, ClasseEntree t) { for (int i = Sorties.Count - 1; i >= 0; i--) { if (Sorties[i].getOutils().Equals(outil)) { if (Sorties[i].GetEntree().Equals(t)) { Sorties.Remove(Sorties[i]); } } } }
public void RecupEntré(IN outils) { foreach (OutStruct outs in outils.getListesorties()[0].get_OutStruct()) { this.nb_entrees++; ClasseEntree entree = outs.GetEntree(); entree.setDispo(Disposition.left); entree.setRelated(false); outs.getOutils().end = true; this.liste_entrees.Add(entree);//on ajoute l'entrée //creation de la liste pour la sauvegarde aprés réutilisation this.Entrée.Add(new Point(outs.getOutils().id, outs.getOutils().getListeentrees().IndexOf(outs.GetEntree()))); ((Grid)(entree.Parent)).Children.Remove(entree); } }
public void SupprimerEntree(ClasseEntree classeEntree) { this.nb_entrees--; this.liste_entrees.Remove(classeEntree); }
public void AjoutEntreeSpe(ClasseEntree entree, int i) { this.liste_entrees.Insert(i, entree); this.nb_entrees++; }
public void AjoutEntree(ClasseEntree entree) { this.liste_entrees.Add(entree); this.nb_entrees++; }
public OutStruct(ClasseEntree entree, Outils outils) { this.entree = entree; this.outils = outils; }