aboutsummaryrefslogtreecommitdiff
path: root/engines/glk/alan3/state_stack.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/glk/alan3/state_stack.cpp')
-rw-r--r--engines/glk/alan3/state_stack.cpp90
1 files changed, 44 insertions, 46 deletions
diff --git a/engines/glk/alan3/state_stack.cpp b/engines/glk/alan3/state_stack.cpp
index 38e8bb66ec..fa5f9c683e 100644
--- a/engines/glk/alan3/state_stack.cpp
+++ b/engines/glk/alan3/state_stack.cpp
@@ -37,45 +37,44 @@ struct StateStackStructure {
void **states;
char **commands;
int stackSize;
- int stackPointer; /* Points above used stack, 0 initially */
- int elementSize; /* Size of elements in the stack */
+ int stackPointer; /* Points above used stack, 0 initially */
+ int elementSize; /* Size of elements in the stack */
};
/*----------------------------------------------------------------------*/
-static void *reallocate(void *from, int newSize)
-{
- void *newArea = realloc(from, newSize*sizeof(void*));
- if (newArea == NULL)
- syserr("Out of memory in 'reallocateStack()'");
- return newArea;
+static void *reallocate(void *from, int newSize) {
+ void *newArea = realloc(from, newSize * sizeof(void *));
+ if (newArea == NULL)
+ syserr("Out of memory in 'reallocateStack()'");
+ return newArea;
}
/*======================================================================*/
StateStackP createStateStack(int elementSize) {
- StateStackP stack = NEW(StateStackStructure);
- stack->stackSize = 0;
- stack->stackPointer = 0;
- stack->elementSize = elementSize;
- return stack;
+ StateStackP stack = NEW(StateStackStructure);
+ stack->stackSize = 0;
+ stack->stackPointer = 0;
+ stack->elementSize = elementSize;
+ return stack;
}
/*======================================================================*/
void deleteStateStack(StateStackP stateStack) {
- if (stateStack != NULL) {
- while (stateStack->stackPointer > 0) {
- stateStack->stackPointer--;
- deallocateGameState((GameState *)stateStack->states[stateStack->stackPointer]);
- deallocate(stateStack->states[stateStack->stackPointer]);
- deallocate(stateStack->commands[stateStack->stackPointer]);
- }
- if (stateStack->stackSize > 0) {
- deallocate(stateStack->states);
- deallocate(stateStack->commands);
- }
- deallocate(stateStack);
- }
+ if (stateStack != NULL) {
+ while (stateStack->stackPointer > 0) {
+ stateStack->stackPointer--;
+ deallocateGameState((GameState *)stateStack->states[stateStack->stackPointer]);
+ deallocate(stateStack->states[stateStack->stackPointer]);
+ deallocate(stateStack->commands[stateStack->stackPointer]);
+ }
+ if (stateStack->stackSize > 0) {
+ deallocate(stateStack->states);
+ deallocate(stateStack->commands);
+ }
+ deallocate(stateStack);
+ }
}
@@ -86,13 +85,12 @@ bool stateStackIsEmpty(StateStackP stateStack) {
/*----------------------------------------------------------------------*/
-static void ensureSpaceForGameState(StateStackP stack)
-{
- if (stack->stackPointer == stack->stackSize) {
- stack->states = (void **)reallocate(stack->states, stack->stackSize+EXTENT);
- stack->commands = (char **)reallocate(stack->commands, stack->stackSize+EXTENT);
- stack->stackSize += EXTENT;
- }
+static void ensureSpaceForGameState(StateStackP stack) {
+ if (stack->stackPointer == stack->stackSize) {
+ stack->states = (void **)reallocate(stack->states, stack->stackSize + EXTENT);
+ stack->commands = (char **)reallocate(stack->commands, stack->stackSize + EXTENT);
+ stack->stackSize += EXTENT;
+ }
}
@@ -100,28 +98,28 @@ static void ensureSpaceForGameState(StateStackP stack)
void pushGameState(StateStackP stateStack, void *gameState) {
void *element = allocate(stateStack->elementSize);
memcpy(element, gameState, stateStack->elementSize);
- ensureSpaceForGameState(stateStack);
- stateStack->commands[stateStack->stackPointer] = NULL;
- stateStack->states[stateStack->stackPointer++] = element;
+ ensureSpaceForGameState(stateStack);
+ stateStack->commands[stateStack->stackPointer] = NULL;
+ stateStack->states[stateStack->stackPointer++] = element;
}
/*======================================================================*/
void attachPlayerCommandsToLastState(StateStackP stateStack, char *playerCommands) {
- stateStack->commands[stateStack->stackPointer-1] = strdup(playerCommands);
+ stateStack->commands[stateStack->stackPointer - 1] = strdup(playerCommands);
}
/*======================================================================*/
-void popGameState(StateStackP stateStack, void *gameState, char** playerCommand) {
- if (stateStack->stackPointer == 0)
- syserr("Popping GameState from empty stack");
- else {
- stateStack->stackPointer--;
- memcpy(gameState, stateStack->states[stateStack->stackPointer], stateStack->elementSize);
- deallocate(stateStack->states[stateStack->stackPointer]);
- *playerCommand = stateStack->commands[stateStack->stackPointer];
- }
+void popGameState(StateStackP stateStack, void *gameState, char **playerCommand) {
+ if (stateStack->stackPointer == 0)
+ syserr("Popping GameState from empty stack");
+ else {
+ stateStack->stackPointer--;
+ memcpy(gameState, stateStack->states[stateStack->stackPointer], stateStack->elementSize);
+ deallocate(stateStack->states[stateStack->stackPointer]);
+ *playerCommand = stateStack->commands[stateStack->stackPointer];
+ }
}
} // End of namespace Alan3