void FParser::OPdecrement(svalue_t &result, int start, int n, int stop) { if(start == n) // ++n { DFsVariable *var; var = Script->FindVariable(Tokens[stop]); if(!var) { script_error("unknown variable '%s'\n", Tokens[stop]); } var->GetValue(result); // haleyjd if(var->type != svt_fixed) { result.value.i = intvalue(result) - 1; result.type = svt_int; var->SetValue (result); } else { result.setDouble(floatvalue(result)-1); result.type = svt_fixed; var->SetValue (result); } } else if(stop == n) // n++ { svalue_t newvalue; DFsVariable *var; var = Script->FindVariable(Tokens[start]); if(!var) { script_error("unknown variable '%s'\n", Tokens[start]); } var->GetValue(result); // haleyjd if(var->type != svt_fixed) { newvalue.type = svt_int; newvalue.value.i = intvalue(result) - 1; var->SetValue (newvalue); } else { newvalue.setDouble(floatvalue(result)-1); var->SetValue (newvalue); } } else { script_error("incorrect arguments to ++ operator\n"); } }
void FParser::SimpleEvaluate(svalue_t &returnvar, int n) { DFsVariable *var; switch(TokenType[n]) { case string_: returnvar.type = svt_string; returnvar.string = Tokens[n]; break; case number: if(strchr(Tokens[n], '.')) { returnvar.type = svt_fixed; returnvar.value.f = (fixed_t)(atof(Tokens[n]) * FRACUNIT); } else { returnvar.type = svt_int; returnvar.value.i = atoi(Tokens[n]); } break; case name_: var = Script->FindVariable(Tokens[n]); if(!var) { script_error("unknown variable '%s'\n", Tokens[n]); } else var->GetValue(returnvar); default: break; } }