Mercurial > repos > rhope
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; +} +