Example #1
0
static int cmd_ro(int argc, char** argv)
{
    int err = 0;
    unsigned long n,o;

    err = s2ul(argv[0],&n);
    if(err) goto ret;

    err = s2ul(argv[1],&o);
    if(err) goto ret;

    g_p = ggen_generate_random_orders(rng,n,o);
    if(g_p == NULL)
        err = 1;
ret:
    return err;
}
Example #2
0
static int cmd_gnm(int argc, char** argv)
{
    int err = 0;
    unsigned long n,m;

    err = s2ul(argv[0],&n);
    if(err) goto ret;

    err = s2ul(argv[1],&m);
    if(err) goto ret;

    g_p = ggen_generate_erdos_gnm(rng,n,m);
    if(g_p == NULL)
        err = 1;
ret:
    return err;
}
Example #3
0
static int cmd_fifo(int argc, char** argv)
{
    int err = 0;
    unsigned long n,i,o;

    err = s2ul(argv[0],&n);
    if(err) goto ret;

    err = s2ul(argv[1],&o);
    if(err) goto ret;

    err = s2ul(argv[2],&i);
    if(err) goto ret;

    g_p = ggen_generate_fifo(rng,n,o,i);
    if(g_p == NULL)
        err = 1;
ret:
    return err;
}
Example #4
0
static int cmd_poisson2d(int argc, char** argv)
{
	int err = 0;
	unsigned long n,iter;

	err = s2ul(argv[0],&n);
	if(err) goto ret;

	err = s2ul(argv[1],&iter);
	if(err) goto ret;

	g_p = ggen_generate_poisson2d(n, iter);
	if(g_p == NULL)
	{
		error("ggen error: %s\n",ggen_error_strerror());
		err = 1;
	}
ret:
	return err;
}
Example #5
0
static int cmd_forkjoin(int argc, char** argv)
{
	int err = 0;
	unsigned long phases,diameter;

	err = s2ul(argv[0],&phases);
	if(err) goto ret;

	err = s2ul(argv[1],&diameter);
	if(err) goto ret;

	g_p = ggen_generate_forkjoin(phases, diameter);
	if(g_p == NULL)
	{
		error("ggen error: %s\n",ggen_error_strerror());
		err = 1;
	}
ret:
	return err;
}
Example #6
0
static int cmd_fibonacci(int argc, char** argv)
{
	int err = 0;
	unsigned long n,cutoff;

	err = s2ul(argv[0],&n);
	if(err) goto ret;

	err = s2ul(argv[1],&cutoff);
	if(err) goto ret;

	g_p = ggen_generate_fibonacci(n, cutoff);
	if(g_p == NULL)
	{
		error("ggen error: %s\n",ggen_error_strerror());
		err = 1;
	}
ret:
	return err;
}
Example #7
0
static int cmd_lbl(int argc, char** argv)
{
    int err = 0;
    unsigned long n,l;
    double p;

    err = s2ul(argv[0],&n);
    if(err) goto ret;

    err = s2ul(argv[1],&l);
    if(err) goto ret;

    err = s2d(argv[2],&p);
    if(err) goto ret;

    g_p = ggen_generate_erdos_lbl(rng,n,p,l);
    if(g_p == NULL)
        err = 1;
ret:
    return err;
}
Example #8
0
static int cmd_strassen(int argc, char** argv)
{
	int err = 0;
	unsigned long size, depth, cutoff;

	err = s2ul(argv[0],&size);
	if(err) goto ret;

	err = s2ul(argv[1],&depth);
	if(err) goto ret;

	err = s2ul(argv[2],&cutoff);
	if(err) goto ret;

	g_p = ggen_generate_strassen(size, depth, cutoff);
	if(g_p == NULL)
	{
		error("ggen error: %s\n",ggen_error_strerror());
		err = 1;
	}
ret:
	return err;
}
Example #9
0
static int cmd_sparselu(int argc, char** argv)
{
	int err = 0;
	unsigned long size;

	err = s2ul(argv[0],&size);
	if(err) goto ret;

	g_p = ggen_generate_sparselu(size);
	if(g_p == NULL)
	{
		error("ggen error: %s\n",ggen_error_strerror());
		err = 1;
	}
ret:
	return err;
}
Example #10
0
static int cmd_cholesky(int argc, char** argv)
{
	int err = 0;
	unsigned long n;

	err = s2ul(argv[0],&n);
	if(err) goto ret;

	g_p = ggen_generate_cholesky(n);
	if(g_p == NULL)
	{
		error("ggen error: %s\n",ggen_error_strerror());
		err = 1;
	}
ret:
	return err;
}
Example #11
0
static int cmd_gnp(int argc, char** argv)
{
    int err = 0;
    unsigned long number;
    double prob;

    err = s2ul(argv[0],&number);
    if(err) goto ret;

    err = s2d(argv[1],&prob);
    if(err) goto ret;

    g_p = ggen_generate_erdos_gnp(rng,number,prob);
    if(g_p == NULL)
        err = 1;
ret:
    return err;
}
Example #12
0
int main(int argc,char** argv)
{
	int c;
	int option_index = 0;
	int status = 0;
	// parse options
	while(1)
	{
		c = getopt_long(argc, argv, short_opts,long_options, &option_index);
		if(c == -1)
			break;

		switch(c)
		{
			case 0:
				break;
			case 'r':
				rngfname = optarg;
				break;
			case 'o':
				outfname = optarg;
				break;
			case 'i':
				infname = optarg;
				break;
			case 'n':
				name = optarg;
				break;
			case 'h':
				ask_help = 1;
				break;
			case 'V':
				ask_version =1;
				break;
			case 'f':
				logfname = optarg;
				break;
			case 'l':
				logval = optarg;
				break;
			default:
				fprintf(stderr,"ggen bug: someone forgot how to write a switch\n");
				exit(EXIT_FAILURE);
			case '?':
				fprintf(stderr,"ggen bug: getopt failed miserably\n");
				exit(EXIT_FAILURE);
		}
	}
	// forget the parsed part of argv
	argc -= optind;
	argv = &(argv[optind]);

	if(ask_full_help)
	{
		print_full_help();
		exit(EXIT_SUCCESS);
	}
	if(ask_version)
	{
		print_version();
		exit(EXIT_SUCCESS);
	}
	if(argc == 0)
	{
		print_help(general_help);
		exit(EXIT_FAILURE);
	}
	// initialize logging
	if(logfname != NULL)
	{
		logfile = fopen(logfname,"w");
		if(!logfile)
		{
			fprintf(stderr,"failed to open file %s for logging, using stderr instead\n",logfname);
			logfile = stderr;
			logfname = NULL;
		}
	}
	else
		logfile = stderr;
	status = log_init(logfile,"ggen");
	if(status)
	{
		fprintf(stderr,"error during log initialization\n");
		exit(EXIT_FAILURE);
	}
	// now set level according to options
	unsigned long l;
	if(logval != NULL)
	{
		status = s2ul(logval,&l);
		if(status)
		{
			warning("Cannot convert log level option to int\n");
			l = LOG_NORMAL;
		}
		else if(l < LOG_QUIET || l > LOG_DEBUG)
		{
			warning("Incorrect log level value, must be between %d and %d\n",LOG_QUIET,LOG_DEBUG);
			l = LOG_NORMAL;
		}
	}
	else
		l = LOG_NORMAL;
	log_filter_above((enum log_level)l);
	normal("Logging facility initialized\n");

	// initialize igraph attributes for all commands
	igraph_i_set_attribute_table(&igraph_cattribute_table);

	// find the command to launch
	info("Searching for command %s\n",argv[0]);
	for(int i = 0; i < ARRAY_SIZE(cmd_table); i++)
	{
		struct first_lvl_cmd *c = cmd_table+i;
		if(!strcmp(c->name,argv[0]))
		{
			argc--;
			argv++;
			status = handle_first_lvl(argc,argv,c);
			goto end;
		}
	}
	status = EXIT_FAILURE;
	error("Command not found\n");
end:
	// close logging
	normal("Closing log\n");
	if(logfname)
	{
		fclose(logfile);
	}
	return status;
}