diff visuality_cmd.c @ 0:76568becd6d6

Rhope Alpha 2a source import
author Mike Pavone <pavone@retrodev.com>
date Tue, 28 Apr 2009 23:06:07 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/visuality_cmd.c	Tue Apr 28 23:06:07 2009 +0000
@@ -0,0 +1,116 @@
+
+#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;
+}
+