correct writing entry/exit actions

This commit is contained in:
Alexey Fedoseev
2024-04-13 22:27:28 +03:00
parent eee047577a
commit 745362ec7c

View File

@@ -3217,10 +3217,16 @@ static int cyberiada_write_action_text(xmlTextWriterPtr writer, CyberiadaAction*
while (action) {
if (*(action->trigger) || *(action->behavior) || *(action->guard)) {
if (*(action->trigger)) {
if (action->type != cybActionTransition || *(action->trigger) || *(action->behavior) || *(action->guard)) {
if (action->type != cybActionTransition) {
snprintf(buffer, buffer_len, "%s/", action->trigger);
if (action->type == cybActionEntry) {
snprintf(buffer, buffer_len, "entry/");
} else if (action->type == cybActionExit) {
snprintf(buffer, buffer_len, "exit/");
} else {
ERROR("Bad action type %d", action->type);
return CYBERIADA_ASSERT;
}
} else {
if (*(action->guard)) {
snprintf(buffer, buffer_len, "%s [%s]/", action->trigger, action->guard);
@@ -3231,14 +3237,6 @@ static int cyberiada_write_action_text(xmlTextWriterPtr writer, CyberiadaAction*
XML_WRITE_TEXT(writer, buffer);
if (action->next || *(action->behavior)) {
XML_WRITE_TEXT(writer, "\n");
}
} else {
if (*(action->behavior)) {
XML_WRITE_TEXT(writer, "/\n");
} else if (action->next) {
XML_WRITE_TEXT(writer, "\n");
}
}
if (*(action->behavior)) {
XML_WRITE_TEXT(writer, action->behavior);
@@ -3249,6 +3247,7 @@ static int cyberiada_write_action_text(xmlTextWriterPtr writer, CyberiadaAction*
XML_WRITE_TEXT(writer, "\n");
}
}
}
action = action->next;
}