
// Listen von Objekten

// liefert eine Liste mit allen ungerichteten Kanten
alledges() := select(allelements(),attribute(#,"edge")=="u");

// liefert eine Liste aller Knoten
allvertices() := select(allelements(), attribute(#,"vertex")=="v");


// Eigenschaften von Kanten

// liefert das Gewicht einer gegebenen Kante 
getweight(edge) := attribute(edge,"weight");

// Liefert eine Liste mit den beiden Endknoten einer (ungerichteten) Kante
incidentvertices(edge) := select(incidences(edge),attribute(#,"vertex")=="v");


//------------------------------------------------------------

// Verschiedene Markierungen an Objekten

// Man kann jedem Cinderella-Objekt (Punkt, Gerade, Knoten, Kante, ...) beliebige Markierungen anfŸgen.
// Dies kšnnen kleine Texte, Zahlen, oder sonstiges sein, was man sich merken will.
// Solche Markierungen funktionieren also wie Variablen, nur dass sie an ein Objekt geheftet sind.

// Zu einer Markierung gehšren immer drei Informationen:
// 1. Das Objekt, an dem sie gehaftet ist.
// 2. Ein Name der Markierung. Dieser muss immer in " " stehen!
// 3. Der Inhalt, was man sich merken will.

// FŸr einige Ÿbliche, oft verwendete Markierungen haben wir schon Funktionen vordefiniert, die uns die Arbeit erleichtern

// Markiert fŸr ein Objekt, zu welcher Zusammenhangskomponente es gehšrt:
setComponent(objekt,komponente):={objekt:"Component"=komponente};

// Sagt uns, zu welcher Zusammenhangskomponente ein Objekt gehšrt
getComponent(objekt):={objekt:"Component"};



// Beliebige Markierungen fŸr Objekte

// Wenn dies nicht reicht, kann man sich mit den folgenden Funktionen noch eigene Markierungen erschaffen. Beachte: name muss in " " stehen!

// Setzen einer Markierung
setMark(objekt,name,wert):={objekt:name=wert};

// Abfragen einer Markierung
getMark(objekt,name):={objekt:name};



