コード例 #1
0
ファイル: fake.cpp プロジェクト: Gurthas/fakescript
int parsearg(fake * fk, int & argc, const char ** & argv)
{
	g_selfname = argv[0];

	// start compile,memcmp无解只能用这种
	if (g_replacebuff[0] != 's' ||
		g_replacebuff[1] != 't' ||
		g_replacebuff[2] != 'a' ||
		g_replacebuff[3] != 'r' ||
		g_replacebuff[4] != 't' ||
		g_replacebuff[5] != ' ' ||
		g_replacebuff[6] != 'c' ||
		g_replacebuff[7] != 'o' ||
		g_replacebuff[8] != 'm' ||
		g_replacebuff[9] != 'p' ||
		g_replacebuff[10] != 'i' ||
		g_replacebuff[11] != 'l' ||
		g_replacebuff[12] != 'e')
	{
		g_iscompiled = true;
	}
	else if (argc < 2)
	{
		printf("try -h for help\n");
		return -1;
	}

	if (argc >= 2 && argv[1][0] == '-')
	{
		if (strstr(argv[1], "h"))
		{
			printf("\
fakescript\n\narg : [-hjpgtsl] file [arg]\n\
-h help\n\
-j open jit\n\
-p open profile\n\
-g open google profile\n\
-t open test mode\n\
-s save func to fake.bin\n\
-l load func from file\n\
-o print return value and time\n\
-c compile script to out.exe\n\
-d debug step mod\n\
sample:./fake a.fk\n\n");
			return -1;
		}

		if (strstr(argv[1], "j"))
		{
			fkopenjit(fk);
			g_isopenjit = true;
		}

		if (strstr(argv[1], "p"))
		{
			fkopenprofile(fk);
			g_isopenprofile = true;
		}

#ifndef WIN32
		if (strstr(argv[1], "g"))
		{
			g_isopengoogleprofile = true;
		}
#endif

		if (strstr(argv[1], "t"))
		{
			g_testnum = 9000000;
		}

		if (strstr(argv[1], "s"))
		{
			g_issave = true;
		}

		if (strstr(argv[1], "l"))
		{
			g_isload = true;
		}

		if (strstr(argv[1], "o"))
		{
			g_isprintoutput = true;
		}

		if (strstr(argv[1], "c"))
		{
			printf("%s\n", g_replacebuff);
			g_iscompile = true;
		}

		if (strstr(argv[1], "d"))
		{
			g_isstep = true;
		}

		argc--;
		argv++;
	}
コード例 #2
0
ファイル: fake.cpp プロジェクト: zhangf911/fakescript
int main(int argc, const char *argv[])
{
    // ½âÎö²ÎÊý
    if (argc < 2)
    {
        printf("arg : [-hjp] file [arg]\n");
        return 0;
    }

    fake * fk = newfake();
    bool isopenprofile = false;
    bool isopenjit = false;
    if (argv[1][0] == '-')
    {
        if (strstr(argv[1], "h"))
        {
            printf("fakescript\n\narg : [-hjp] file [arg]\n-h help\n-j open jit\n-p open profile\n\nsample:./fake -jp a.fk\n\n");
            return 0;
        }

        if (strstr(argv[1], "j"))
        {
            fkopenjit(fk);
            isopenjit = true;
        }

        if (strstr(argv[1], "p"))
        {
            fkopenprofile(fk);
            isopenprofile = true;
        }
        argc--;
        argv++;
    }

    fksetargv(fk, argc - 2, argv + 2);
    fkopenalllib(fk);
    fkseterrorfunc(fk, error_log);
    fkparse(fk, argv[1]);
    if (fkerror(fk))
    {
        return 0;
    }

    if (!isopenjit)
    {
        fkrun<int>(fk, "main");
    }
    else
    {
        fkrunjit<int>(fk, "main");
    }
    if (fkerror(fk))
    {
        return 0;
    }

    if (isopenprofile)
    {
        printf("call profile:\n%s", fkdumpprofile(fk));
    }

    delfake(fk);

    return 0;
}