freebsd-ports/graphics/vcg/files/globals.h
1999-08-29 11:32:39 +00:00

422 lines
11 KiB
C

/* SCCS-info %W% %E% */
/*--------------------------------------------------------------------*/
/* */
/* VCG : Visualization of Compiler Graphs */
/* -------------------------------------- */
/* */
/* file: globals.h */
/* version: 1.00.00 */
/* creation: 1.4.1993 */
/* author: I. Lemke (...-Version 0.99.99) */
/* G. Sander (Version 1.00.00-...) */
/* Universitaet des Saarlandes, 66041 Saarbruecken */
/* ESPRIT Project #5399 Compare */
/* description: Global definitions and setup */
/* status: in work */
/* */
/*--------------------------------------------------------------------*/
/* $FreeBSD$ */
/*
* Copyright (C) 1993--1995 by Georg Sander, Iris Lemke, and
* the Compare Consortium
*
* This program and documentation is free software; you can redistribute
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* The software is available per anonymous ftp at ftp.cs.uni-sb.de.
* Contact sander@cs.uni-sb.de for additional information.
*/
/* $Log: globals.h,v $
/* Revision 1.1.1.1 1995/02/19 09:25:43 hsu
/* vcg - a visualization tool for compiler graphs
/*
/* Submitted by: Philippe Charnier <charnier@lirmm.fr>
/*
# Revision 3.7 1994/11/23 14:50:47 sander
# #include <limits.h> added to get MAX_INT and MIN_INT.
#
# Revision 3.6 1994/08/08 16:01:47 sander
# Attributes xraster, xlraster, yraster added.
#
# Revision 3.5 1994/08/02 15:36:12 sander
# CHECKNODE option added to allow tracing of properties
# of one single node. For debugging only.
#
# Revision 3.4 1994/06/07 14:09:59 sander
# Splines implemented.
# HP-UX, Linux, AIX, Sun-Os, IRIX compatibility tested.
# The tool is now ready to be distributed.
#
# Revision 3.3 1994/05/16 08:56:03 sander
# shape attribute (boxes, rhombs, ellipses, triangles) added.
#
# Revision 3.2 1994/03/02 11:48:54 sander
# Layoutalgoritms mindepthslow, maxdepthslow, minindegree, ... mandegree
# added.
# Anchors and nearedges are not anymore allowed to be intermixed.
# Escapes in strings are now allowed.
#
# Revision 3.1 1994/03/01 10:59:55 sander
# Copyright and Gnu Licence message added.
# Problem with "nearedges: no" and "selfloops" solved.
#
# Revision 1.2 1994/01/21 19:43:42 sander
# New started with release 1.2 from the scratch.
# Old and useless comments removed.
#
*
*/
/* This file contains the setup of the tool for the C compiler.
* It is included into every other C file.
* Please adapt corresponding to your configuration.
*/
#ifndef GLOBALS_H
#define GLOBALS_H
/*------------- Please change according to your configuration --------*/
/* Ansi C compiler or K&R C compiler ?
* Mainly, this causes to use prototypes or not. Note that the Suntool
* include files on some systems are Non-Ansi and may cause confusion.
* See the corresponding comments in the Makefile.
* Ansi C compiler set __STDC__, but Non-Ansi compilers may set this, too.
* Thus we use our own flag ANSI_C.
*/
/* #ifdef __STDC__==1
* #define ANSI_C
* #endif
*/
/* #define ANSI_C */
/* #undef ANSI_C */
#define ANSI_C
/* The Gnu CC sometimes does not have a standard library.
* In this case, the include files might be wrong.
* To get fewer messages on -Wall, define NO_STDINCLUDES
* with Gnu CC.
*/
#undef NO_STDINCLUDES
/* User Signals available or not ?
* Unix provides signals SIGUSR1 and SIGUSR2 (30, 31), which are used
* to control animations from external. If signal() or free signals are
* not available (e.g. on Non-Unix systems), then undefine USR_SIGNAL.
*/
#define USR_SIGNAL
/* #undef USR_SIGNAL */
/* Good quicksort available or not ?
* If there exist a good randomized quicksort `qsort' in the library,
* please use it. But if the quicksort in the library is slow, or not
* randomized, define OWN_QUICKSORT. We often have to sort presorted
* arrays.
* Note: If OWN_QUICKSORT is defined, not all calls of `qsort' are
* exchanged, but only the critical ones.
*/
/* #undef OWN_QUICKSORT */
#define OWN_QUICKSORT
/* Window system Sunview or X11 ?
* Sunview is fast, but does not support remote window displaying.
* X11 (R5) is a little bit slower, but supports remote display.
* Do not define both !!!
*/
/* #define SUNVIEW */
/* #undef X11 */
/* #undef SUNVIEW */
/* #define X11 */
#define X11
/* Required alignment for structs (power of 2). IALIGN is the appropriate
* bit mask to generate the alignment. Because we use floats in structs,
* mostly an alignment of 8 is appropriate.
*/
#ifndef ALIGN
/* #define ALIGN 8 */
#define ALIGN 8
#endif
#ifndef IALIGN
#define IALIGN (ALIGN-1)
#endif
/* Memory block size for memory allocation in bytes. The allocation
* mechanism allocates blocks of this size, and dynamically increases
* the number of blocks, if more memory is necessary.
* Do not set the blocksize too small. For instance the tool does not
* work with blockssize less than 1 KB. Propose for good performance:
* 256 KB minimal.
*/
/* Blocks of 1 Megabyte */
/* #define MEMBLOCKSIZE 1048576 */
#define MEMBLOCKSIZE 1048576
/* The default font for X11. Not needed at the Sunview installation.
* Please insert an appropriate font of about 14 to 17 dot size.
*/
#ifdef X11
#define VCG_DEFAULT_FONT "-*-courier-*-*-*--14-*-*-*-*-*-*-*"
#endif
/* Whether the input focus grab is actively or not.
* If NOINPUTFOCUS, the VCG tool does not grab actively the input
* focus. Depending on the window manager, this may cause that
* the keypresses are ignored afterwards, unless the mouse pointer
* is once moved out of the window and back into it.
* On the other side, some installations cause a fatal error or
* strange behaviour, if the VCG tool actively grabs the input
* focus.
* The conservative definement is #define NOINPUTFOCUS.
*/
#ifdef X11
#define NOINPUTFOCUS
#endif
/* Debugging On or Off ?
* We have three kinds of debugging:
* a) Behaviour tracing: a lot of messages nearly on every
* function entry are produced if DEBUG is switched on.
* b) Assertion checking: only if an assertion fails, an
* appropriate message is produced.
* c) Node tracing: This is basically the same as the behaviour
* tracing. At each function entry, the status of a node
* will be printed. This happens if CHECKNODE is defined.
* See step0 for the selection of the node to be traced.
* Behaviour or node tracing is only needed in very serious cases.
* The macros "debuggingmessage" can be redefined to do some special
* tests on every entry.
* Assertion checking can always be done, because it is silent
* as long as no error occurs. But it consumes runtime.
* This all can also be defined in the head of a module before
* #include "globals.h", to debug only this module.
*/
/* for internal debugging */
#undef DEBUG
#undef CHECKNODE
/* for assertion checking at runtime */
#define CHECK_ASSERTIONS
/*
* If you prefer the system assert.h, then define ASSERT_AVAIL.
*/
/* #define ASSERT_AVAIL */
#undef ASSERT_AVAIL
/* Check and printout the timing of phases.
* If CHECK_TIMING is defined, time measurement is done at some
* critical points. This is only for me, to fine tune the
* preformance. (GS)
*/
#undef CHECK_TIMING
/*---------------------------- End of Changes ------------------------*/
/* Maximal and minimal positive integer */
#include <limits.h>
#ifndef MAXINT
#ifdef INT_MAX
#define MAXINT INT_MAX
#else
#define MAXINT 32767
#endif
#endif
#ifndef MININT
#ifdef INT_MIN
#define MININT INT_MIN
#else
#define MININT -32767
#endif
#endif
#ifndef MAXLONG
#ifdef LONG_MAX
#define MAXLONG LONG_MAX
#else
#define MAXLONG 32767
#endif
#endif
#ifndef MINLONG
#ifdef LONG_MIN
#define MINLONG LONG_MIN
#else
#define MINLONG -32767
#endif
#endif
/* Prototype support */
#ifdef ANSI_C
#define _PP(x) x
#else
#define _PP(x) ()
#endif
#ifndef NULL
#define NULL 0
#endif
/* Aix CC and OSF does not understand const's */
#ifdef OSF
#define const
#endif
#ifdef AIXCC
#define const
#endif
/* Default Window system is X11 */
#ifdef SUNVIEW
#ifdef X11
#undef SUNVIEW
#endif
#else
#ifndef X11
#define X11
#endif
#endif
#ifdef X11
#define FAST_X11_DRAWING
#endif
/* Debugging messages */
#ifdef DEBUG
#define debugmessage(a,b) {FPRINTF(stderr,"Debug: %s %s\n",a,b);}
#else
#define debugmessage(a,b) /**/
#endif
#ifdef CHECKNODE
#define DEBUG
#undef debugmessage
#define debugmessage(a,b) { \
FPRINTF(stderr,"Debug: %s %s &",a,b); \
if (debug_checknode) \
FPRINTF(stderr,"Checknode: |%s|\n",NTITLE(debug_checknode)); \
FPRINTF(stderr,"\n"); \
}
#endif
/* Assertions */
#ifndef CHECK_ASSERTIONS
#define NDEBUG
#endif
#ifdef DEBUG
#undef NDEBUG
#endif
#ifdef ASSERT_AVAIL
#include <assert.h>
#else
# ifndef NDEBUG
# define assert(ex) {if (!(ex)) {\
FPRINTF(stderr,"Assertion failed: file \"%s\", line %d\n",\
__FILE__, __LINE__); \
FPRINTF(stderr,"This is a bug! Please contact sander@cs.uni-sb.de !\n");\
exit(1);}}
# else
# define assert(ex)
# endif
# endif
/* To make lint happy */
#define PRINTF (void)printf
#define FPRINTF (void)fprintf
#define SPRINTF (void)sprintf
#define FCLOSE (void)fclose
#define FFLUSH (void)fflush
#define FREE (void)free
/* To make ANSI C compiler with -Wall more happy */
#ifdef ANSI_C
#ifdef NO_STDINCLUDES
int fprintf(FILE *stream, const char *format, ...);
int printf(const char *format, ...);
int scanf(const char *format, ...);
int atoi(char *x);
double atof(char *x);
int islower(int s);
int isupper(int s);
int tolower(int s);
int toupper(int s);
void bcopy(void *b1,void *b2,int length);
int fputs(const char *s, FILE *stream);
size_t fwrite(const void *ptr, size_t s, size_t n, FILE *stream);
int fclose(FILE *stream);
FILE *fopen(const char *filename, const char *mode);
void system(char *string);
int fflush(FILE *stream);
int getppid(void);
#ifdef X11
char *getwd(char pn[]);
#endif
int fgetc(FILE *stream);
#endif
#endif
#define gstoint(x) ((int)(x))
#ifdef HPUX
#define alloca(x) (malloc(x))
#define getwd(h) (getcwd(h,MAXPATHLEN-1))
#endif
#ifdef VMS
#define alloca(x) (malloc(x))
#endif
/*--------------------------------------------------------------------*/
#endif /* GLOBALS_H */