SLUDGE: Move stack variable getter/setter to VariableStack

This commit is contained in:
Simei Yin 2018-05-31 22:48:20 +02:00
parent dc18ec2fd0
commit 9fb57f944d
3 changed files with 10 additions and 8 deletions

View File

@ -351,7 +351,7 @@ bool continueFunction(LoadedFunction *fun) {
Variable *grab =
(fun->stack->thisVar.varType == SVT_FASTARRAY) ?
fun->stack->thisVar.varData.fastArray->fastArrayGetByIndex(ii) :
stackGetByIndex(fun->stack->thisVar.varData.theStack->first, ii);
fun->stack->thisVar.varData.theStack->first->stackGetByIndex(ii);
trimStack(fun->stack);
@ -396,9 +396,7 @@ bool continueFunction(LoadedFunction *fun) {
int ii;
if (!fun->reg.getValueType(ii, SVT_INT))
return false;
if (!stackSetByIndex(
fun->stack->thisVar.varData.theStack->first, ii,
fun->stack->next->thisVar)) {
if (!fun->stack->thisVar.varData.theStack->first->stackSetByIndex(ii, fun->stack->next->thisVar)) {
return false;
}
trimStack(fun->stack);

View File

@ -448,7 +448,8 @@ bool addVarToStackQuick(Variable &va, VariableStack *&thisStack) {
return true;
}
bool stackSetByIndex(VariableStack *vS, uint theIndex, const Variable &va) {
bool VariableStack::stackSetByIndex(uint theIndex, const Variable &va) {
VariableStack *vS = this;
while (theIndex--) {
vS = vS->next;
if (!vS)
@ -457,7 +458,8 @@ bool stackSetByIndex(VariableStack *vS, uint theIndex, const Variable &va) {
return vS->thisVar.copyFrom(va);
}
Variable *stackGetByIndex(VariableStack *vS, uint theIndex) {
Variable *VariableStack::stackGetByIndex(uint theIndex) {
VariableStack *vS = this;
while (theIndex--) {
vS = vS->next;
if (!vS) {

View File

@ -117,6 +117,10 @@ struct Variable {
struct VariableStack {
Variable thisVar;
VariableStack *next;
// Variable getter & setter
bool stackSetByIndex(uint, const Variable &);
Variable *stackGetByIndex(uint);
};
// Stacky stuff
@ -129,8 +133,6 @@ int deleteVarFromStack(const Variable &va, VariableStack *&thisStack,
VariableStack *stackFindLast(VariableStack *hunt);
bool copyStack(const Variable &from, Variable &to);
int stackSize(const StackHandler *me);
bool stackSetByIndex(VariableStack *, uint, const Variable &);
Variable *stackGetByIndex(VariableStack *, uint);
bool getSavedGamesStack(StackHandler *sH, const Common::String &ext);
// load & save