[Nauty-list] How to compile with geng.c?

Brendan McKay bdm at cs.anu.edu.au
Sun Mar 25 12:35:21 EST 2007


Hi, I'm appending a sample program that should answer your questions.

Cheers, Brendan.
* Anjie [Eric] Guo <guo_anjie at hotmail.com> [070325 03:41]:
> When I am trying to compile my main.c with geng.c, how do I know what
> other nauty files should be in my compile command as well?
>  
> Where and how should I define GENG_MAIN so that I can call the
> main(int argc, char *argv[]) in geng.c as a function from my main.c?
> 
> Sincerely,
> Eric Guo

======================================================================

/* This is a sample of how to call geng as a procedure rather than
 * running it as a separate process.  The basic idea is to construct
 * an argument list for geng's main() function.  At compile time,
 * assign a name to the macros OUTPROC and GENG_MAIN.  A typical
 * Unix-style compilation command would be:
     gcc -o callgeng -O3 -DMAXN=32 -DOUTPROC=gengout -DGENG_MAIN=gengmain \
       callgeng.c geng.c gtools.o nauty1.o nautil1.o naugraph1.o 
 */

#include "gtools.h"

static unsigned long counter;

void
OUTPROC(FILE *outfile, graph *g, int n)
{
 /* This will be called for each graph. */

    ++counter;
}


int
main(int argc, char *argv[])
{
    int geng_argc;
    char *geng_argv[6];

  /* Set up geng argument list.  The 0-th argument is the command name.
   * There must be a NULL at the end.  This example is for connected
   * bipartite graphs of order 10 and maximum degree at most 4. */

    geng_argv[0] = "geng";
    geng_argv[1] = "-q";
    geng_argv[2] = "-cb";
    geng_argv[3] = "-D4";
    geng_argv[4] = "10";
    geng_argv[5] = NULL;
    geng_argc = 5;

    counter = 0;
    GENG_MAIN(geng_argc,geng_argv);

    printf("Number of graphs = %lu.\n",counter);

    return 0;
}




More information about the Nauty mailing list