view visuality_cmd.c @ 166:1bfc19076f1b

Merge
author Mike Pavone <pavone@retrodev.com>
date Thu, 10 Mar 2011 04:16:38 +0000
parents 76568becd6d6
children
line wrap: on
line source


#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#include "structs.h"
#include "visuality.h"
#include "interp.h"
#include <time.h>
#include "parser.h"
#include "saveload.h"

#ifdef WIN32
#ifdef GUI_LIB
#define WIN32_GUI
#endif
#endif

extern BOOL execute_active;

extern int num_workers;
extern int num_wires;
#ifdef WIN32_GUI
#include "ms_window.h"
HINSTANCE glob_instance;
int glob_cmd_show;
char prog_name[] = "visuality_cmd";
int WINAPI WinMain (HINSTANCE instance_handle, HINSTANCE prev_instance, LPSTR cmd_str, int cmd_show)
{
	int argc = 1;
	char * argv[10];
#else
int main(int argc, char ** argv)
{
#endif //WIN32_GUI
	int i;
	char newfile[512];
	time_t start_time;
	char * offset;
	int min_args = 2;
	int num_threads = -1;
	BOOL save_flag = FALSE;
	program * prog;
#ifdef WIN32_GUI
	argv[0] = prog_name;
	argv[1] = cmd_str;

	for(i = 1; cmd_str[i-1] != '\0' && argc < 10; ++i)
	{
		if(cmd_str[i] == ' ' || cmd_str[i] == '\0')
		{
			cmd_str[i] = '\0';
			++argc;
			if(argc < 10)
				argv[argc] = cmd_str + i+1;
		}
	}
	glob_instance = instance_handle;
	glob_cmd_show = cmd_show;
#endif
	if(argc >= 2)
		if(strcmp(argv[1],"-t") == 0)
			min_args += 2;
		else if(strcmp(argv[1], "-v") == 0)
		{
#ifdef TEXT_FILE_DEBUG
			debugfile = fopen("interp_debug.txt", "w");
#endif
			start_time = time(NULL);
			test_virtual();
			printf("Execution took %d seconds.\n", (time(NULL)-start_time));
			return 0;
		}
	if(argc >= min_args && !strcmp(argv[min_args-1],"-c"))
	{
		min_args+=2;
		save_flag = TRUE;
	}
	
#ifdef TEXT_FILE_DEBUG
	debugfile = fopen("interp_debug.txt", "w");
#endif
	if(argc < min_args)
	{
		min_args = argc;
		prog = load_program("parser.vistxt");
	}
	else
	{
		if(min_args > 2)
			num_threads = atoi(argv[2]);
		//printf("Loading %s\n", argv[min_args-1]);
		DEBUGPUTS("load_program\n");
		if(!strcmp(strrchr(argv[min_args-1],'.')+1, "rhope"))
		{
			--min_args;
			prog = load_program("parser.vistxt");
		}
		else
			prog = load_program(argv[min_args-1]);
	}
	start_time = time(NULL);
	if(save_flag)
	{
		save_program(prog, argv[min_args-2]);
	} 
	/*#ifdef WIN32
		interp_start(num_threads,FALSE, argc-(min_args-1), argv + (min_args-1), prog);
		message_loop();
	#else*/
		interp_start(num_threads,TRUE, argc-(min_args-1), argv + (min_args-1), prog);
	//#endif
	printf("Execution took %d seconds.\n", (time(NULL)-start_time));
	return 0;
}