/*****************************************************************************
* This is the main header file for gtools . nauty version @ PACKAGE_VERSION @
* Subject to the copyright notice in nauty . h . *
* @ configure_input @
*****************************************************************************/
/* 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 @header_errno_h@ /* <errno.h> exists */
#define HAVE_PERROR @have_perror@ /* perror() exists */
#define HAVE_PIPE @have_pipe@ /* pipe() exists */
#define HAVE_WAIT @have_wait@ /* wait() exists */
#define HAVE_WAIT_H @header_sys_wait_h@ /* <sys/wait.h> exists */
#define HAVE_POPEN @have_popen@ /* popen() and pclose() exist */
#define POPEN_DEC @popen_dec@ /* popen() is declared */
#define FTELL_DEC @ftell_dec@ /* ftell() is declared */
#define FDOPEN_DEC @fdopen_dec@ /* fdopen() is declared */
#define SORTPROG "@sort_prog@" /* name of sort program */
#define SORT_NEWKEY @sort_newparams_ok@ /* if -k is supported */
#define HAVE_PID_T @have_pid_t@ /* pid_t is defined */
#define PUTENV_DEC @putenv_dec@ /* putenv() is declared */
#define SETENV_DEC @setenv_dec@ /* setenv() is declared */
#define HAVE_PUTENV @have_putenv@ /* putenv() exists */
#define HAVE_SETENV @have_setenv@ /* setenv() exists */
#define HAVE_FORK @have_fork@ /* fork() exists */
#define HAVE_SIGNAL_H @header_signal_h@ /* <signal.h> exists */
#define HAVE_FSEEKO @have_fseeko@ /* fseeko() and ftello() exist */
#define HAVE_SIGACTION @have_sigaction@ /* sigaction() exists */
#define HAVE_SIGPROCMASK @have_sigprocmask@ /* sigprocmask() exists */
#define ALLOW_INTERRUPT @allow_interrupt@ /* no --disable-interrupt */
#define HAVE_GUNZIP @have_gunzip@ /* gunzip program is available */
/* @edit_msg@ */
/*==================================================================*/
#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 2140000000 L
#define NOLIMIT (MAXARG+31 L)
#if SIZEOF_LONG == 8
#define MAXLONGARG 9220000000000000000 L
#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)
/************************************************************************/
/* @edit_msg@ */
#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
/* @edit_msg@ */
#endif /* _GTOOLS_H_ */
Messung V0.5 in Prozent C=89 H=87 G=87
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-09-04)
¤
*© Formatika GbR, Deutschland