/* stateNode.h */
/* BITTE MIT IHREM NAMEN ERSETZEN */

#ifndef STATENODE_H
#define STATENODE_H


/*
 * Struktur eines Zustandsknoten.
 */
typedef struct _StateNode {
  // ...
} StateNode;


typedef enum _boolean {FALSE, TRUE} boolean;



/*
 * Kreiere ein Objekt vom Typ StateNode auf dem Heap mit Namen name (ebenfalls
 * auf dem Heap), anfaenglich ohne Verknuepfung zu andern Knoten (= kein Array).
 * Rueckgabewert NULL, false Objekt nicht vollstaendig kreiert werden konnte.
 */
StateNode *createStateNode(char *name);



/*
 * Stelle Namen des StateNode sn am stdout dar.
 */
void printStateNodeName(StateNode *sn);



/*
 * Verknuepfe den StateNode source mit dem StateNode dest. Alloziere noetiges
 * Memory auf dem Heap.
 * Rueckgabewert FALSE, falls Allokation nicht erfolgreich war, sonst TRUE.
 */
boolean connectStateNode(StateNode *dest, StateNode *source);



/*
 * Stelle textliche Repraesentation des StateNode sn am stdout dar.
 */
void printStateNode(StateNode *sn);



/*
 * Loese die Verknuepfung vom StateNode source zum StateNode dest. Gib alloziertes
 * Memory zurueck.
 * Rueckgabewert FALSE, falls Enfernen der Knotenverbindung nicht erfolgreich war,
 * sonst TRUE.
 */
boolean disconnectStateNode(StateNode *dest, StateNode *source);



/*
 * Dealloziere StateNode sn vom Heap.
 */
void deleteStateNode(StateNode *sn);

#endif
