diff options
Diffstat (limited to 'engines/glk/alan3/state_stack.cpp')
-rw-r--r-- | engines/glk/alan3/state_stack.cpp | 90 |
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 |