diff options
| author | Andrew Guschin <guschin.drew@gmail.com> | 2023-08-13 01:27:00 +0400 |
|---|---|---|
| committer | Andrew Guschin <guschin.drew@gmail.com> | 2023-08-13 06:00:02 -0500 |
| commit | 58acff54b1cd64cb23b9d0b1a304eb9db768e3eb (patch) | |
| tree | 87281f776e0015f218aadb5cbfdad43c66406342 /nauty/gtools.h | |
Initial commit
Diffstat (limited to 'nauty/gtools.h')
| -rw-r--r-- | nauty/gtools.h | 326 |
1 files changed, 326 insertions, 0 deletions
diff --git a/nauty/gtools.h b/nauty/gtools.h new file mode 100644 index 0000000..55b64c6 --- /dev/null +++ b/nauty/gtools.h @@ -0,0 +1,326 @@ +/***************************************************************************** +* This is the main header file for gtools. nauty version 2.8.6 +* Subject to the copyright notice in nauty.h. * +* gtools.h. Generated from gtools-h.in by configure. +*****************************************************************************/ + +/* The parts between the ==== lines are modified by configure when +creating gtools.h out of gtools-h.in. If configure is not being +used, it is necessary to check they are correct. +====================================================================*/ + +#ifndef _GTOOLS_H_ /* only process this file once */ +#define _GTOOLS_H_ + +#define HAVE_ERRNO_H 1 /* <errno.h> exists */ +#define HAVE_PERROR 1 /* perror() exists */ +#define HAVE_PIPE 1 /* pipe() exists */ +#define HAVE_WAIT 1 /* wait() exists */ +#define HAVE_WAIT_H 1 /* <sys/wait.h> exists */ +#define HAVE_POPEN 1 /* popen() and pclose() exist */ +#define POPEN_DEC 1 /* popen() is declared */ +#define FTELL_DEC 1 /* ftell() is declared */ +#define FDOPEN_DEC 1 /* fdopen() is declared */ +#define SORTPROG "sort" /* name of sort program */ +#define SORT_NEWKEY 1 /* if -k is supported */ +#define HAVE_PID_T 1 /* pid_t is defined */ +#define PUTENV_DEC 1 /* putenv() is declared */ +#define SETENV_DEC 1 /* setenv() is declared */ +#define HAVE_PUTENV 1 /* putenv() exists */ +#define HAVE_SETENV 1 /* setenv() exists */ +#define HAVE_FORK 1 /* fork() exists */ +#define HAVE_SIGNAL_H 1 /* <signal.h> exists */ +#define HAVE_FSEEKO 1 /* fseeko() and ftello() exist */ +#define HAVE_SIGACTION 1 /* sigaction() exists */ +#define HAVE_SIGPROCMASK 1 /* sigprocmask() exists */ +#define ALLOW_INTERRUPT 1 /* no --disable-interrupt */ +#define HAVE_GUNZIP 1 /* gunzip program is available */ + +/* ++++++ This file is automatically generated, don't edit it by hand! ++++++ */ + +/*==================================================================*/ + +#ifndef MAXN +#define MAXN 0 +#endif + +#define SIZELEN(n) ((n)<=SMALLN?1:((n)<=SMALLISHN?4:8)) + /* length of size code in bytes */ +#define G6BODYLEN(n) \ + (((size_t)(n)/12)*((size_t)(n)-1) + (((size_t)(n)%12)*((size_t)(n)-1)+11)/12) +#define G6LEN(n) (SIZELEN(n) + G6BODYLEN(n)) + /* exact graph6 string length excluding \n\0 + This twisted expression works up to n=227023 in 32-bit arithmetic + and for larger n if size_t has 64 bits. */ +#define D6BODYLEN(n) \ + ((n)*(size_t)((n)/6) + (((n)*(size_t)((n)%6)+5)/6)) +#define D6LEN(n) (1 + SIZELEN(n) + D6BODYLEN(n)) + /* exact digraph6 string length excluding \n\0 + This twisted expression works up to n=160529 in 32-bit arithmetic + and for larger n if size_t has 64 bits. */ + +#include "naututil.h" /* which includes stdio.h */ +#include "nausparse.h" + +#if HAVE_ERRNO_H +#include <errno.h> +#else +extern int errno; +#endif + +#if HAVE_WAIT_H && !defined(AVOID_SYS_WAIT_H) +#include <sys/wait.h> +#endif + +#if HAVE_SIGNAL_H +#include <signal.h> +#endif + +#if HAVE_PERROR +#define ABORT(msg) do {if (errno != 0) perror(msg); exit(1);} while(0) +#else +#define ABORT(msg) do {exit(1);} while(0) +#endif + +/* Here we set environment variables that determine the sorting order + for the shortg program. Older docs for sort say that it uses + LC_COLLATE, but the POSIX description of locales says that the + LC_ALL variable takes precedence over LC_COLLATE. To be safe, + we will define both. Also, define this to be nothing if the + variable KEEP_SORT_LOCALE is defined. */ +#ifdef KEEP_SORT_LOCALE +#define SET_C_COLLATION +#else +#if PUTENV_DEC && HAVE_PUTENV +#define SET_C_COLLATION putenv("LC_ALL=C"); putenv("LC_COLLATE=C") +#elif SETENV_DEC && HAVE_SETENV +#define SET_C_COLLATION setenv("LC_ALL","C",1); setenv("LC_COLLATE","C",1) +#elif HAVE_PUTENV +int putenv(char*); +#define SET_C_COLLATION putenv("LC_ALL=C"); putenv("LC_COLLATE=C") +#elif HAVE_SETENV +int setenv(const char*,const char*,int); +#define SET_C_COLLATION setenv("LC_ALL","C",1); setenv("LC_COLLATE","C",1) +#else +#define SET_C_COLLATION +#endif +#endif + +#if HAVE_FLOCKFILE +#define FLOCKFILE(f) flockfile(f) +#define FUNLOCKFILE(f) funlockfile(f) +#else +#define FLOCKFILE(f) +#define FUNLOCKFILE(f) +#endif + +#if HAS_STDIO_UNLOCK && !defined(NAUTY_IN_MAGMA) && !defined(IS_JAVA) +#define GETC(f) getc_unlocked(f) +#undef PUTC +#define PUTC(c,f) putc_unlocked(c,f) +#else +#define GETC(f) getc(f) +#undef PUTC +#define PUTC(c,f) putc(c,f) +#endif + +#define BIAS6 63 +#define MAXBYTE 126 +#define SMALLN 62 +#define SMALLISHN 258047 +#define TOPBIT6 32 +#define C6MASK 63 + +#define GRAPH6_HEADER ">>graph6<<" +#define SPARSE6_HEADER ">>sparse6<<" +#define DIGRAPH6_HEADER ">>digraph6<<" +#define PLANARCODE_HEADER ">>planar_code<<" +#define PLANARCODELE_HEADER ">>planar_code le<<" +#define PLANARCODEBE_HEADER ">>planar_code be<<" +#define EDGECODE_HEADER ">>edge_code<<" + +#define GRAPH6 1 +#define SPARSE6 2 +#define PLANARCODE 4 +#define PLANARCODELE 8 +#define PLANARCODEBE 16 +#define EDGECODE 32 +#define INCSPARSE6 64 +#define PLANARCODEANY (PLANARCODE|PLANARCODELE|PLANARCODEBE) +#define DIGRAPH6 128 +#define UNKNOWN_TYPE 256 +#define HAS_HEADER 512 + +#define NODIGRAPHSYET(code) if (((code)&DIGRAPH6)) \ + gt_abort(">E Sorry, this program doesn't support digraphs yet.\n") + +#define ARG_OK 0 +#define ARG_MISSING 1 +#define ARG_TOOBIG 2 +#define ARG_ILLEGAL 3 + +#define MAXARG 2140000000L +#define NOLIMIT (MAXARG+31L) +#if SIZEOF_LONG == 8 +#define MAXLONGARG 9220000000000000000L +#else +#define MAXLONGARG MAXARG +#endif + +#define SWBOOLEAN(c,boool) if (sw==c) boool=TRUE; +#define SWCOUNT(c,count) if (sw==c) ++count; +#define SWINT(c,boool,val,id) if (sw==c) \ + {boool=TRUE;arg_int(&arg,&val,id);} +#define SWLONG(c,boool,val,id) if (sw==c) \ + {boool=TRUE;arg_long(&arg,&val,id);} +#define SWRANGE(c,sep,boool,val1,val2,id) if (sw==c) \ + {boool=TRUE;arg_range(&arg,sep,&val1,&val2,id);} +#define SWREAL(c,boool,val,id) if (sw==c) \ + {boool=TRUE;arg_double(&arg,&val,id);} +#define SWREALRANGE(c,sep,boool,val1,val2,id) if (sw==c) \ + {boool=TRUE;arg_doublerange(&arg,sep,&val1,&val2,id);} +#define SWSEQUENCE(c,sep,boool,val,maxvals,numvals,id) if (sw==c) \ + {boool=TRUE;arg_sequence(&arg,sep,val,maxvals,&numvals,id);} +#define SWSEQUENCEMIN(c,sep,boool,val,minvals,maxvals,numvals,id) if (sw==c) \ + {boool=TRUE;arg_sequence_min(&arg,sep,val,minvals,maxvals,&numvals,id);} + +#ifdef HELPUSECMD +#ifdef HELPTEXT2 +#define PUTHELPTEXT printf("\nUsage: %s %s\n\n%s",argv[0],USAGE,HELPTEXT1);\ + printf("%s",HELPTEXT2); +#else +#define PUTHELPTEXT printf("\nUsage: %s %s\n\n%s",argv[0],USAGE,HELPTEXT) +#endif +#else +#ifdef HELPTEXT2 +#define PUTHELPTEXT printf("\nUsage: %s\n\n%s",USAGE,HELPTEXT1);\ + printf("%s",HELPTEXT2); +#else +#define PUTHELPTEXT printf("\nUsage: %s\n\n%s",USAGE,HELPTEXT) +#endif +#endif + +#define HELP if (argc > 1 && (strcmp(argv[1],"-help")==0 \ + || strcmp(argv[1],"/?")==0 \ + || strcmp(argv[1],"--help")==0)) \ + { PUTHELPTEXT; return 0; } + +#define PUTVERSION if (argc > 1 && (strcmp(argv[1],"-version")==0 \ + || strcmp(argv[1],"--version")==0)) \ + { printf("Nauty&Traces version %.4f (%d bits)\n",\ + NAUTYVERSIONID/10000.0,WORDSIZE); return 0; } + +#define GETHELP \ +fprintf(stderr," Use %s -help to see more detailed instructions.\n",argv[0]) + +#define alloc_error gt_abort + +#define CATMSG0(fmt) sprintf(msg+strlen(msg),fmt) +#define CATMSG1(fmt,x1) sprintf(msg+strlen(msg),fmt,x1) +#define CATMSG2(fmt,x1,x2) sprintf(msg+strlen(msg),fmt,x1,x2) +#define CATMSG3(fmt,x1,x2,x3) sprintf(msg+strlen(msg),fmt,x1,x2,x3) +#define CATMSG4(fmt,x1,x2,x3,x4) sprintf(msg+strlen(msg),fmt,x1,x2,x3,x4) +#define CATMSG5(fmt,x1,x2,x3,x4,x5) sprintf(msg+strlen(msg),fmt,x1,x2,x3,x4,x5) +#define CATMSG6(fmt,x1,x2,x3,x4,x5,x6) \ + sprintf(msg+strlen(msg),fmt,x1,x2,x3,x4,x5,x6) +#define CATMSG7(fmt,x1,x2,x3,x4,x5,x6,x7) \ + sprintf(msg+strlen(msg),fmt,x1,x2,x3,x4,x5,x6,x7) +#define CATMSG8(fmt,x1,x2,x3,x4,x5,x6,x7,x8) \ + sprintf(msg+strlen(msg),fmt,x1,x2,x3,x4,x5,x6,x7,x8) +#define CATMSG9(fmt,x1,x2,x3,x4,x5,x6,x7,x8,x9) \ + sprintf(msg+strlen(msg),fmt,x1,x2,x3,x4,x5,x6,x7,x8,x9) + +/************************************************************************/ + +/* ++++++ This file is automatically generated, don't edit it by hand! ++++++ */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern void gtools_check(int,int,int,int); +extern FILE *opengraphfile(char*,int*,boolean,long); +extern void writeline(FILE*,char*); +extern char *gtools_getline(FILE*); /* formerly getline() */ +extern int graphsize(char*); +extern void encodegraphsize(int,char**); +extern void stringcounts(char*,int*,size_t*); +extern void stringtograph(char*,graph*,int); +extern void stringtograph_inc(char*,graph*,int,graph*,int); +extern size_t edgecount(char*); +extern int checkgline(char*); +extern graph *readgg(FILE*,graph*,int,int*,int*,boolean*); +extern graph *readg(FILE*,graph*,int,int*,int*); +extern graph *readgg_inc(FILE*,graph*,int,int*,int*,graph*,int,int,boolean*); +extern graph *readg_inc(FILE*,graph*,int,int*,int*,graph*,int,int); +extern char *ntog6(graph*,int,int); +extern char *ntos6(graph*,int,int); +extern char *ntod6(graph*,int,int); +extern char *sgtos6(sparsegraph*); +extern char *sgtog6(sparsegraph*); +extern char *sgtod6(sparsegraph*); +extern void writeg6(FILE*,graph*,int,int); +extern void writed6(FILE*,graph*,int,int); +extern void writes6(FILE*,graph*,int,int); +extern void writeg6_sg(FILE*,sparsegraph*); +extern void writes6_sg(FILE*,sparsegraph*); +extern void writed6_sg(FILE*,sparsegraph*); +extern char *ntois6(graph*,graph*,int,int); +extern void writeis6(FILE*,graph*,graph*,int,int); +extern void writepc_sg(FILE*,sparsegraph*); +extern void stringtosparsegraph(char*,sparsegraph*,int*); +extern sparsegraph *read_sg(FILE*,sparsegraph*); +extern sparsegraph *read_sg_loops(FILE*,sparsegraph*,int*); +extern sparsegraph *read_sgg_loops(FILE*,sparsegraph*,int*,boolean*); +extern sparsegraph *readpc_sg(FILE*,sparsegraph*); +extern sparsegraph *readpcle_sg(FILE*,sparsegraph*); +extern char *getecline(FILE*); +extern void writelast(FILE*); +extern int longval(char**,long*); +extern void arg_int(char**,int*,char*); +extern void arg_long(char**,long*,char*); +extern void arg_range(char**,char*,long*,long*,char*); +extern int doublevalue(char**,double*); +extern void arg_double(char**,double*,char*); +extern void arg_doublerange(char**,char*,double*,double*,char*); +extern void arg_sequence(char**,char*,long*,int,int*,char*); +extern void arg_sequence_min(char**,char*,long*,int,int,int*,char*); + +extern void writerange(FILE*,int,long,long); +extern void gt_abort(const char*); +extern char *stringcopy(char*); +extern boolean strhaschar(char*,int); + +extern void fcanonise(graph*,int,int,graph*,char*,boolean); +extern void fcanonise_inv + (graph*,int,int,graph*,char*,void(*)(graph*,int*,int*,int, + int,int,int*,int,boolean,int,int),int,int,int,boolean); +extern void fcanonise_inv_sg + (sparsegraph*,int,int,sparsegraph*,char*,void(*)(graph*,int*,int*, + int,int,int,int*,int,boolean,int,int),int,int,int,boolean); +extern void setlabptn(int*,int*,int*,int); +extern int breakcellwt(int*,int*,int*,int,int); + +extern void fgroup(graph*,int,int,char*,int*,int*); +extern void fgroup_inv + (graph*,int,int,char*,int*,int*,void(*)(graph*,int*,int*,int, + int,int,int*,int,boolean,int,int),int,int,int); +extern int istransitive(graph*,int,int,graph*); +extern void tg_canonise(graph*,graph*,int,int); + +extern TLS_ATTR int readg_code; +extern TLS_ATTR char *readg_line; +extern TLS_ATTR size_t ogf_linelen; +extern TLS_ATTR boolean is_pipe; + +#ifdef __cplusplus +} +#endif + +#ifdef CPUDEFS +CPUDEFS +#endif + +/* ++++++ This file is automatically generated, don't edit it by hand! ++++++ */ + +#endif /* _GTOOLS_H_ */ |