Пример #1
0
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
}
Пример #2
0
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;
}
Пример #3
0
void CBotVarBoolean::XOr(CBotVar* left, CBotVar* right)
{
    SetValInt(left->GetValInt() ^ right->GetValInt());
}
Пример #4
0
void CBotVarBoolean::Not()
{
    SetValInt(!GetValInt());
}
Пример #5
0
void CBotVarBoolean::And(CBotVar* left, CBotVar* right)
{
    SetValInt(left->GetValInt() && right->GetValInt());
}