void CBotVar::SetVal(CBotVar* var) { switch (var->GetType()) { case CBotTypBoolean: SetValInt(var->GetValInt()); break; case CBotTypInt: SetValInt(var->GetValInt(), (static_cast<CBotVarInt*>(var))->m_defnum); break; case CBotTypFloat: SetValFloat(var->GetValFloat()); break; case CBotTypString: SetValString(var->GetValString()); break; case CBotTypPointer: case CBotTypNullPointer: case CBotTypArrayPointer: SetPointer(var->GetPointer()); break; case CBotTypClass: { delete (static_cast<CBotVarClass*>(this))->m_pVar; (static_cast<CBotVarClass*>(this))->m_pVar = nullptr; Copy(var, false); } break; default: assert(0); } m_binit = var->m_binit; // copie l'état nan s'il y a }
char Options_ParseCmdLine(struct Options *Options, int argc, char **argv) { int i; char *Argument; for (i = 1; i < argc; i++) { Argument = argv[i]; if (StringStart(Argument, "-a") == 0) { if (SetVal(Argument + 2, &(Options->Show_Addresses), "show addresses", 0, 1) == 0) return 0; } else if (StringStart(Argument, "-o") == 0) { if (SetVal(Argument + 2, &(Options->Show_Opcodes), "show opcodes", 0, 1) == 0) return 0; } else if (StringStart(Argument, "-c") == 0) { if (SetVal(Argument + 2, &(Options->Show_Comments), "show comments", 0, 1) == 0) return 0; } else if (StringStart(Argument, "-q") == 0) { if (SetVal(Argument + 2, &(Options->Show_Cycles), "show cycles", 0, 1) == 0) return 0; } else if (StringStart(Argument, "-p") == 0) { if (SetVal(Argument + 2, &(Options->Show_PseudoCode), "show pseudocode", 0, 1) == 0) return 0; } else if (StringStart(Argument, "-s") == 0) { if (SetVal(Argument + 2, &(Options->CodeStyle), "codestyle", 0, 2) == 0) return 0; } else if (StringStart(Argument, "-l") == 0) { if (SetVal(Argument + 2, &(Options->Process_Labels), "process labels", 0, 1) == 0) return 0; } else if (StringStart(Argument, "-m") == 0) { if (SetMCU(Argument + 2, Options->MCU) == 0) return 0; } else if (StringStart(Argument, "-t") == 0) { strncpy(Options->Tagfile, Argument + 2, 256); } else if (StringStart(Argument, "-f") == 0) { if (SetValInt(Argument + 2, &(Options->FlashSize), "flash size", 32, 1024 * 1024) == 0) return 0; } else if (StringStart(Argument, "--help") == 0) { Show_Help(argv[0]); return 0; } else if (StringStart(Argument, "-h") == 0) { Show_Help(argv[0]); return 0; } else { if (Options->Filename[0] != 0) { fprintf(stderr, "Filename '%s' was already supplied!\n", Options->Filename); return 0; } strncpy(Options->Filename, Argument, 255); } } if (Options->Filename[0] == 0) { fprintf(stderr, "Error: No filename supplied.\n"); return 0; } if (Options->Tagfile[0] != 0) { if (!Read_Tagfile(Options->Tagfile)) return 0; } return 1; }
void CBotVarBoolean::XOr(CBotVar* left, CBotVar* right) { SetValInt(left->GetValInt() ^ right->GetValInt()); }
void CBotVarBoolean::Not() { SetValInt(!GetValInt()); }
void CBotVarBoolean::And(CBotVar* left, CBotVar* right) { SetValInt(left->GetValInt() && right->GetValInt()); }