Hallo!
Ich möchte einen Zustandsautomaten realisieren, bei dem jeder Zustand
eine unterschiedliche Anzahl ausgehender Transitionen haben kann.
Konkret ist die Frage wie dies (die Transitionen) in C abgebildet werden
können.
Ideal wäre soetwas wie (nur das geht leider nicht):
1 | const TRANSITION_T transitions[NUMBER_OF_STATES][] =
|
2 | {
|
3 | // state 0 transitions
|
4 | {
|
5 | { /* first transition */ },
|
6 | { /* second transition */ },
|
7 | { /* third transition */ }
|
8 | },
|
9 | // state 1 transitions
|
10 | {
|
11 | { /* only one transition */ }
|
12 | },
|
13 | // ...
|
14 |
|
15 | };
|
TRANSITION_T ist ein struct welches alle Infos über eine Transition
speichert. NUMBER_OF_STATES ist die Gesamtanzahl der Zustände.
Die Zustände werden in einem Array gespeichert, das pro Zustand einen
Zeiger auf ein Transition-Array (mit einer unterschiedlicher Anzahl
Elementen) enthält:
1 | const STATE_T states[NUMBER_OF_STATES] =
|
2 | {
|
3 | // state 0
|
4 | {
|
5 | 3u, /* 3 transitions for state 0 */
|
6 | &(transitions[0][0]), /* ptr to array of transitions of state 0 */
|
7 | // ...
|
8 | },
|
9 | // state 1
|
10 | {
|
11 | 1u, /* 1 transition for state 1 */
|
12 | &(transitions[1][0]), /* ptr to array of transitions of state 1 */
|
13 | // ...
|
14 | }
|
15 |
|
16 |
|
17 | };
|
Die Zustände lassen sich wie gezeigt darstellen, die Transitionen aber
nicht... jemand eine Idee ?