SLUDGE: Move fastarray functions to struct Variable

This commit is contained in:
Simei Yin 2018-05-31 22:38:26 +02:00
parent 746fb3819f
commit 399ff4788c
3 changed files with 18 additions and 16 deletions

View file

@ -2329,7 +2329,7 @@ builtIn(makeFastArray) {
UNUSEDALL
switch (fun->stack->thisVar.varType) {
case SVT_STACK: {
bool success = makeFastArrayFromStack(fun->reg, fun->stack->thisVar.varData.theStack);
bool success = fun->reg.makeFastArrayFromStack(fun->stack->thisVar.varData.theStack);
trimStack(fun->stack);
return success ? BR_CONTINUE : BR_ERROR;
}
@ -2338,7 +2338,7 @@ builtIn(makeFastArray) {
case SVT_INT: {
int i = fun->stack->thisVar.varData.intValue;
trimStack(fun->stack);
return makeFastArraySize(fun->reg, i) ? BR_CONTINUE : BR_ERROR;
return fun->reg.makeFastArraySize(i) ? BR_CONTINUE : BR_ERROR;
}
break;

View file

@ -386,25 +386,25 @@ Variable *fastArrayGetByIndex(FastArrayHandler *vS, uint theIndex) {
return &vS->fastVariables[theIndex];
}
bool makeFastArraySize(Variable &to, int size) {
bool Variable::makeFastArraySize(int size) {
if (size < 0)
return fatal("Can't create a fast array with a negative number of elements!");
to.unlinkVar();
to.varType = SVT_FASTARRAY;
to.varData.fastArray = new FastArrayHandler;
if (!checkNew(to.varData.fastArray))
unlinkVar();
varType = SVT_FASTARRAY;
varData.fastArray = new FastArrayHandler;
if (!checkNew(varData.fastArray))
return false;
to.varData.fastArray->fastVariables = new Variable[size];
if (!checkNew(to.varData.fastArray->fastVariables))
varData.fastArray->fastVariables = new Variable[size];
if (!checkNew(varData.fastArray->fastVariables))
return false;
to.varData.fastArray->size = size;
to.varData.fastArray->timesUsed = 1;
varData.fastArray->size = size;
varData.fastArray->timesUsed = 1;
return true;
}
bool makeFastArrayFromStack(Variable &to, const StackHandler *stacky) {
bool Variable::makeFastArrayFromStack(const StackHandler *stacky) {
int size = stackSize(stacky);
if (!makeFastArraySize(to, size))
if (!makeFastArraySize(size))
return false;
// Now let's fill up the new array
@ -412,7 +412,7 @@ bool makeFastArrayFromStack(Variable &to, const StackHandler *stacky) {
VariableStack *allV = stacky->first;
size = 0;
while (allV) {
to.varData.fastArray->fastVariables[size].copyMain(allV->thisVar);
varData.fastArray->fastVariables[size].copyMain(allV->thisVar);
size++;
allV = allV->next;
}

View file

@ -97,6 +97,10 @@ struct Variable {
void makeCostumeVariable(Persona *i);
struct Persona *getCostumeFromVar();
// Fast array variable
bool makeFastArrayFromStack(const StackHandler *stacky);
bool makeFastArraySize(int size);
// Add variables
void addVariablesInSecond(const Variable &other);
void compareVariablesInSecond(const Variable &other);
@ -127,8 +131,6 @@ bool stackSetByIndex(VariableStack *, uint, const Variable &);
Variable *stackGetByIndex(VariableStack *, uint);
bool getSavedGamesStack(StackHandler *sH, const Common::String &ext);
bool makeFastArrayFromStack(Variable &to, const StackHandler *stacky);
bool makeFastArraySize(Variable &to, int size);
Variable *fastArrayGetByIndex(FastArrayHandler *vS, uint theIndex);
// load & save