SLUDGE: Move fastarray functions to struct Variable
This commit is contained in:
parent
746fb3819f
commit
399ff4788c
3 changed files with 18 additions and 16 deletions
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue