This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
gcc4 Segmentation fault
- From: John Ellson <ellson at research dot att dot com>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sat, 06 Nov 2004 22:13:56 -0500
- Subject: gcc4 Segmentation fault
This file compiled OK with gcc4 from gcc4-4.0.0-0.5.i386.rpm
John Ellson
$ gcc4 --version
gcc (GCC) 3.4.2 20041017 (Red Hat 3.4.2-8)
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ uname -a
Linux ontap 2.6.9-1.667.ellsonsmp #1 SMP Wed Nov 3 10:28:43 EST 2004 i686 i686 i386 GNU/Linux
$ cat /etc/redhat-release
Fedora Core release Rawhide (Rawhide)
$ /usr/bin/gcc4 -DHAVE_CONFIG_H -I. -I. -I../.. -I../.. -I../../dotneato/gvrender -I../../pathplan -I../../graph -I../../cdt -I../../gd -DXTHREADS -I/home/ellson/FIX/Linux.i686/include -I/usr/include/freetype2 -I/usr/X11R6/include -I/usr/include/libpng12 -I/home/ellson/FIX/Linux.i686/include -g -O2 -Wall -MT shapes.lo -MD -MP -MF .deps/shapes.Tpo -c shapes.c -fPIC -DPIC -o .libs/shapes.o
shapes.c: In function 'poly_init':
shapes.c:431: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
Preprocessed source stored into /tmp/cchh0kek.out file, please attach this to your bugreport.
$ cat /tmp/cchh0kek.out
// /usr/libexec/gcc/i386-redhat-linux/4.0.0/cc1 -quiet -I. -I. -I../.. -I../.. -I../../dotneato/gvrender -I../../pathplan -I../../graph -I../../cdt -I../../gd -I/home/ellson/FIX/Linux.i686/include -I/usr/include/freetype2 -I/usr/X11R6/include -I/usr/include/libpng12 -I/home/ellson/FIX/Linux.i686/include -MD .libs/shapes.d -MF .deps/shapes.Tpo -MP -MT shapes.lo -MQ .libs/shapes.o -DHAVE_CONFIG_H -DXTHREADS -DPIC shapes.c -quiet -dumpbase shapes.c -auxbase-strip .libs/shapes.o -g -O2 -Wall -fPIC -o - -frandom-seed=0
# 1 "shapes.c"
# 1 "/home/ellson/FIX/Linux.i686/build/graphviz.branch/dotneato/common//"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "shapes.c"
# 11 "shapes.c"
# 1 "render.h" 1
# 15 "render.h"
# 1 "../../config.h" 1
# 16 "render.h" 2
# 1 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/limits.h" 1 3 4
# 11 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/limits.h" 3 4
# 1 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/syslimits.h" 1 3 4
# 1 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/limits.h" 1 3 4
# 122 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/limits.h" 3 4
# 1 "/usr/include/limits.h" 1 3 4
# 26 "/usr/include/limits.h" 3 4
# 1 "/usr/include/features.h" 1 3 4
# 314 "/usr/include/features.h" 3 4
# 1 "/usr/include/sys/cdefs.h" 1 3 4
# 315 "/usr/include/features.h" 2 3 4
# 337 "/usr/include/features.h" 3 4
# 1 "/usr/include/gnu/stubs.h" 1 3 4
# 338 "/usr/include/features.h" 2 3 4
# 27 "/usr/include/limits.h" 2 3 4
# 144 "/usr/include/limits.h" 3 4
# 1 "/usr/include/bits/posix1_lim.h" 1 3 4
# 153 "/usr/include/bits/posix1_lim.h" 3 4
# 1 "/usr/include/bits/local_lim.h" 1 3 4
# 36 "/usr/include/bits/local_lim.h" 3 4
# 1 "/usr/include/linux/limits.h" 1 3 4
# 37 "/usr/include/bits/local_lim.h" 2 3 4
# 154 "/usr/include/bits/posix1_lim.h" 2 3 4
# 145 "/usr/include/limits.h" 2 3 4
# 1 "/usr/include/bits/posix2_lim.h" 1 3 4
# 149 "/usr/include/limits.h" 2 3 4
# 123 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/limits.h" 2 3 4
# 8 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/syslimits.h" 2 3 4
# 12 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/limits.h" 2 3 4
# 20 "render.h" 2
# 1 "/usr/include/signal.h" 1 3 4
# 31 "/usr/include/signal.h" 3 4
# 1 "/usr/include/bits/sigset.h" 1 3 4
# 23 "/usr/include/bits/sigset.h" 3 4
typedef int __sig_atomic_t;
typedef struct
{
unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
} __sigset_t;
# 103 "/usr/include/bits/sigset.h" 3 4
extern int __sigismember (__const __sigset_t *, int);
extern int __sigaddset (__sigset_t *, int);
extern int __sigdelset (__sigset_t *, int);
# 117 "/usr/include/bits/sigset.h" 3 4
extern __inline int __sigismember (__const __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return (__set->__val[__word] & __mask) ? 1 : 0; }
extern __inline int __sigaddset ( __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return ((__set->__val[__word] |= __mask), 0); }
extern __inline int __sigdelset ( __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return ((__set->__val[__word] &= ~__mask), 0); }
# 34 "/usr/include/signal.h" 2 3 4
typedef __sig_atomic_t sig_atomic_t;
typedef __sigset_t sigset_t;
# 1 "/usr/include/bits/types.h" 1 3 4
# 28 "/usr/include/bits/types.h" 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 29 "/usr/include/bits/types.h" 2 3 4
# 1 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/stddef.h" 1 3 4
# 214 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/stddef.h" 3 4
typedef unsigned int size_t;
# 32 "/usr/include/bits/types.h" 2 3 4
typedef unsigned char __u_char;
typedef unsigned short int __u_short;
typedef unsigned int __u_int;
typedef unsigned long int __u_long;
typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef signed short int __int16_t;
typedef unsigned short int __uint16_t;
typedef signed int __int32_t;
typedef unsigned int __uint32_t;
__extension__ typedef signed long long int __int64_t;
__extension__ typedef unsigned long long int __uint64_t;
__extension__ typedef long long int __quad_t;
__extension__ typedef unsigned long long int __u_quad_t;
# 129 "/usr/include/bits/types.h" 3 4
# 1 "/usr/include/bits/typesizes.h" 1 3 4
# 130 "/usr/include/bits/types.h" 2 3 4
__extension__ typedef __u_quad_t __dev_t;
__extension__ typedef unsigned int __uid_t;
__extension__ typedef unsigned int __gid_t;
__extension__ typedef unsigned long int __ino_t;
__extension__ typedef __u_quad_t __ino64_t;
__extension__ typedef unsigned int __mode_t;
__extension__ typedef unsigned int __nlink_t;
__extension__ typedef long int __off_t;
__extension__ typedef __quad_t __off64_t;
__extension__ typedef int __pid_t;
__extension__ typedef struct { int __val[2]; } __fsid_t;
__extension__ typedef long int __clock_t;
__extension__ typedef unsigned long int __rlim_t;
__extension__ typedef __u_quad_t __rlim64_t;
__extension__ typedef unsigned int __id_t;
__extension__ typedef long int __time_t;
__extension__ typedef unsigned int __useconds_t;
__extension__ typedef long int __suseconds_t;
__extension__ typedef int __daddr_t;
__extension__ typedef long int __swblk_t;
__extension__ typedef int __key_t;
__extension__ typedef int __clockid_t;
__extension__ typedef int __timer_t;
__extension__ typedef long int __blksize_t;
__extension__ typedef long int __blkcnt_t;
__extension__ typedef __quad_t __blkcnt64_t;
__extension__ typedef unsigned long int __fsblkcnt_t;
__extension__ typedef __u_quad_t __fsblkcnt64_t;
__extension__ typedef unsigned long int __fsfilcnt_t;
__extension__ typedef __u_quad_t __fsfilcnt64_t;
__extension__ typedef int __ssize_t;
typedef __off64_t __loff_t;
typedef __quad_t *__qaddr_t;
typedef char *__caddr_t;
__extension__ typedef int __intptr_t;
__extension__ typedef unsigned int __socklen_t;
# 58 "/usr/include/signal.h" 2 3 4
# 1 "/usr/include/bits/signum.h" 1 3 4
# 59 "/usr/include/signal.h" 2 3 4
# 75 "/usr/include/signal.h" 3 4
typedef void (*__sighandler_t) (int);
extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler)
__attribute__ ((__nothrow__));
# 90 "/usr/include/signal.h" 3 4
extern __sighandler_t signal (int __sig, __sighandler_t __handler) __attribute__ ((__nothrow__));
# 103 "/usr/include/signal.h" 3 4
# 115 "/usr/include/signal.h" 3 4
extern int kill (__pid_t __pid, int __sig) __attribute__ ((__nothrow__));
extern int killpg (__pid_t __pgrp, int __sig) __attribute__ ((__nothrow__));
extern int raise (int __sig) __attribute__ ((__nothrow__));
extern __sighandler_t ssignal (int __sig, __sighandler_t __handler) __attribute__ ((__nothrow__));
extern int gsignal (int __sig) __attribute__ ((__nothrow__));
extern void psignal (int __sig, __const char *__s);
# 150 "/usr/include/signal.h" 3 4
extern int __sigpause (int __sig_or_mask, int __is_sig);
# 179 "/usr/include/signal.h" 3 4
extern int sigblock (int __mask) __attribute__ ((__nothrow__));
extern int sigsetmask (int __mask) __attribute__ ((__nothrow__));
extern int siggetmask (void) __attribute__ ((__nothrow__));
# 199 "/usr/include/signal.h" 3 4
typedef __sighandler_t sig_t;
# 1 "/usr/include/time.h" 1 3 4
# 118 "/usr/include/time.h" 3 4
struct timespec
{
__time_t tv_sec;
long int tv_nsec;
};
# 208 "/usr/include/signal.h" 2 3 4
# 1 "/usr/include/bits/siginfo.h" 1 3 4
# 25 "/usr/include/bits/siginfo.h" 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 26 "/usr/include/bits/siginfo.h" 2 3 4
typedef union sigval
{
int sival_int;
void *sival_ptr;
} sigval_t;
# 51 "/usr/include/bits/siginfo.h" 3 4
typedef struct siginfo
{
int si_signo;
int si_errno;
int si_code;
union
{
int _pad[((128 / sizeof (int)) - 3)];
struct
{
__pid_t si_pid;
__uid_t si_uid;
} _kill;
struct
{
int si_tid;
int si_overrun;
sigval_t si_sigval;
} _timer;
struct
{
__pid_t si_pid;
__uid_t si_uid;
sigval_t si_sigval;
} _rt;
struct
{
__pid_t si_pid;
__uid_t si_uid;
int si_status;
__clock_t si_utime;
__clock_t si_stime;
} _sigchld;
struct
{
void *si_addr;
} _sigfault;
struct
{
long int si_band;
int si_fd;
} _sigpoll;
} _sifields;
} siginfo_t;
# 129 "/usr/include/bits/siginfo.h" 3 4
enum
{
SI_ASYNCNL = -60,
SI_TKILL = -6,
SI_SIGIO,
SI_ASYNCIO,
SI_MESGQ,
SI_TIMER,
SI_QUEUE,
SI_USER,
SI_KERNEL = 0x80
};
enum
{
ILL_ILLOPC = 1,
ILL_ILLOPN,
ILL_ILLADR,
ILL_ILLTRP,
ILL_PRVOPC,
ILL_PRVREG,
ILL_COPROC,
ILL_BADSTK
};
enum
{
FPE_INTDIV = 1,
FPE_INTOVF,
FPE_FLTDIV,
FPE_FLTOVF,
FPE_FLTUND,
FPE_FLTRES,
FPE_FLTINV,
FPE_FLTSUB
};
enum
{
SEGV_MAPERR = 1,
SEGV_ACCERR
};
enum
{
BUS_ADRALN = 1,
BUS_ADRERR,
BUS_OBJERR
};
enum
{
TRAP_BRKPT = 1,
TRAP_TRACE
};
enum
{
CLD_EXITED = 1,
CLD_KILLED,
CLD_DUMPED,
CLD_TRAPPED,
CLD_STOPPED,
CLD_CONTINUED
};
enum
{
POLL_IN = 1,
POLL_OUT,
POLL_MSG,
POLL_ERR,
POLL_PRI,
POLL_HUP
};
# 273 "/usr/include/bits/siginfo.h" 3 4
typedef struct sigevent
{
sigval_t sigev_value;
int sigev_signo;
int sigev_notify;
union
{
int _pad[((64 / sizeof (int)) - 3)];
__pid_t _tid;
struct
{
void (*_function) (sigval_t);
void *_attribute;
} _sigev_thread;
} _sigev_un;
} sigevent_t;
enum
{
SIGEV_SIGNAL = 0,
SIGEV_NONE,
SIGEV_THREAD,
SIGEV_THREAD_ID = 4
};
# 211 "/usr/include/signal.h" 2 3 4
extern int sigemptyset (sigset_t *__set) __attribute__ ((__nothrow__));
extern int sigfillset (sigset_t *__set) __attribute__ ((__nothrow__));
extern int sigaddset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__));
extern int sigdelset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__));
extern int sigismember (__const sigset_t *__set, int __signo) __attribute__ ((__nothrow__));
# 243 "/usr/include/signal.h" 3 4
# 1 "/usr/include/bits/sigaction.h" 1 3 4
# 25 "/usr/include/bits/sigaction.h" 3 4
struct sigaction
{
union
{
__sighandler_t sa_handler;
void (*sa_sigaction) (int, siginfo_t *, void *);
}
__sigaction_handler;
__sigset_t sa_mask;
int sa_flags;
void (*sa_restorer) (void);
};
# 244 "/usr/include/signal.h" 2 3 4
extern int sigprocmask (int __how, __const sigset_t *__restrict __set,
sigset_t *__restrict __oset) __attribute__ ((__nothrow__));
extern int sigsuspend (__const sigset_t *__set);
extern int sigaction (int __sig, __const struct sigaction *__restrict __act,
struct sigaction *__restrict __oact) __attribute__ ((__nothrow__));
extern int sigpending (sigset_t *__set) __attribute__ ((__nothrow__));
extern int sigwait (__const sigset_t *__restrict __set, int *__restrict __sig);
extern int sigwaitinfo (__const sigset_t *__restrict __set,
siginfo_t *__restrict __info);
extern int sigtimedwait (__const sigset_t *__restrict __set,
siginfo_t *__restrict __info,
__const struct timespec *__restrict __timeout);
extern int sigqueue (__pid_t __pid, int __sig, __const union sigval __val)
__attribute__ ((__nothrow__));
# 299 "/usr/include/signal.h" 3 4
extern __const char *__const _sys_siglist[65];
extern __const char *__const sys_siglist[65];
struct sigvec
{
__sighandler_t sv_handler;
int sv_mask;
int sv_flags;
};
# 323 "/usr/include/signal.h" 3 4
extern int sigvec (int __sig, __const struct sigvec *__vec,
struct sigvec *__ovec) __attribute__ ((__nothrow__));
# 1 "/usr/include/bits/sigcontext.h" 1 3 4
# 28 "/usr/include/bits/sigcontext.h" 3 4
# 1 "/usr/include/asm/sigcontext.h" 1 3 4
# 18 "/usr/include/asm/sigcontext.h" 3 4
struct _fpreg {
unsigned short significand[4];
unsigned short exponent;
};
struct _fpxreg {
unsigned short significand[4];
unsigned short exponent;
unsigned short padding[3];
};
struct _xmmreg {
unsigned long element[4];
};
struct _fpstate {
unsigned long cw;
unsigned long sw;
unsigned long tag;
unsigned long ipoff;
unsigned long cssel;
unsigned long dataoff;
unsigned long datasel;
struct _fpreg _st[8];
unsigned short status;
unsigned short magic;
unsigned long _fxsr_env[6];
unsigned long mxcsr;
unsigned long reserved;
struct _fpxreg _fxsr_st[8];
struct _xmmreg _xmm[8];
unsigned long padding[56];
};
struct sigcontext {
unsigned short gs, __gsh;
unsigned short fs, __fsh;
unsigned short es, __esh;
unsigned short ds, __dsh;
unsigned long edi;
unsigned long esi;
unsigned long ebp;
unsigned long esp;
unsigned long ebx;
unsigned long edx;
unsigned long ecx;
unsigned long eax;
unsigned long trapno;
unsigned long err;
unsigned long eip;
unsigned short cs, __csh;
unsigned long eflags;
unsigned long esp_at_signal;
unsigned short ss, __ssh;
struct _fpstate * fpstate;
unsigned long oldmask;
unsigned long cr2;
};
# 29 "/usr/include/bits/sigcontext.h" 2 3 4
# 329 "/usr/include/signal.h" 2 3 4
extern int sigreturn (struct sigcontext *__scp) __attribute__ ((__nothrow__));
# 341 "/usr/include/signal.h" 3 4
extern int siginterrupt (int __sig, int __interrupt) __attribute__ ((__nothrow__));
# 1 "/usr/include/bits/sigstack.h" 1 3 4
# 26 "/usr/include/bits/sigstack.h" 3 4
struct sigstack
{
void *ss_sp;
int ss_onstack;
};
enum
{
SS_ONSTACK = 1,
SS_DISABLE
};
# 50 "/usr/include/bits/sigstack.h" 3 4
typedef struct sigaltstack
{
void *ss_sp;
int ss_flags;
size_t ss_size;
} stack_t;
# 344 "/usr/include/signal.h" 2 3 4
# 352 "/usr/include/signal.h" 3 4
extern int sigstack (struct sigstack *__ss, struct sigstack *__oss) __attribute__ ((__nothrow__));
extern int sigaltstack (__const struct sigaltstack *__restrict __ss,
struct sigaltstack *__restrict __oss) __attribute__ ((__nothrow__));
# 380 "/usr/include/signal.h" 3 4
# 1 "/usr/include/bits/pthreadtypes.h" 1 3 4
# 23 "/usr/include/bits/pthreadtypes.h" 3 4
# 1 "/usr/include/bits/sched.h" 1 3 4
# 83 "/usr/include/bits/sched.h" 3 4
struct __sched_param
{
int __sched_priority;
};
# 24 "/usr/include/bits/pthreadtypes.h" 2 3 4
struct _pthread_fastlock
{
long int __status;
int __spinlock;
};
typedef struct _pthread_descr_struct *_pthread_descr;
typedef struct __pthread_attr_s
{
int __detachstate;
int __schedpolicy;
struct __sched_param __schedparam;
int __inheritsched;
int __scope;
size_t __guardsize;
int __stackaddr_set;
void *__stackaddr;
size_t __stacksize;
} pthread_attr_t;
__extension__ typedef long long __pthread_cond_align_t;
typedef struct
{
struct _pthread_fastlock __c_lock;
_pthread_descr __c_waiting;
char __padding[48 - sizeof (struct _pthread_fastlock)
- sizeof (_pthread_descr) - sizeof (__pthread_cond_align_t)];
__pthread_cond_align_t __align;
} pthread_cond_t;
typedef struct
{
int __dummy;
} pthread_condattr_t;
typedef unsigned int pthread_key_t;
typedef struct
{
int __m_reserved;
int __m_count;
_pthread_descr __m_owner;
int __m_kind;
struct _pthread_fastlock __m_lock;
} pthread_mutex_t;
typedef struct
{
int __mutexkind;
} pthread_mutexattr_t;
typedef int pthread_once_t;
# 150 "/usr/include/bits/pthreadtypes.h" 3 4
typedef unsigned long int pthread_t;
# 381 "/usr/include/signal.h" 2 3 4
# 1 "/usr/include/bits/sigthread.h" 1 3 4
# 31 "/usr/include/bits/sigthread.h" 3 4
extern int pthread_sigmask (int __how,
__const __sigset_t *__restrict __newmask,
__sigset_t *__restrict __oldmask)__attribute__ ((__nothrow__));
extern int pthread_kill (pthread_t __threadid, int __signo) __attribute__ ((__nothrow__));
# 382 "/usr/include/signal.h" 2 3 4
extern int __libc_current_sigrtmin (void) __attribute__ ((__nothrow__));
extern int __libc_current_sigrtmax (void) __attribute__ ((__nothrow__));
# 27 "render.h" 2
# 1 "/usr/include/assert.h" 1 3 4
# 65 "/usr/include/assert.h" 3 4
extern void __assert_fail (__const char *__assertion, __const char *__file,
unsigned int __line, __const char *__function)
__attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
extern void __assert_perror_fail (int __errnum, __const char *__file,
unsigned int __line,
__const char *__function)
__attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
extern void __assert (const char *__assertion, const char *__file, int __line)
__attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
# 28 "render.h" 2
# 1 "/usr/include/math.h" 1 3 4
# 29 "/usr/include/math.h" 3 4
# 1 "/usr/include/bits/huge_val.h" 1 3 4
# 34 "/usr/include/math.h" 2 3 4
# 46 "/usr/include/math.h" 3 4
# 1 "/usr/include/bits/mathdef.h" 1 3 4
# 47 "/usr/include/math.h" 2 3 4
# 70 "/usr/include/math.h" 3 4
# 1 "/usr/include/bits/mathcalls.h" 1 3 4
# 53 "/usr/include/bits/mathcalls.h" 3 4
extern double acos (double __x) __attribute__ ((__nothrow__)); extern double __acos (double __x) __attribute__ ((__nothrow__));
extern double asin (double __x) __attribute__ ((__nothrow__)); extern double __asin (double __x) __attribute__ ((__nothrow__));
extern double atan (double __x) __attribute__ ((__nothrow__)); extern double __atan (double __x) __attribute__ ((__nothrow__));
extern double atan2 (double __y, double __x) __attribute__ ((__nothrow__)); extern double __atan2 (double __y, double __x) __attribute__ ((__nothrow__));
extern double cos (double __x) __attribute__ ((__nothrow__)); extern double __cos (double __x) __attribute__ ((__nothrow__));
extern double sin (double __x) __attribute__ ((__nothrow__)); extern double __sin (double __x) __attribute__ ((__nothrow__));
extern double tan (double __x) __attribute__ ((__nothrow__)); extern double __tan (double __x) __attribute__ ((__nothrow__));
extern double cosh (double __x) __attribute__ ((__nothrow__)); extern double __cosh (double __x) __attribute__ ((__nothrow__));
extern double sinh (double __x) __attribute__ ((__nothrow__)); extern double __sinh (double __x) __attribute__ ((__nothrow__));
extern double tanh (double __x) __attribute__ ((__nothrow__)); extern double __tanh (double __x) __attribute__ ((__nothrow__));
# 87 "/usr/include/bits/mathcalls.h" 3 4
extern double acosh (double __x) __attribute__ ((__nothrow__)); extern double __acosh (double __x) __attribute__ ((__nothrow__));
extern double asinh (double __x) __attribute__ ((__nothrow__)); extern double __asinh (double __x) __attribute__ ((__nothrow__));
extern double atanh (double __x) __attribute__ ((__nothrow__)); extern double __atanh (double __x) __attribute__ ((__nothrow__));
extern double exp (double __x) __attribute__ ((__nothrow__)); extern double __exp (double __x) __attribute__ ((__nothrow__));
extern double frexp (double __x, int *__exponent) __attribute__ ((__nothrow__)); extern double __frexp (double __x, int *__exponent) __attribute__ ((__nothrow__));
extern double ldexp (double __x, int __exponent) __attribute__ ((__nothrow__)); extern double __ldexp (double __x, int __exponent) __attribute__ ((__nothrow__));
extern double log (double __x) __attribute__ ((__nothrow__)); extern double __log (double __x) __attribute__ ((__nothrow__));
extern double log10 (double __x) __attribute__ ((__nothrow__)); extern double __log10 (double __x) __attribute__ ((__nothrow__));
extern double modf (double __x, double *__iptr) __attribute__ ((__nothrow__)); extern double __modf (double __x, double *__iptr) __attribute__ ((__nothrow__));
# 127 "/usr/include/bits/mathcalls.h" 3 4
extern double expm1 (double __x) __attribute__ ((__nothrow__)); extern double __expm1 (double __x) __attribute__ ((__nothrow__));
extern double log1p (double __x) __attribute__ ((__nothrow__)); extern double __log1p (double __x) __attribute__ ((__nothrow__));
extern double logb (double __x) __attribute__ ((__nothrow__)); extern double __logb (double __x) __attribute__ ((__nothrow__));
# 152 "/usr/include/bits/mathcalls.h" 3 4
extern double pow (double __x, double __y) __attribute__ ((__nothrow__)); extern double __pow (double __x, double __y) __attribute__ ((__nothrow__));
extern double sqrt (double __x) __attribute__ ((__nothrow__)); extern double __sqrt (double __x) __attribute__ ((__nothrow__));
extern double hypot (double __x, double __y) __attribute__ ((__nothrow__)); extern double __hypot (double __x, double __y) __attribute__ ((__nothrow__));
extern double cbrt (double __x) __attribute__ ((__nothrow__)); extern double __cbrt (double __x) __attribute__ ((__nothrow__));
extern double ceil (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __ceil (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern double fabs (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __fabs (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern double floor (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __floor (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern double fmod (double __x, double __y) __attribute__ ((__nothrow__)); extern double __fmod (double __x, double __y) __attribute__ ((__nothrow__));
extern int __isinf (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern int __finite (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern int isinf (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern int finite (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern double drem (double __x, double __y) __attribute__ ((__nothrow__)); extern double __drem (double __x, double __y) __attribute__ ((__nothrow__));
extern double significand (double __x) __attribute__ ((__nothrow__)); extern double __significand (double __x) __attribute__ ((__nothrow__));
extern double copysign (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __copysign (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
# 231 "/usr/include/bits/mathcalls.h" 3 4
extern int __isnan (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern int isnan (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern double j0 (double) __attribute__ ((__nothrow__)); extern double __j0 (double) __attribute__ ((__nothrow__));
extern double j1 (double) __attribute__ ((__nothrow__)); extern double __j1 (double) __attribute__ ((__nothrow__));
extern double jn (int, double) __attribute__ ((__nothrow__)); extern double __jn (int, double) __attribute__ ((__nothrow__));
extern double y0 (double) __attribute__ ((__nothrow__)); extern double __y0 (double) __attribute__ ((__nothrow__));
extern double y1 (double) __attribute__ ((__nothrow__)); extern double __y1 (double) __attribute__ ((__nothrow__));
extern double yn (int, double) __attribute__ ((__nothrow__)); extern double __yn (int, double) __attribute__ ((__nothrow__));
extern double erf (double) __attribute__ ((__nothrow__)); extern double __erf (double) __attribute__ ((__nothrow__));
extern double erfc (double) __attribute__ ((__nothrow__)); extern double __erfc (double) __attribute__ ((__nothrow__));
extern double lgamma (double) __attribute__ ((__nothrow__)); extern double __lgamma (double) __attribute__ ((__nothrow__));
# 265 "/usr/include/bits/mathcalls.h" 3 4
extern double gamma (double) __attribute__ ((__nothrow__)); extern double __gamma (double) __attribute__ ((__nothrow__));
extern double lgamma_r (double, int *__signgamp) __attribute__ ((__nothrow__)); extern double __lgamma_r (double, int *__signgamp) __attribute__ ((__nothrow__));
extern double rint (double __x) __attribute__ ((__nothrow__)); extern double __rint (double __x) __attribute__ ((__nothrow__));
extern double nextafter (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __nextafter (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern double remainder (double __x, double __y) __attribute__ ((__nothrow__)); extern double __remainder (double __x, double __y) __attribute__ ((__nothrow__));
extern double scalbn (double __x, int __n) __attribute__ ((__nothrow__)); extern double __scalbn (double __x, int __n) __attribute__ ((__nothrow__));
extern int ilogb (double __x) __attribute__ ((__nothrow__)); extern int __ilogb (double __x) __attribute__ ((__nothrow__));
# 71 "/usr/include/math.h" 2 3 4
# 93 "/usr/include/math.h" 3 4
# 1 "/usr/include/bits/mathcalls.h" 1 3 4
# 53 "/usr/include/bits/mathcalls.h" 3 4
extern float acosf (float __x) __attribute__ ((__nothrow__)); extern float __acosf (float __x) __attribute__ ((__nothrow__));
extern float asinf (float __x) __attribute__ ((__nothrow__)); extern float __asinf (float __x) __attribute__ ((__nothrow__));
extern float atanf (float __x) __attribute__ ((__nothrow__)); extern float __atanf (float __x) __attribute__ ((__nothrow__));
extern float atan2f (float __y, float __x) __attribute__ ((__nothrow__)); extern float __atan2f (float __y, float __x) __attribute__ ((__nothrow__));
extern float cosf (float __x) __attribute__ ((__nothrow__)); extern float __cosf (float __x) __attribute__ ((__nothrow__));
extern float sinf (float __x) __attribute__ ((__nothrow__)); extern float __sinf (float __x) __attribute__ ((__nothrow__));
extern float tanf (float __x) __attribute__ ((__nothrow__)); extern float __tanf (float __x) __attribute__ ((__nothrow__));
extern float coshf (float __x) __attribute__ ((__nothrow__)); extern float __coshf (float __x) __attribute__ ((__nothrow__));
extern float sinhf (float __x) __attribute__ ((__nothrow__)); extern float __sinhf (float __x) __attribute__ ((__nothrow__));
extern float tanhf (float __x) __attribute__ ((__nothrow__)); extern float __tanhf (float __x) __attribute__ ((__nothrow__));
# 87 "/usr/include/bits/mathcalls.h" 3 4
extern float acoshf (float __x) __attribute__ ((__nothrow__)); extern float __acoshf (float __x) __attribute__ ((__nothrow__));
extern float asinhf (float __x) __attribute__ ((__nothrow__)); extern float __asinhf (float __x) __attribute__ ((__nothrow__));
extern float atanhf (float __x) __attribute__ ((__nothrow__)); extern float __atanhf (float __x) __attribute__ ((__nothrow__));
extern float expf (float __x) __attribute__ ((__nothrow__)); extern float __expf (float __x) __attribute__ ((__nothrow__));
extern float frexpf (float __x, int *__exponent) __attribute__ ((__nothrow__)); extern float __frexpf (float __x, int *__exponent) __attribute__ ((__nothrow__));
extern float ldexpf (float __x, int __exponent) __attribute__ ((__nothrow__)); extern float __ldexpf (float __x, int __exponent) __attribute__ ((__nothrow__));
extern float logf (float __x) __attribute__ ((__nothrow__)); extern float __logf (float __x) __attribute__ ((__nothrow__));
extern float log10f (float __x) __attribute__ ((__nothrow__)); extern float __log10f (float __x) __attribute__ ((__nothrow__));
extern float modff (float __x, float *__iptr) __attribute__ ((__nothrow__)); extern float __modff (float __x, float *__iptr) __attribute__ ((__nothrow__));
# 127 "/usr/include/bits/mathcalls.h" 3 4
extern float expm1f (float __x) __attribute__ ((__nothrow__)); extern float __expm1f (float __x) __attribute__ ((__nothrow__));
extern float log1pf (float __x) __attribute__ ((__nothrow__)); extern float __log1pf (float __x) __attribute__ ((__nothrow__));
extern float logbf (float __x) __attribute__ ((__nothrow__)); extern float __logbf (float __x) __attribute__ ((__nothrow__));
# 152 "/usr/include/bits/mathcalls.h" 3 4
extern float powf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __powf (float __x, float __y) __attribute__ ((__nothrow__));
extern float sqrtf (float __x) __attribute__ ((__nothrow__)); extern float __sqrtf (float __x) __attribute__ ((__nothrow__));
extern float hypotf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __hypotf (float __x, float __y) __attribute__ ((__nothrow__));
extern float cbrtf (float __x) __attribute__ ((__nothrow__)); extern float __cbrtf (float __x) __attribute__ ((__nothrow__));
extern float ceilf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __ceilf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern float fabsf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __fabsf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern float floorf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __floorf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern float fmodf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __fmodf (float __x, float __y) __attribute__ ((__nothrow__));
extern int __isinff (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern int __finitef (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern int isinff (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern int finitef (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern float dremf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __dremf (float __x, float __y) __attribute__ ((__nothrow__));
extern float significandf (float __x) __attribute__ ((__nothrow__)); extern float __significandf (float __x) __attribute__ ((__nothrow__));
extern float copysignf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
# 231 "/usr/include/bits/mathcalls.h" 3 4
extern int __isnanf (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern int isnanf (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern float j0f (float) __attribute__ ((__nothrow__)); extern float __j0f (float) __attribute__ ((__nothrow__));
extern float j1f (float) __attribute__ ((__nothrow__)); extern float __j1f (float) __attribute__ ((__nothrow__));
extern float jnf (int, float) __attribute__ ((__nothrow__)); extern float __jnf (int, float) __attribute__ ((__nothrow__));
extern float y0f (float) __attribute__ ((__nothrow__)); extern float __y0f (float) __attribute__ ((__nothrow__));
extern float y1f (float) __attribute__ ((__nothrow__)); extern float __y1f (float) __attribute__ ((__nothrow__));
extern float ynf (int, float) __attribute__ ((__nothrow__)); extern float __ynf (int, float) __attribute__ ((__nothrow__));
extern float erff (float) __attribute__ ((__nothrow__)); extern float __erff (float) __attribute__ ((__nothrow__));
extern float erfcf (float) __attribute__ ((__nothrow__)); extern float __erfcf (float) __attribute__ ((__nothrow__));
extern float lgammaf (float) __attribute__ ((__nothrow__)); extern float __lgammaf (float) __attribute__ ((__nothrow__));
# 265 "/usr/include/bits/mathcalls.h" 3 4
extern float gammaf (float) __attribute__ ((__nothrow__)); extern float __gammaf (float) __attribute__ ((__nothrow__));
extern float lgammaf_r (float, int *__signgamp) __attribute__ ((__nothrow__)); extern float __lgammaf_r (float, int *__signgamp) __attribute__ ((__nothrow__));
extern float rintf (float __x) __attribute__ ((__nothrow__)); extern float __rintf (float __x) __attribute__ ((__nothrow__));
extern float nextafterf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __nextafterf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern float remainderf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __remainderf (float __x, float __y) __attribute__ ((__nothrow__));
extern float scalbnf (float __x, int __n) __attribute__ ((__nothrow__)); extern float __scalbnf (float __x, int __n) __attribute__ ((__nothrow__));
extern int ilogbf (float __x) __attribute__ ((__nothrow__)); extern int __ilogbf (float __x) __attribute__ ((__nothrow__));
# 94 "/usr/include/math.h" 2 3 4
# 114 "/usr/include/math.h" 3 4
# 1 "/usr/include/bits/mathcalls.h" 1 3 4
# 53 "/usr/include/bits/mathcalls.h" 3 4
extern long double acosl (long double __x) __attribute__ ((__nothrow__)); extern long double __acosl (long double __x) __attribute__ ((__nothrow__));
extern long double asinl (long double __x) __attribute__ ((__nothrow__)); extern long double __asinl (long double __x) __attribute__ ((__nothrow__));
extern long double atanl (long double __x) __attribute__ ((__nothrow__)); extern long double __atanl (long double __x) __attribute__ ((__nothrow__));
extern long double atan2l (long double __y, long double __x) __attribute__ ((__nothrow__)); extern long double __atan2l (long double __y, long double __x) __attribute__ ((__nothrow__));
extern long double cosl (long double __x) __attribute__ ((__nothrow__)); extern long double __cosl (long double __x) __attribute__ ((__nothrow__));
extern long double sinl (long double __x) __attribute__ ((__nothrow__)); extern long double __sinl (long double __x) __attribute__ ((__nothrow__));
extern long double tanl (long double __x) __attribute__ ((__nothrow__)); extern long double __tanl (long double __x) __attribute__ ((__nothrow__));
extern long double coshl (long double __x) __attribute__ ((__nothrow__)); extern long double __coshl (long double __x) __attribute__ ((__nothrow__));
extern long double sinhl (long double __x) __attribute__ ((__nothrow__)); extern long double __sinhl (long double __x) __attribute__ ((__nothrow__));
extern long double tanhl (long double __x) __attribute__ ((__nothrow__)); extern long double __tanhl (long double __x) __attribute__ ((__nothrow__));
# 87 "/usr/include/bits/mathcalls.h" 3 4
extern long double acoshl (long double __x) __attribute__ ((__nothrow__)); extern long double __acoshl (long double __x) __attribute__ ((__nothrow__));
extern long double asinhl (long double __x) __attribute__ ((__nothrow__)); extern long double __asinhl (long double __x) __attribute__ ((__nothrow__));
extern long double atanhl (long double __x) __attribute__ ((__nothrow__)); extern long double __atanhl (long double __x) __attribute__ ((__nothrow__));
extern long double expl (long double __x) __attribute__ ((__nothrow__)); extern long double __expl (long double __x) __attribute__ ((__nothrow__));
extern long double frexpl (long double __x, int *__exponent) __attribute__ ((__nothrow__)); extern long double __frexpl (long double __x, int *__exponent) __attribute__ ((__nothrow__));
extern long double ldexpl (long double __x, int __exponent) __attribute__ ((__nothrow__)); extern long double __ldexpl (long double __x, int __exponent) __attribute__ ((__nothrow__));
extern long double logl (long double __x) __attribute__ ((__nothrow__)); extern long double __logl (long double __x) __attribute__ ((__nothrow__));
extern long double log10l (long double __x) __attribute__ ((__nothrow__)); extern long double __log10l (long double __x) __attribute__ ((__nothrow__));
extern long double modfl (long double __x, long double *__iptr) __attribute__ ((__nothrow__)); extern long double __modfl (long double __x, long double *__iptr) __attribute__ ((__nothrow__));
# 127 "/usr/include/bits/mathcalls.h" 3 4
extern long double expm1l (long double __x) __attribute__ ((__nothrow__)); extern long double __expm1l (long double __x) __attribute__ ((__nothrow__));
extern long double log1pl (long double __x) __attribute__ ((__nothrow__)); extern long double __log1pl (long double __x) __attribute__ ((__nothrow__));
extern long double logbl (long double __x) __attribute__ ((__nothrow__)); extern long double __logbl (long double __x) __attribute__ ((__nothrow__));
# 152 "/usr/include/bits/mathcalls.h" 3 4
extern long double powl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __powl (long double __x, long double __y) __attribute__ ((__nothrow__));
extern long double sqrtl (long double __x) __attribute__ ((__nothrow__)); extern long double __sqrtl (long double __x) __attribute__ ((__nothrow__));
extern long double hypotl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __hypotl (long double __x, long double __y) __attribute__ ((__nothrow__));
extern long double cbrtl (long double __x) __attribute__ ((__nothrow__)); extern long double __cbrtl (long double __x) __attribute__ ((__nothrow__));
extern long double ceill (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __ceill (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern long double fabsl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __fabsl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern long double floorl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __floorl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern long double fmodl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __fmodl (long double __x, long double __y) __attribute__ ((__nothrow__));
extern int __isinfl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern int __finitel (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern int isinfl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern int finitel (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern long double dreml (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __dreml (long double __x, long double __y) __attribute__ ((__nothrow__));
extern long double significandl (long double __x) __attribute__ ((__nothrow__)); extern long double __significandl (long double __x) __attribute__ ((__nothrow__));
extern long double copysignl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __copysignl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
# 231 "/usr/include/bits/mathcalls.h" 3 4
extern int __isnanl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern int isnanl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern long double j0l (long double) __attribute__ ((__nothrow__)); extern long double __j0l (long double) __attribute__ ((__nothrow__));
extern long double j1l (long double) __attribute__ ((__nothrow__)); extern long double __j1l (long double) __attribute__ ((__nothrow__));
extern long double jnl (int, long double) __attribute__ ((__nothrow__)); extern long double __jnl (int, long double) __attribute__ ((__nothrow__));
extern long double y0l (long double) __attribute__ ((__nothrow__)); extern long double __y0l (long double) __attribute__ ((__nothrow__));
extern long double y1l (long double) __attribute__ ((__nothrow__)); extern long double __y1l (long double) __attribute__ ((__nothrow__));
extern long double ynl (int, long double) __attribute__ ((__nothrow__)); extern long double __ynl (int, long double) __attribute__ ((__nothrow__));
extern long double erfl (long double) __attribute__ ((__nothrow__)); extern long double __erfl (long double) __attribute__ ((__nothrow__));
extern long double erfcl (long double) __attribute__ ((__nothrow__)); extern long double __erfcl (long double) __attribute__ ((__nothrow__));
extern long double lgammal (long double) __attribute__ ((__nothrow__)); extern long double __lgammal (long double) __attribute__ ((__nothrow__));
# 265 "/usr/include/bits/mathcalls.h" 3 4
extern long double gammal (long double) __attribute__ ((__nothrow__)); extern long double __gammal (long double) __attribute__ ((__nothrow__));
extern long double lgammal_r (long double, int *__signgamp) __attribute__ ((__nothrow__)); extern long double __lgammal_r (long double, int *__signgamp) __attribute__ ((__nothrow__));
extern long double rintl (long double __x) __attribute__ ((__nothrow__)); extern long double __rintl (long double __x) __attribute__ ((__nothrow__));
extern long double nextafterl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __nextafterl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern long double remainderl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __remainderl (long double __x, long double __y) __attribute__ ((__nothrow__));
extern long double scalbnl (long double __x, int __n) __attribute__ ((__nothrow__)); extern long double __scalbnl (long double __x, int __n) __attribute__ ((__nothrow__));
extern int ilogbl (long double __x) __attribute__ ((__nothrow__)); extern int __ilogbl (long double __x) __attribute__ ((__nothrow__));
# 115 "/usr/include/math.h" 2 3 4
# 130 "/usr/include/math.h" 3 4
extern int signgam;
# 257 "/usr/include/math.h" 3 4
typedef enum
{
_IEEE_ = -1,
_SVID_,
_XOPEN_,
_POSIX_,
_ISOC_
} _LIB_VERSION_TYPE;
extern _LIB_VERSION_TYPE _LIB_VERSION;
# 282 "/usr/include/math.h" 3 4
struct exception
{
int type;
char *name;
double arg1;
double arg2;
double retval;
};
extern int matherr (struct exception *__exc);
# 382 "/usr/include/math.h" 3 4
# 1 "/usr/include/bits/mathinline.h" 1 3 4
# 291 "/usr/include/bits/mathinline.h" 3 4
extern __inline double __sgn (double) __attribute__ ((__nothrow__)); extern __inline double __attribute__ ((__nothrow__)) __sgn (double __x) { return __x == 0.0 ? 0.0 : (__x > 0.0 ? 1.0 : -1.0); } extern __inline float __sgnf (float) __attribute__ ((__nothrow__)); extern __inline float __attribute__ ((__nothrow__)) __sgnf (float __x) { return __x == 0.0 ? 0.0 : (__x > 0.0 ? 1.0 : -1.0); } extern __inline long double __sgnl (long double) __attribute__ ((__nothrow__)); extern __inline long double __attribute__ ((__nothrow__)) __sgnl (long double __x) { return __x == 0.0 ? 0.0 : (__x > 0.0 ? 1.0 : -1.0); }
# 433 "/usr/include/bits/mathinline.h" 3 4
extern __inline long double __attribute__ ((__nothrow__)) __atan2l (long double __y, long double __x) { return __builtin_atan2l (__y, __x); }
# 473 "/usr/include/bits/mathinline.h" 3 4
extern __inline double __attribute__ ((__nothrow__)) fabs (double __x) { return __builtin_fabs (__x); }
extern __inline float __attribute__ ((__nothrow__)) fabsf (float __x) { return __builtin_fabsf (__x); }
extern __inline long double __attribute__ ((__nothrow__)) fabsl (long double __x) { return __builtin_fabsl (__x); }
extern __inline long double __attribute__ ((__nothrow__)) __fabsl (long double __x) { return __builtin_fabsl (__x); }
# 506 "/usr/include/bits/mathinline.h" 3 4
extern __inline long double __sgn1l (long double) __attribute__ ((__nothrow__)); extern __inline long double __attribute__ ((__nothrow__)) __sgn1l (long double __x) { __extension__ union { long double __xld; unsigned int __xi[3]; } __n = { __xld: __x }; __n.__xi[2] = (__n.__xi[2] & 0x8000) | 0x3fff; __n.__xi[1] = 0x80000000; __n.__xi[0] = 0; return __n.__xld; }
# 530 "/usr/include/bits/mathinline.h" 3 4
extern __inline double __attribute__ ((__nothrow__)) floor (double __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0400; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; } extern __inline float __attribute__ ((__nothrow__)) floorf (float __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0400; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; } extern __inline long double __attribute__ ((__nothrow__)) floorl (long double __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0400; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; }
# 541 "/usr/include/bits/mathinline.h" 3 4
extern __inline double __attribute__ ((__nothrow__)) ceil (double __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0800; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; } extern __inline float __attribute__ ((__nothrow__)) ceilf (float __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0800; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; } extern __inline long double __attribute__ ((__nothrow__)) ceill (long double __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0800; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; }
# 713 "/usr/include/bits/mathinline.h" 3 4
extern __inline int
__attribute__ ((__nothrow__)) __finite (double __x)
{
return (__extension__
(((((union { double __d; int __i[2]; }) {__d: __x}).__i[1]
| 0x800fffffu) + 1) >> 31));
}
# 383 "/usr/include/math.h" 2 3 4
# 438 "/usr/include/math.h" 3 4
# 29 "render.h" 2
# 1 "/usr/include/stdio.h" 1 3 4
# 30 "/usr/include/stdio.h" 3 4
# 1 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/stddef.h" 1 3 4
# 35 "/usr/include/stdio.h" 2 3 4
# 44 "/usr/include/stdio.h" 3 4
typedef struct _IO_FILE FILE;
# 62 "/usr/include/stdio.h" 3 4
typedef struct _IO_FILE __FILE;
# 72 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/libio.h" 1 3 4
# 32 "/usr/include/libio.h" 3 4
# 1 "/usr/include/_G_config.h" 1 3 4
# 14 "/usr/include/_G_config.h" 3 4
# 1 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/stddef.h" 1 3 4
# 326 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/stddef.h" 3 4
typedef long int wchar_t;
# 355 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/stddef.h" 3 4
typedef unsigned int wint_t;
# 15 "/usr/include/_G_config.h" 2 3 4
# 24 "/usr/include/_G_config.h" 3 4
# 1 "/usr/include/wchar.h" 1 3 4
# 48 "/usr/include/wchar.h" 3 4
# 1 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/stddef.h" 1 3 4
# 49 "/usr/include/wchar.h" 2 3 4
# 1 "/usr/include/bits/wchar.h" 1 3 4
# 51 "/usr/include/wchar.h" 2 3 4
# 76 "/usr/include/wchar.h" 3 4
typedef struct
{
int __count;
union
{
wint_t __wch;
char __wchb[4];
} __value;
} __mbstate_t;
# 25 "/usr/include/_G_config.h" 2 3 4
typedef struct
{
__off_t __pos;
__mbstate_t __state;
} _G_fpos_t;
typedef struct
{
__off64_t __pos;
__mbstate_t __state;
} _G_fpos64_t;
# 44 "/usr/include/_G_config.h" 3 4
# 1 "/usr/include/gconv.h" 1 3 4
# 28 "/usr/include/gconv.h" 3 4
# 1 "/usr/include/wchar.h" 1 3 4
# 48 "/usr/include/wchar.h" 3 4
# 1 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/stddef.h" 1 3 4
# 49 "/usr/include/wchar.h" 2 3 4
# 29 "/usr/include/gconv.h" 2 3 4
# 1 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/stddef.h" 1 3 4
# 32 "/usr/include/gconv.h" 2 3 4
enum
{
__GCONV_OK = 0,
__GCONV_NOCONV,
__GCONV_NODB,
__GCONV_NOMEM,
__GCONV_EMPTY_INPUT,
__GCONV_FULL_OUTPUT,
__GCONV_ILLEGAL_INPUT,
__GCONV_INCOMPLETE_INPUT,
__GCONV_ILLEGAL_DESCRIPTOR,
__GCONV_INTERNAL_ERROR
};
enum
{
__GCONV_IS_LAST = 0x0001,
__GCONV_IGNORE_ERRORS = 0x0002
};
struct __gconv_step;
struct __gconv_step_data;
struct __gconv_loaded_object;
struct __gconv_trans_data;
typedef int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *,
__const unsigned char **, __const unsigned char *,
unsigned char **, size_t *, int, int);
typedef wint_t (*__gconv_btowc_fct) (struct __gconv_step *, unsigned char);
typedef int (*__gconv_init_fct) (struct __gconv_step *);
typedef void (*__gconv_end_fct) (struct __gconv_step *);
typedef int (*__gconv_trans_fct) (struct __gconv_step *,
struct __gconv_step_data *, void *,
__const unsigned char *,
__const unsigned char **,
__const unsigned char *, unsigned char **,
size_t *);
typedef int (*__gconv_trans_context_fct) (void *, __const unsigned char *,
__const unsigned char *,
unsigned char *, unsigned char *);
typedef int (*__gconv_trans_query_fct) (__const char *, __const char ***,
size_t *);
typedef int (*__gconv_trans_init_fct) (void **, const char *);
typedef void (*__gconv_trans_end_fct) (void *);
struct __gconv_trans_data
{
__gconv_trans_fct __trans_fct;
__gconv_trans_context_fct __trans_context_fct;
__gconv_trans_end_fct __trans_end_fct;
void *__data;
struct __gconv_trans_data *__next;
};
struct __gconv_step
{
struct __gconv_loaded_object *__shlib_handle;
__const char *__modname;
int __counter;
char *__from_name;
char *__to_name;
__gconv_fct __fct;
__gconv_btowc_fct __btowc_fct;
__gconv_init_fct __init_fct;
__gconv_end_fct __end_fct;
int __min_needed_from;
int __max_needed_from;
int __min_needed_to;
int __max_needed_to;
int __stateful;
void *__data;
};
struct __gconv_step_data
{
unsigned char *__outbuf;
unsigned char *__outbufend;
int __flags;
int __invocation_counter;
int __internal_use;
__mbstate_t *__statep;
__mbstate_t __state;
struct __gconv_trans_data *__trans;
};
typedef struct __gconv_info
{
size_t __nsteps;
struct __gconv_step *__steps;
__extension__ struct __gconv_step_data __data [];
} *__gconv_t;
# 45 "/usr/include/_G_config.h" 2 3 4
typedef union
{
struct __gconv_info __cd;
struct
{
struct __gconv_info __cd;
struct __gconv_step_data __data;
} __combined;
} _G_iconv_t;
typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
# 33 "/usr/include/libio.h" 2 3 4
# 53 "/usr/include/libio.h" 3 4
# 1 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/stdarg.h" 1 3 4
# 43 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/stdarg.h" 3 4
typedef __builtin_va_list __gnuc_va_list;
# 54 "/usr/include/libio.h" 2 3 4
# 166 "/usr/include/libio.h" 3 4
struct _IO_jump_t; struct _IO_FILE;
# 176 "/usr/include/libio.h" 3 4
typedef void _IO_lock_t;
struct _IO_marker {
struct _IO_marker *_next;
struct _IO_FILE *_sbuf;
int _pos;
# 199 "/usr/include/libio.h" 3 4
};
enum __codecvt_result
{
__codecvt_ok,
__codecvt_partial,
__codecvt_error,
__codecvt_noconv
};
# 267 "/usr/include/libio.h" 3 4
struct _IO_FILE {
int _flags;
char* _IO_read_ptr;
char* _IO_read_end;
char* _IO_read_base;
char* _IO_write_base;
char* _IO_write_ptr;
char* _IO_write_end;
char* _IO_buf_base;
char* _IO_buf_end;
char *_IO_save_base;
char *_IO_backup_base;
char *_IO_save_end;
struct _IO_marker *_markers;
struct _IO_FILE *_chain;
int _fileno;
int _flags2;
__off_t _old_offset;
unsigned short _cur_column;
signed char _vtable_offset;
char _shortbuf[1];
_IO_lock_t *_lock;
# 315 "/usr/include/libio.h" 3 4
__off64_t _offset;
void *__pad1;
void *__pad2;
int _mode;
char _unused2[15 * sizeof (int) - 2 * sizeof (void *)];
};
typedef struct _IO_FILE _IO_FILE;
struct _IO_FILE_plus;
extern struct _IO_FILE_plus _IO_2_1_stdin_;
extern struct _IO_FILE_plus _IO_2_1_stdout_;
extern struct _IO_FILE_plus _IO_2_1_stderr_;
# 354 "/usr/include/libio.h" 3 4
typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
size_t __n);
typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);
typedef int __io_close_fn (void *__cookie);
# 406 "/usr/include/libio.h" 3 4
extern int __underflow (_IO_FILE *) __attribute__ ((__nothrow__));
extern int __uflow (_IO_FILE *) __attribute__ ((__nothrow__));
extern int __overflow (_IO_FILE *, int) __attribute__ ((__nothrow__));
extern wint_t __wunderflow (_IO_FILE *) __attribute__ ((__nothrow__));
extern wint_t __wuflow (_IO_FILE *) __attribute__ ((__nothrow__));
extern wint_t __woverflow (_IO_FILE *, wint_t) __attribute__ ((__nothrow__));
# 444 "/usr/include/libio.h" 3 4
extern int _IO_getc (_IO_FILE *__fp) __attribute__ ((__nothrow__));
extern int _IO_putc (int __c, _IO_FILE *__fp) __attribute__ ((__nothrow__));
extern int _IO_feof (_IO_FILE *__fp) __attribute__ ((__nothrow__));
extern int _IO_ferror (_IO_FILE *__fp) __attribute__ ((__nothrow__));
extern int _IO_peekc_locked (_IO_FILE *__fp) __attribute__ ((__nothrow__));
extern void _IO_flockfile (_IO_FILE *) __attribute__ ((__nothrow__));
extern void _IO_funlockfile (_IO_FILE *) __attribute__ ((__nothrow__));
extern int _IO_ftrylockfile (_IO_FILE *) __attribute__ ((__nothrow__));
# 474 "/usr/include/libio.h" 3 4
extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
__gnuc_va_list, int *__restrict) __attribute__ ((__nothrow__));
extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
__gnuc_va_list) __attribute__ ((__nothrow__));
extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t) __attribute__ ((__nothrow__));
extern size_t _IO_sgetn (_IO_FILE *, void *, size_t) __attribute__ ((__nothrow__));
extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int) __attribute__ ((__nothrow__));
extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int) __attribute__ ((__nothrow__));
extern void _IO_free_backup_area (_IO_FILE *) __attribute__ ((__nothrow__));
# 73 "/usr/include/stdio.h" 2 3 4
# 86 "/usr/include/stdio.h" 3 4
typedef _G_fpos_t fpos_t;
# 138 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/bits/stdio_lim.h" 1 3 4
# 139 "/usr/include/stdio.h" 2 3 4
extern struct _IO_FILE *stdin;
extern struct _IO_FILE *stdout;
extern struct _IO_FILE *stderr;
extern int remove (__const char *__filename) __attribute__ ((__nothrow__));
extern int rename (__const char *__old, __const char *__new) __attribute__ ((__nothrow__));
extern FILE *tmpfile (void);
# 180 "/usr/include/stdio.h" 3 4
extern char *tmpnam (char *__s) __attribute__ ((__nothrow__));
extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__));
# 198 "/usr/include/stdio.h" 3 4
extern char *tempnam (__const char *__dir, __const char *__pfx)
__attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
extern int fclose (FILE *__stream);
extern int fflush (FILE *__stream);
# 223 "/usr/include/stdio.h" 3 4
extern int fflush_unlocked (FILE *__stream);
# 237 "/usr/include/stdio.h" 3 4
extern FILE *fopen (__const char *__restrict __filename,
__const char *__restrict __modes);
extern FILE *freopen (__const char *__restrict __filename,
__const char *__restrict __modes,
FILE *__restrict __stream);
# 264 "/usr/include/stdio.h" 3 4
# 275 "/usr/include/stdio.h" 3 4
extern FILE *fdopen (int __fd, __const char *__modes) __attribute__ ((__nothrow__));
# 296 "/usr/include/stdio.h" 3 4
extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__));
extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
int __modes, size_t __n) __attribute__ ((__nothrow__));
extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
size_t __size) __attribute__ ((__nothrow__));
extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__));
extern int fprintf (FILE *__restrict __stream,
__const char *__restrict __format, ...);
extern int printf (__const char *__restrict __format, ...);
extern int sprintf (char *__restrict __s,
__const char *__restrict __format, ...) __attribute__ ((__nothrow__));
extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
__gnuc_va_list __arg);
extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
__gnuc_va_list __arg) __attribute__ ((__nothrow__));
extern int snprintf (char *__restrict __s, size_t __maxlen,
__const char *__restrict __format, ...)
__attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));
extern int vsnprintf (char *__restrict __s, size_t __maxlen,
__const char *__restrict __format, __gnuc_va_list __arg)
__attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));
# 390 "/usr/include/stdio.h" 3 4
extern int fscanf (FILE *__restrict __stream,
__const char *__restrict __format, ...);
extern int scanf (__const char *__restrict __format, ...);
extern int sscanf (__const char *__restrict __s,
__const char *__restrict __format, ...) __attribute__ ((__nothrow__));
# 432 "/usr/include/stdio.h" 3 4
extern int fgetc (FILE *__stream);
extern int getc (FILE *__stream);
extern int getchar (void);
# 456 "/usr/include/stdio.h" 3 4
extern int getc_unlocked (FILE *__stream);
extern int getchar_unlocked (void);
# 467 "/usr/include/stdio.h" 3 4
extern int fgetc_unlocked (FILE *__stream);
extern int fputc (int __c, FILE *__stream);
extern int putc (int __c, FILE *__stream);
extern int putchar (int __c);
# 500 "/usr/include/stdio.h" 3 4
extern int fputc_unlocked (int __c, FILE *__stream);
extern int putc_unlocked (int __c, FILE *__stream);
extern int putchar_unlocked (int __c);
extern int getw (FILE *__stream);
extern int putw (int __w, FILE *__stream);
extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream);
extern char *gets (char *__s);
# 580 "/usr/include/stdio.h" 3 4
extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
extern int puts (__const char *__s);
extern int ungetc (int __c, FILE *__stream);
extern size_t fread (void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __stream);
extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __s);
# 633 "/usr/include/stdio.h" 3 4
extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __stream);
extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __stream);
extern int fseek (FILE *__stream, long int __off, int __whence);
extern long int ftell (FILE *__stream);
extern void rewind (FILE *__stream);
# 688 "/usr/include/stdio.h" 3 4
extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
# 711 "/usr/include/stdio.h" 3 4
# 720 "/usr/include/stdio.h" 3 4
extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__));
extern int feof (FILE *__stream) __attribute__ ((__nothrow__));
extern int ferror (FILE *__stream) __attribute__ ((__nothrow__));
extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
extern void perror (__const char *__s);
# 1 "/usr/include/bits/sys_errlist.h" 1 3 4
# 27 "/usr/include/bits/sys_errlist.h" 3 4
extern int sys_nerr;
extern __const char *__const sys_errlist[];
# 750 "/usr/include/stdio.h" 2 3 4
extern int fileno (FILE *__stream) __attribute__ ((__nothrow__));
extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
# 769 "/usr/include/stdio.h" 3 4
extern FILE *popen (__const char *__command, __const char *__modes);
extern int pclose (FILE *__stream);
extern char *ctermid (char *__s) __attribute__ ((__nothrow__));
# 809 "/usr/include/stdio.h" 3 4
extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__));
extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__));
extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__));
# 830 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/bits/stdio.h" 1 3 4
# 33 "/usr/include/bits/stdio.h" 3 4
extern __inline int
vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg)
{
return vfprintf (stdout, __fmt, __arg);
}
extern __inline int
getchar (void)
{
return _IO_getc (stdin);
}
extern __inline int
getc_unlocked (FILE *__fp)
{
return (__builtin_expect ((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end, 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
}
extern __inline int
getchar_unlocked (void)
{
return (__builtin_expect ((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end, 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
}
extern __inline int
putchar (int __c)
{
return _IO_putc (__c, stdout);
}
extern __inline int
fputc_unlocked (int __c, FILE *__stream)
{
return (__builtin_expect ((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end, 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}
extern __inline int
putc_unlocked (int __c, FILE *__stream)
{
return (__builtin_expect ((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end, 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}
extern __inline int
putchar_unlocked (int __c)
{
return (__builtin_expect ((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end, 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
}
# 111 "/usr/include/bits/stdio.h" 3 4
extern __inline int
__attribute__ ((__nothrow__)) feof_unlocked (FILE *__stream)
{
return (((__stream)->_flags & 0x10) != 0);
}
extern __inline int
__attribute__ ((__nothrow__)) ferror_unlocked (FILE *__stream)
{
return (((__stream)->_flags & 0x20) != 0);
}
# 831 "/usr/include/stdio.h" 2 3 4
# 30 "render.h" 2
# 1 "/usr/include/sys/types.h" 1 3 4
# 29 "/usr/include/sys/types.h" 3 4
typedef __u_char u_char;
typedef __u_short u_short;
typedef __u_int u_int;
typedef __u_long u_long;
typedef __quad_t quad_t;
typedef __u_quad_t u_quad_t;
typedef __fsid_t fsid_t;
typedef __loff_t loff_t;
typedef __ino_t ino_t;
# 62 "/usr/include/sys/types.h" 3 4
typedef __dev_t dev_t;
typedef __gid_t gid_t;
typedef __mode_t mode_t;
typedef __nlink_t nlink_t;
typedef __uid_t uid_t;
typedef __off_t off_t;
# 100 "/usr/include/sys/types.h" 3 4
typedef __pid_t pid_t;
typedef __id_t id_t;
typedef __ssize_t ssize_t;
typedef __daddr_t daddr_t;
typedef __caddr_t caddr_t;
typedef __key_t key_t;
# 133 "/usr/include/sys/types.h" 3 4
# 1 "/usr/include/time.h" 1 3 4
# 74 "/usr/include/time.h" 3 4
typedef __time_t time_t;
# 92 "/usr/include/time.h" 3 4
typedef __clockid_t clockid_t;
# 104 "/usr/include/time.h" 3 4
typedef __timer_t timer_t;
# 134 "/usr/include/sys/types.h" 2 3 4
# 147 "/usr/include/sys/types.h" 3 4
# 1 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/stddef.h" 1 3 4
# 148 "/usr/include/sys/types.h" 2 3 4
typedef unsigned long int ulong;
typedef unsigned short int ushort;
typedef unsigned int uint;
# 191 "/usr/include/sys/types.h" 3 4
typedef int int8_t __attribute__ ((__mode__ (__QI__)));
typedef int int16_t __attribute__ ((__mode__ (__HI__)));
typedef int int32_t __attribute__ ((__mode__ (__SI__)));
typedef int int64_t __attribute__ ((__mode__ (__DI__)));
typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));
typedef int register_t __attribute__ ((__mode__ (__word__)));
# 213 "/usr/include/sys/types.h" 3 4
# 1 "/usr/include/endian.h" 1 3 4
# 37 "/usr/include/endian.h" 3 4
# 1 "/usr/include/bits/endian.h" 1 3 4
# 38 "/usr/include/endian.h" 2 3 4
# 214 "/usr/include/sys/types.h" 2 3 4
# 1 "/usr/include/sys/select.h" 1 3 4
# 31 "/usr/include/sys/select.h" 3 4
# 1 "/usr/include/bits/select.h" 1 3 4
# 32 "/usr/include/sys/select.h" 2 3 4
# 1 "/usr/include/bits/sigset.h" 1 3 4
# 35 "/usr/include/sys/select.h" 2 3 4
# 44 "/usr/include/sys/select.h" 3 4
# 1 "/usr/include/time.h" 1 3 4
# 45 "/usr/include/sys/select.h" 2 3 4
# 1 "/usr/include/bits/time.h" 1 3 4
# 69 "/usr/include/bits/time.h" 3 4
struct timeval
{
__time_t tv_sec;
__suseconds_t tv_usec;
};
# 47 "/usr/include/sys/select.h" 2 3 4
typedef __suseconds_t suseconds_t;
typedef long int __fd_mask;
# 67 "/usr/include/sys/select.h" 3 4
typedef struct
{
__fd_mask __fds_bits[1024 / (8 * sizeof (__fd_mask))];
} fd_set;
typedef __fd_mask fd_mask;
# 99 "/usr/include/sys/select.h" 3 4
# 109 "/usr/include/sys/select.h" 3 4
extern int select (int __nfds, fd_set *__restrict __readfds,
fd_set *__restrict __writefds,
fd_set *__restrict __exceptfds,
struct timeval *__restrict __timeout);
# 128 "/usr/include/sys/select.h" 3 4
# 217 "/usr/include/sys/types.h" 2 3 4
# 1 "/usr/include/sys/sysmacros.h" 1 3 4
# 29 "/usr/include/sys/sysmacros.h" 3 4
__extension__
extern __inline unsigned int gnu_dev_major (unsigned long long int __dev)
__attribute__ ((__nothrow__));
__extension__
extern __inline unsigned int gnu_dev_minor (unsigned long long int __dev)
__attribute__ ((__nothrow__));
__extension__
extern __inline unsigned long long int gnu_dev_makedev (unsigned int __major,
unsigned int __minor)
__attribute__ ((__nothrow__));
__extension__ extern __inline unsigned int
__attribute__ ((__nothrow__)) gnu_dev_major (unsigned long long int __dev)
{
return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
}
__extension__ extern __inline unsigned int
__attribute__ ((__nothrow__)) gnu_dev_minor (unsigned long long int __dev)
{
return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
}
__extension__ extern __inline unsigned long long int
__attribute__ ((__nothrow__)) gnu_dev_makedev (unsigned int __major, unsigned int __minor)
{
return ((__minor & 0xff) | ((__major & 0xfff) << 8)
| (((unsigned long long int) (__minor & ~0xff)) << 12)
| (((unsigned long long int) (__major & ~0xfff)) << 32));
}
# 220 "/usr/include/sys/types.h" 2 3 4
# 231 "/usr/include/sys/types.h" 3 4
typedef __blkcnt_t blkcnt_t;
typedef __fsblkcnt_t fsblkcnt_t;
typedef __fsfilcnt_t fsfilcnt_t;
# 266 "/usr/include/sys/types.h" 3 4
# 1 "/usr/include/bits/pthreadtypes.h" 1 3 4
# 267 "/usr/include/sys/types.h" 2 3 4
# 32 "render.h" 2
# 1 "/usr/include/stdlib.h" 1 3 4
# 33 "/usr/include/stdlib.h" 3 4
# 1 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/stddef.h" 1 3 4
# 34 "/usr/include/stdlib.h" 2 3 4
# 96 "/usr/include/stdlib.h" 3 4
typedef struct
{
int quot;
int rem;
} div_t;
typedef struct
{
long int quot;
long int rem;
} ldiv_t;
# 140 "/usr/include/stdlib.h" 3 4
extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__));
extern double atof (__const char *__nptr)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
extern int atoi (__const char *__nptr)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
extern long int atol (__const char *__nptr)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
__extension__ extern long long int atoll (__const char *__nptr)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
extern double strtod (__const char *__restrict __nptr,
char **__restrict __endptr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
# 181 "/usr/include/stdlib.h" 3 4
extern long int strtol (__const char *__restrict __nptr,
char **__restrict __endptr, int __base)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern unsigned long int strtoul (__const char *__restrict __nptr,
char **__restrict __endptr, int __base)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
__extension__
extern long long int strtoq (__const char *__restrict __nptr,
char **__restrict __endptr, int __base)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
__extension__
extern unsigned long long int strtouq (__const char *__restrict __nptr,
char **__restrict __endptr, int __base)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
__extension__
extern long long int strtoll (__const char *__restrict __nptr,
char **__restrict __endptr, int __base)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
__extension__
extern unsigned long long int strtoull (__const char *__restrict __nptr,
char **__restrict __endptr, int __base)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
# 277 "/usr/include/stdlib.h" 3 4
extern double __strtod_internal (__const char *__restrict __nptr,
char **__restrict __endptr, int __group)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern float __strtof_internal (__const char *__restrict __nptr,
char **__restrict __endptr, int __group)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern long double __strtold_internal (__const char *__restrict __nptr,
char **__restrict __endptr,
int __group) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern long int __strtol_internal (__const char *__restrict __nptr,
char **__restrict __endptr,
int __base, int __group)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern unsigned long int __strtoul_internal (__const char *__restrict __nptr,
char **__restrict __endptr,
int __base, int __group)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
__extension__
extern long long int __strtoll_internal (__const char *__restrict __nptr,
char **__restrict __endptr,
int __base, int __group)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
__extension__
extern unsigned long long int __strtoull_internal (__const char *
__restrict __nptr,
char **__restrict __endptr,
int __base, int __group)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern __inline double
__attribute__ ((__nothrow__)) strtod (__const char *__restrict __nptr, char **__restrict __endptr)
{
return __strtod_internal (__nptr, __endptr, 0);
}
extern __inline long int
__attribute__ ((__nothrow__)) strtol (__const char *__restrict __nptr, char **__restrict __endptr, int __base)
{
return __strtol_internal (__nptr, __endptr, __base, 0);
}
extern __inline unsigned long int
__attribute__ ((__nothrow__)) strtoul (__const char *__restrict __nptr, char **__restrict __endptr, int __base)
{
return __strtoul_internal (__nptr, __endptr, __base, 0);
}
# 359 "/usr/include/stdlib.h" 3 4
__extension__ extern __inline long long int
__attribute__ ((__nothrow__)) strtoq (__const char *__restrict __nptr, char **__restrict __endptr, int __base)
{
return __strtoll_internal (__nptr, __endptr, __base, 0);
}
__extension__ extern __inline unsigned long long int
__attribute__ ((__nothrow__)) strtouq (__const char *__restrict __nptr, char **__restrict __endptr, int __base)
{
return __strtoull_internal (__nptr, __endptr, __base, 0);
}
__extension__ extern __inline long long int
__attribute__ ((__nothrow__)) strtoll (__const char *__restrict __nptr, char **__restrict __endptr, int __base)
{
return __strtoll_internal (__nptr, __endptr, __base, 0);
}
__extension__ extern __inline unsigned long long int
__attribute__ ((__nothrow__)) strtoull (__const char * __restrict __nptr, char **__restrict __endptr, int __base)
{
return __strtoull_internal (__nptr, __endptr, __base, 0);
}
extern __inline double
__attribute__ ((__nothrow__)) atof (__const char *__nptr)
{
return strtod (__nptr, (char **) ((void *)0));
}
extern __inline int
__attribute__ ((__nothrow__)) atoi (__const char *__nptr)
{
return (int) strtol (__nptr, (char **) ((void *)0), 10);
}
extern __inline long int
__attribute__ ((__nothrow__)) atol (__const char *__nptr)
{
return strtol (__nptr, (char **) ((void *)0), 10);
}
__extension__ extern __inline long long int
__attribute__ ((__nothrow__)) atoll (__const char *__nptr)
{
return strtoll (__nptr, (char **) ((void *)0), 10);
}
# 424 "/usr/include/stdlib.h" 3 4
extern char *l64a (long int __n) __attribute__ ((__nothrow__));
extern long int a64l (__const char *__s)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
# 440 "/usr/include/stdlib.h" 3 4
extern long int random (void) __attribute__ ((__nothrow__));
extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__));
extern char *initstate (unsigned int __seed, char *__statebuf,
size_t __statelen) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
struct random_data
{
int32_t *fptr;
int32_t *rptr;
int32_t *state;
int rand_type;
int rand_deg;
int rand_sep;
int32_t *end_ptr;
};
extern int random_r (struct random_data *__restrict __buf,
int32_t *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int srandom_r (unsigned int __seed, struct random_data *__buf)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
size_t __statelen,
struct random_data *__restrict __buf)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
extern int setstate_r (char *__restrict __statebuf,
struct random_data *__restrict __buf)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int rand (void) __attribute__ ((__nothrow__));
extern void srand (unsigned int __seed) __attribute__ ((__nothrow__));
extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__));
extern double drand48 (void) __attribute__ ((__nothrow__));
extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern long int lrand48 (void) __attribute__ ((__nothrow__));
extern long int nrand48 (unsigned short int __xsubi[3])
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern long int mrand48 (void) __attribute__ ((__nothrow__));
extern long int jrand48 (unsigned short int __xsubi[3])
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern void srand48 (long int __seedval) __attribute__ ((__nothrow__));
extern unsigned short int *seed48 (unsigned short int __seed16v[3])
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
struct drand48_data
{
unsigned short int __x[3];
unsigned short int __old_x[3];
unsigned short int __c;
unsigned short int __init;
unsigned long long int __a;
};
extern int drand48_r (struct drand48_data *__restrict __buffer,
double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int erand48_r (unsigned short int __xsubi[3],
struct drand48_data *__restrict __buffer,
double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int lrand48_r (struct drand48_data *__restrict __buffer,
long int *__restrict __result)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int nrand48_r (unsigned short int __xsubi[3],
struct drand48_data *__restrict __buffer,
long int *__restrict __result)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int mrand48_r (struct drand48_data *__restrict __buffer,
long int *__restrict __result)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int jrand48_r (unsigned short int __xsubi[3],
struct drand48_data *__restrict __buffer,
long int *__restrict __result)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
extern int seed48_r (unsigned short int __seed16v[3],
struct drand48_data *__buffer) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int lcong48_r (unsigned short int __param[7],
struct drand48_data *__buffer)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern void *malloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
extern void *calloc (size_t __nmemb, size_t __size)
__attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
extern void *realloc (void *__ptr, size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
extern void free (void *__ptr) __attribute__ ((__nothrow__));
extern void cfree (void *__ptr) __attribute__ ((__nothrow__));
# 1 "/usr/include/alloca.h" 1 3 4
# 25 "/usr/include/alloca.h" 3 4
# 1 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/stddef.h" 1 3 4
# 26 "/usr/include/alloca.h" 2 3 4
extern void *alloca (size_t __size) __attribute__ ((__nothrow__));
# 607 "/usr/include/stdlib.h" 2 3 4
extern void *valloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
# 620 "/usr/include/stdlib.h" 3 4
extern void abort (void) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern void exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
# 652 "/usr/include/stdlib.h" 3 4
extern char *getenv (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern char *__secure_getenv (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int putenv (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int setenv (__const char *__name, __const char *__value, int __replace)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int unsetenv (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int clearenv (void) __attribute__ ((__nothrow__));
# 691 "/usr/include/stdlib.h" 3 4
extern char *mktemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
# 702 "/usr/include/stdlib.h" 3 4
extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1)));
# 721 "/usr/include/stdlib.h" 3 4
extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int system (__const char *__command);
# 749 "/usr/include/stdlib.h" 3 4
extern char *realpath (__const char *__restrict __name,
char *__restrict __resolved) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
typedef int (*__compar_fn_t) (__const void *, __const void *);
extern void *bsearch (__const void *__key, __const void *__base,
size_t __nmemb, size_t __size, __compar_fn_t __compar)
__attribute__ ((__nonnull__ (1, 2, 5)));
extern void qsort (void *__base, size_t __nmemb, size_t __size,
__compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));
extern int abs (int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern long int labs (long int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern div_t div (int __numer, int __denom)
__attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern ldiv_t ldiv (long int __numer, long int __denom)
__attribute__ ((__nothrow__)) __attribute__ ((__const__));
# 814 "/usr/include/stdlib.h" 3 4
extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4)));
extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4)));
extern char *gcvt (double __value, int __ndigit, char *__buf)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3)));
extern char *qecvt (long double __value, int __ndigit,
int *__restrict __decpt, int *__restrict __sign)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4)));
extern char *qfcvt (long double __value, int __ndigit,
int *__restrict __decpt, int *__restrict __sign)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4)));
extern char *qgcvt (long double __value, int __ndigit, char *__buf)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3)));
extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
int *__restrict __sign, char *__restrict __buf,
size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
int *__restrict __sign, char *__restrict __buf,
size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
extern int qecvt_r (long double __value, int __ndigit,
int *__restrict __decpt, int *__restrict __sign,
char *__restrict __buf, size_t __len)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
extern int qfcvt_r (long double __value, int __ndigit,
int *__restrict __decpt, int *__restrict __sign,
char *__restrict __buf, size_t __len)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
extern int mblen (__const char *__s, size_t __n) __attribute__ ((__nothrow__));
extern int mbtowc (wchar_t *__restrict __pwc,
__const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__));
extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__));
extern size_t mbstowcs (wchar_t *__restrict __pwcs,
__const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__));
extern size_t wcstombs (char *__restrict __s,
__const wchar_t *__restrict __pwcs, size_t __n)
__attribute__ ((__nothrow__));
extern int rpmatch (__const char *__response) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
# 954 "/usr/include/stdlib.h" 3 4
extern int getloadavg (double __loadavg[], int __nelem)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
# 35 "render.h" 2
# 1 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/stddef.h" 1 3 4
# 152 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/stddef.h" 3 4
typedef int ptrdiff_t;
# 38 "render.h" 2
# 1 "/usr/include/strings.h" 1 3 4
# 29 "/usr/include/strings.h" 3 4
# 1 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/stddef.h" 1 3 4
# 30 "/usr/include/strings.h" 2 3 4
extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__));
extern void bcopy (__const void *__src, void *__dest, size_t __n) __attribute__ ((__nothrow__));
extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__));
extern int ffs (int __i) __attribute__ ((__nothrow__)) __attribute__ ((const));
extern char *index (__const char *__s, int __c) __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
extern char *rindex (__const char *__s, int __c) __attribute__ ((__nothrow__)) __attribute__ ((__pure__));
extern int strcasecmp (__const char *__s1, __const char *__s2)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__));
extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__));
# 41 "render.h" 2
# 1 "/usr/include/string.h" 1 3 4
# 28 "/usr/include/string.h" 3 4
# 1 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/stddef.h" 1 3 4
# 34 "/usr/include/string.h" 2 3 4
extern void *memcpy (void *__restrict __dest,
__const void *__restrict __src, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern void *memmove (void *__dest, __const void *__src, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
int __c, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern void *memchr (__const void *__s, int __c, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
# 82 "/usr/include/string.h" 3 4
extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strncpy (char *__restrict __dest,
__const char *__restrict __src, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int strcmp (__const char *__s1, __const char *__s2)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern int strcoll (__const char *__s1, __const char *__s2)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern size_t strxfrm (char *__restrict __dest,
__const char *__restrict __src, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
# 130 "/usr/include/string.h" 3 4
extern char *strdup (__const char *__s)
__attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
# 165 "/usr/include/string.h" 3 4
extern char *strchr (__const char *__s, int __c)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
extern char *strrchr (__const char *__s, int __c)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
# 181 "/usr/include/string.h" 3 4
extern size_t strcspn (__const char *__s, __const char *__reject)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern size_t strspn (__const char *__s, __const char *__accept)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strpbrk (__const char *__s, __const char *__accept)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strstr (__const char *__haystack, __const char *__needle)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
extern char *__strtok_r (char *__restrict __s,
__const char *__restrict __delim,
char **__restrict __save_ptr)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
char **__restrict __save_ptr)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
# 240 "/usr/include/string.h" 3 4
extern size_t strlen (__const char *__s)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
# 254 "/usr/include/string.h" 3 4
extern char *strerror (int __errnum) __attribute__ ((__nothrow__));
# 281 "/usr/include/string.h" 3 4
extern char *strerror_r (int __errnum, char *__buf, size_t __buflen)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
extern void __bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern void bcopy (__const void *__src, void *__dest, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *index (__const char *__s, int __c)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
extern char *rindex (__const char *__s, int __c)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
extern int ffs (int __i) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
# 325 "/usr/include/string.h" 3 4
extern int strcasecmp (__const char *__s1, __const char *__s2)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 348 "/usr/include/string.h" 3 4
extern char *strsep (char **__restrict __stringp,
__const char *__restrict __delim)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
# 414 "/usr/include/string.h" 3 4
# 1 "/usr/include/bits/string.h" 1 3 4
# 415 "/usr/include/string.h" 2 3 4
# 1 "/usr/include/bits/string2.h" 1 3 4
# 394 "/usr/include/bits/string2.h" 3 4
extern void *__rawmemchr (const void *__s, int __c);
# 969 "/usr/include/bits/string2.h" 3 4
extern __inline size_t __strcspn_c1 (__const char *__s, int __reject);
extern __inline size_t
__strcspn_c1 (__const char *__s, int __reject)
{
register size_t __result = 0;
while (__s[__result] != '\0' && __s[__result] != __reject)
++__result;
return __result;
}
extern __inline size_t __strcspn_c2 (__const char *__s, int __reject1,
int __reject2);
extern __inline size_t
__strcspn_c2 (__const char *__s, int __reject1, int __reject2)
{
register size_t __result = 0;
while (__s[__result] != '\0' && __s[__result] != __reject1
&& __s[__result] != __reject2)
++__result;
return __result;
}
extern __inline size_t __strcspn_c3 (__const char *__s, int __reject1,
int __reject2, int __reject3);
extern __inline size_t
__strcspn_c3 (__const char *__s, int __reject1, int __reject2,
int __reject3)
{
register size_t __result = 0;
while (__s[__result] != '\0' && __s[__result] != __reject1
&& __s[__result] != __reject2 && __s[__result] != __reject3)
++__result;
return __result;
}
# 1045 "/usr/include/bits/string2.h" 3 4
extern __inline size_t __strspn_c1 (__const char *__s, int __accept);
extern __inline size_t
__strspn_c1 (__const char *__s, int __accept)
{
register size_t __result = 0;
while (__s[__result] == __accept)
++__result;
return __result;
}
extern __inline size_t __strspn_c2 (__const char *__s, int __accept1,
int __accept2);
extern __inline size_t
__strspn_c2 (__const char *__s, int __accept1, int __accept2)
{
register size_t __result = 0;
while (__s[__result] == __accept1 || __s[__result] == __accept2)
++__result;
return __result;
}
extern __inline size_t __strspn_c3 (__const char *__s, int __accept1,
int __accept2, int __accept3);
extern __inline size_t
__strspn_c3 (__const char *__s, int __accept1, int __accept2, int __accept3)
{
register size_t __result = 0;
while (__s[__result] == __accept1 || __s[__result] == __accept2
|| __s[__result] == __accept3)
++__result;
return __result;
}
# 1121 "/usr/include/bits/string2.h" 3 4
extern __inline char *__strpbrk_c2 (__const char *__s, int __accept1,
int __accept2);
extern __inline char *
__strpbrk_c2 (__const char *__s, int __accept1, int __accept2)
{
while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
++__s;
return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
}
extern __inline char *__strpbrk_c3 (__const char *__s, int __accept1,
int __accept2, int __accept3);
extern __inline char *
__strpbrk_c3 (__const char *__s, int __accept1, int __accept2,
int __accept3)
{
while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
&& *__s != __accept3)
++__s;
return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
}
# 1173 "/usr/include/bits/string2.h" 3 4
extern __inline char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
extern __inline char *
__strtok_r_1c (char *__s, char __sep, char **__nextp)
{
char *__result;
if (__s == ((void *)0))
__s = *__nextp;
while (*__s == __sep)
++__s;
__result = ((void *)0);
if (*__s != '\0')
{
__result = __s++;
while (*__s != '\0')
if (*__s++ == __sep)
{
__s[-1] = '\0';
break;
}
*__nextp = __s;
}
return __result;
}
# 1205 "/usr/include/bits/string2.h" 3 4
extern char *__strsep_g (char **__stringp, __const char *__delim);
# 1223 "/usr/include/bits/string2.h" 3 4
extern __inline char *__strsep_1c (char **__s, char __reject);
extern __inline char *
__strsep_1c (char **__s, char __reject)
{
register char *__retval = *__s;
if (__retval != ((void *)0) && (*__s = (__extension__ (__builtin_constant_p (__reject) && !__builtin_constant_p (__retval) && (__reject) == '\0' ? (char *) __rawmemchr (__retval, __reject) : __builtin_strchr (__retval, __reject)))) != ((void *)0))
*(*__s)++ = '\0';
return __retval;
}
extern __inline char *__strsep_2c (char **__s, char __reject1, char __reject2);
extern __inline char *
__strsep_2c (char **__s, char __reject1, char __reject2)
{
register char *__retval = *__s;
if (__retval != ((void *)0))
{
register char *__cp = __retval;
while (1)
{
if (*__cp == '\0')
{
__cp = ((void *)0);
break;
}
if (*__cp == __reject1 || *__cp == __reject2)
{
*__cp++ = '\0';
break;
}
++__cp;
}
*__s = __cp;
}
return __retval;
}
extern __inline char *__strsep_3c (char **__s, char __reject1, char __reject2,
char __reject3);
extern __inline char *
__strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
{
register char *__retval = *__s;
if (__retval != ((void *)0))
{
register char *__cp = __retval;
while (1)
{
if (*__cp == '\0')
{
__cp = ((void *)0);
break;
}
if (*__cp == __reject1 || *__cp == __reject2 || *__cp == __reject3)
{
*__cp++ = '\0';
break;
}
++__cp;
}
*__s = __cp;
}
return __retval;
}
# 1304 "/usr/include/bits/string2.h" 3 4
extern char *__strdup (__const char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
# 1323 "/usr/include/bits/string2.h" 3 4
extern char *__strndup (__const char *__string, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
# 418 "/usr/include/string.h" 2 3 4
# 426 "/usr/include/string.h" 3 4
# 44 "render.h" 2
# 1 "macros.h" 1
# 47 "render.h" 2
# 1 "const.h" 1
# 48 "render.h" 2
# 1 "types.h" 1
# 13 "types.h"
# 1 "../../pathplan/pathplan.h" 1
# 15 "../../pathplan/pathplan.h"
# 1 "../../pathplan/pathgeom.h" 1
# 18 "../../pathplan/pathgeom.h"
typedef struct Pxy_t {
double x, y;
} Pxy_t;
typedef struct Pxy_t Ppoint_t;
typedef struct Pxy_t Pvector_t;
typedef struct Ppoly_t {
Ppoint_t *ps;
int pn;
} Ppoly_t;
typedef Ppoly_t Ppolyline_t;
typedef struct Pedge_t {
Ppoint_t a, b;
} Pedge_t;
typedef struct vconfig_s vconfig_t;
# 16 "../../pathplan/pathplan.h" 2
# 27 "../../pathplan/pathplan.h"
extern int Pshortestpath(Ppoly_t *boundary, Ppoint_t endpoints[2],
Ppolyline_t *output_route);
extern int Proutespline (Pedge_t *barriers, int n_barriers,
Ppolyline_t input_route, Pvector_t endpoint_slopes[2],
Ppolyline_t *output_route);
extern int Ppolybarriers(Ppoly_t **polys, int npolys, Pedge_t **barriers, int *n_barriers);
# 14 "types.h" 2
typedef unsigned char boolean;
typedef int (*qsort_cmpf)(const void*, const void*);
typedef int (*bsearch_cmpf) (const void *, const void *);
typedef struct Agraph_t graph_t;
typedef struct Agnode_t node_t;
typedef struct Agedge_t edge_t;
typedef struct Agsym_t attrsym_t;
typedef struct GVC_s GVC_t;
typedef struct gvrender_engine_s gvrender_engine_t;
typedef struct htmllabel_t htmllabel_t;
typedef struct pointf {
double x,y;
} pointf;
typedef struct inside_t {
pointf *p;
double *r;
node_t *n;
edge_t *e;
} inside_t;
typedef struct point {
int x,y;
} point;
typedef struct box {
point LL,UR;
} box;
typedef struct port {
point p;
double theta;
box* bp;
boolean constrained,defined;
unsigned char order;
} port;
typedef struct {
boolean (*swapEnds) (edge_t *e);
boolean (*splineMerge)(node_t* n);
} splineInfo;
typedef struct pathend_t {
box nb;
point np;
int sidemask;
int boxn;
box boxes[20];
} pathend_t;
typedef struct path {
port start,end;
point *ulpp, *urpp, *llpp, *lrpp;
int nbox;
box *boxes;
void *data;
} path;
typedef struct bezier {
point *list;
int size;
int sflag, eflag;
point sp, ep;
} bezier;
typedef struct splines {
bezier *list;
int size;
} splines;
typedef struct bezierf {
pointf *list;
int size;
int sflag, eflag;
pointf sp, ep;
} bezierf;
typedef struct splinesf {
bezierf *list;
int size;
} splinesf;
typedef struct textline_t {
char *str;
char *xshow;
double width;
char just;
} textline_t;
typedef struct textlabel_t {
char *text, *fontname,*fontcolor;
double fontsize;
pointf dimen;
point p;
pointf d;
union {
struct {
textline_t *line;
short nlines;
} txt;
htmllabel_t* html;
} u;
boolean set;
boolean html;
} textlabel_t;
typedef struct polygon_t {
int regular;
int peripheries;
int sides;
double orientation;
double distortion;
double skew;
int option;
pointf *vertices;
} polygon_t;
typedef struct stroke_t {
int nvertices;
int flags;
pointf *vertices;
} stroke_t;
typedef struct shape_t {
int nstrokes;
stroke_t *strokes;
} shape_t;
typedef struct shape_functions {
void (*initfn)(node_t *);
void (*freefn)(node_t *);
port (*portfn)(node_t *, char *, char*);
boolean (*insidefn)(inside_t *inside_context, pointf);
int (*pboxfn)(node_t *n, edge_t *e, int, box *, int *);
void (*codefn)(GVC_t *gvc, node_t *n);
} shape_functions;
typedef enum {SH_UNSET, SH_POLY, SH_RECORD, SH_POINT, SH_EPSF, SH_USER} shape_kind;
typedef struct shape_desc {
char *name;
shape_functions *fns;
polygon_t *polygon;
boolean usershape;
} shape_desc;
typedef struct codegen_t {
void (*reset)(void);
void (*begin_job)(FILE *ofp, graph_t *g, char **lib, char *user, char *info[], point pages);
void (*end_job)(void);
void (*begin_graph)(GVC_t *gvc, graph_t* g, box bb, point pb);
void (*end_graph)(void);
void (*begin_page)(graph_t *g, point page, double scale, int rot, point offset);
void (*end_page)(void);
void (*begin_layer)(char *layerName, int n, int nLayers);
void (*end_layer)(void);
void (*begin_cluster)(graph_t *g);
void (*end_cluster)(void);
void (*begin_nodes)(void);
void (*end_nodes)(void);
void (*begin_edges)(void);
void (*end_edges)(void);
void (*begin_node)(node_t *n);
void (*end_node)(void);
void (*begin_edge)(edge_t *e);
void (*end_edge)(void);
void (*begin_context)(void);
void (*end_context)(void);
void (*begin_anchor)(char *href, char *tooltip, char *target);
void (*end_anchor)(void);
void (*set_font)(char *fontname, double fontsize);
void (*textline)(point p, textline_t *str);
void (*set_pencolor)(char *name);
void (*set_fillcolor)(char *name);
void (*set_style)(char **s);
void (*ellipse)(point p, int rx, int ry, int filled);
void (*polygon)(point *A, int n, int filled);
void (*beziercurve)(point *A, int n, int arrow_at_start, int arrow_at_end);
void (*polyline)(point *A,int n);
boolean bezier_has_arrows;
void (*comment)(void* obj, attrsym_t* sym);
void (*textsize)(void);
void (*user_shape)(char *name, point *A, int sides, int filled);
void (*usershapesize)(void);
} codegen_t;
typedef struct codegen_info_t {
codegen_t *cg;
char *name;
int id;
void *info;
} codegen_info_t;
typedef struct queue {
node_t **store,**limit,**head,**tail;
} queue;
typedef struct adjmatrix_t {
int nrows,ncols;
char *data;
} adjmatrix_t;
typedef struct rank_t {
int n;
node_t **v;
int an;
node_t **av;
int ht1,ht2;
int pht1,pht2;
boolean candidate;
boolean valid;
int cache_nc;
adjmatrix_t *flat;
} rank_t;
typedef enum engine_e {DOT, NEATO, TWOPI, FDP, CIRCULAR} engine_t;
typedef enum {R_NONE = 0, R_VALUE, R_FILL, R_COMPRESS, R_AUTO, R_EXPAND} ratio_t;
typedef struct layout_t {
double quantum,scale;
double ratio;
double dpi;
point margin, page, size;
boolean filled, landscape,centered;
ratio_t ratio_kind;
engine_t engine;
} layout_t;
typedef struct field_t {
point size;
box b;
int n_flds;
textlabel_t *lp;
struct field_t **fld;
int LR;
char *id;
} field_t;
typedef struct hsbcolor_t {
char *name;
unsigned char h,s,b;
} hsbcolor_t;
typedef enum {HSV_DOUBLE, RGBA_BYTE, RGBA_WORD, CMYK_BYTE, RGBA_DOUBLE, COLOR_STRING, COLOR_INDEX} color_type_t;
typedef struct color_s {
union {
double RGBA[4];
double HSV[3];
unsigned char rgba[4];
unsigned char cmyk[4];
int rrggbbaa[4];
char *string;
int index;
} u;
color_type_t type;
} color_t;
typedef struct nlist_t {
node_t **list;
int size;
} nlist_t;
typedef struct elist {
edge_t **list;
int size;
} elist;
typedef struct Agraphinfo_t {
layout_t *drawing;
textlabel_t *label;
box bb;
point border[4];
boolean has_labels,has_images,has_Latin1char;
int rankdir;
int ht1,ht2;
unsigned short flags;
void* alg;
node_t **neato_nlist;
int move;
double **dist,**spring,**sum_t,***t;
int ndim;
int n_cluster;
graph_t **clust;
node_t *nlist;
rank_t *rank;
nlist_t comp;
node_t *minset,*maxset;
long n_nodes;
short minrank,maxrank;
boolean has_flat_edges;
boolean showboxes;
boolean cluster_was_collapsed;
int nodesep,ranksep;
node_t *ln,*rn;
node_t *leader,**rankleader;
boolean expanded;
char installed;
char set_type;
char label_pos;
boolean exact_ranksep;
} Agraphinfo_t;
# 418 "types.h"
typedef struct Agnodeinfo_t {
shape_desc *shape;
void *shape_info;
point coord;
double width,height;
int ht,lw,rw;
textlabel_t *label;
void* alg;
char state;
boolean clustnode;
short xsize,ysize;
int id,heapindex,hops;
double *pos,dist;
boolean pinned;
boolean showboxes,has_port;
char node_type,mark,onstack;
char ranktype,weight_class;
node_t *next,*prev;
elist in,out,flat_out,flat_in,other;
graph_t *clust;
int UF_size;
node_t *UF_parent;
node_t *inleaf,*outleaf;
int rank,order;
int mval;
elist save_in,save_out;
elist tree_in,tree_out;
edge_t *par;
int low,lim;
int priority;
double pad[1];
} Agnodeinfo_t;
# 518 "types.h"
typedef struct Agedgeinfo_t {
splines *spl;
port tail_port,head_port;
textlabel_t *label,*head_label,*tail_label;
char edge_type;
char label_ontop;
edge_t *to_orig;
void* alg;
double factor;
double dist;
Ppolyline_t path;
boolean showboxes;
boolean conc_opp_flag;
short xpenalty;
int weight;
int cutvalue,tree_index;
short count,minlen;
edge_t *to_virt;
} Agedgeinfo_t;
# 49 "render.h" 2
# 1 "../../graph/graph.h" 1
# 22 "../../graph/graph.h"
# 1 "../../cdt/cdt.h" 1
# 23 "../../cdt/cdt.h"
# 1 "../../ast_common.h" 1
# 1 "../../config.h" 1
# 6 "../../ast_common.h" 2
# 155 "../../ast_common.h"
# 1 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/stdarg.h" 1 3 4
# 105 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/stdarg.h" 3 4
typedef __gnuc_va_list va_list;
# 156 "../../ast_common.h" 2
# 203 "../../ast_common.h"
# 1 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/limits.h" 1 3 4
# 204 "../../ast_common.h" 2
# 24 "../../cdt/cdt.h" 2
typedef struct _dtlink_s Dtlink_t;
typedef struct _dthold_s Dthold_t;
typedef struct _dtdisc_s Dtdisc_t;
typedef struct _dtmethod_s Dtmethod_t;
typedef struct _dtdata_s Dtdata_t;
typedef struct _dt_s Dt_t;
typedef struct _dt_s Dict_t;
typedef struct _dtstat_s Dtstat_t;
typedef void* (*Dtsearch_f)(Dt_t*,void*,int);
typedef void* (*Dtmake_f)(Dt_t*,void*,Dtdisc_t*);
typedef void (*Dtfree_f)(Dt_t*,void*,Dtdisc_t*);
typedef int (*Dtcompar_f)(Dt_t*,void*,void*,Dtdisc_t*);
typedef unsigned int (*Dthash_f)(Dt_t*,void*,Dtdisc_t*);
typedef void* (*Dtmemory_f)(Dt_t*,void*,size_t,Dtdisc_t*);
typedef int (*Dtevent_f)(Dt_t*,int,void*,Dtdisc_t*);
struct _dtlink_s
{ Dtlink_t* right;
union
{ unsigned int _hash;
Dtlink_t* _left;
} hl;
};
struct _dthold_s
{ Dtlink_t hdr;
void* obj;
};
struct _dtmethod_s
{ Dtsearch_f searchf;
int type;
};
struct _dtdata_s
{ int type;
Dtlink_t* here;
union
{ Dtlink_t** _htab;
Dtlink_t* _head;
} hh;
int ntab;
int size;
int loop;
};
struct _dtdisc_s
{ int key;
int size;
int link;
Dtmake_f makef;
Dtfree_f freef;
Dtcompar_f comparf;
Dthash_f hashf;
Dtmemory_f memoryf;
Dtevent_f eventf;
};
struct _dt_s
{ Dtsearch_f searchf;
Dtdisc_t* disc;
Dtdata_t* data;
Dtmemory_f memoryf;
Dtmethod_t* meth;
int type;
int nview;
Dt_t* view;
Dt_t* walk;
};
struct _dtstat_s
{ int dt_meth;
int dt_size;
int dt_n;
int dt_max;
int* dt_count;
};
# 149 "../../cdt/cdt.h"
extern Dtmethod_t* Dtset;
extern Dtmethod_t* Dtbag;
extern Dtmethod_t* Dtoset;
extern Dtmethod_t* Dtobag;
extern Dtmethod_t* Dtlist;
extern Dtmethod_t* Dtstack;
extern Dtmethod_t* Dtqueue;
extern Dtmethod_t* Dtorder;
extern Dtmethod_t* Dttree;
extern Dtmethod_t* Dthash;
extern Dtmethod_t _Dttree;
extern Dtmethod_t _Dthash;
extern Dtmethod_t _Dtlist;
extern Dtmethod_t _Dtqueue;
extern Dtmethod_t _Dtstack;
extern Dt_t* dtopen (Dtdisc_t*, Dtmethod_t*);
extern int dtclose (Dt_t*);
extern Dt_t* dtview (Dt_t*, Dt_t*);
extern Dtdisc_t* dtdisc (Dt_t* dt, Dtdisc_t*, int);
extern Dtmethod_t* dtmethod (Dt_t*, Dtmethod_t*);
extern Dtlink_t* dtflatten (Dt_t*);
extern Dtlink_t* dtextract (Dt_t*);
extern int dtrestore (Dt_t*, Dtlink_t*);
extern int dtwalk (Dt_t*, int(*)(Dt_t*,void*,void*), void*);
extern void* dtrenew (Dt_t*, void*);
extern int dtsize (Dt_t*);
extern int dtstat (Dt_t*, Dtstat_t*, int);
extern unsigned int dtstrhash (unsigned int, void*, int);
# 23 "../../graph/graph.h" 2
# 33 "../../graph/graph.h"
typedef struct Agraph_t Agraph_t;
typedef struct Agnode_t Agnode_t;
typedef struct Agedge_t Agedge_t;
typedef struct Agdict_t Agdict_t;
typedef struct Agsym_t Agsym_t;
typedef struct Agdata_t Agdata_t;
typedef struct Agproto_t Agproto_t;
typedef char * (*gets_f)(char *ubuf, int n, FILE *fp);
# 58 "../../graph/graph.h"
struct Agraph_t {
int tag : 4;
int kind : 4;
int handle: 24;
char **attr;
char *name;
Agdata_t *univ;
Dict_t *nodes,*inedges,*outedges;
Agraph_t *root;
Agnode_t *meta_node;
Agproto_t *proto;
Agraphinfo_t u;
};
struct Agnode_t {
int tag : 4;
int pad : 4;
int handle: 24;
char **attr;
char *name;
int id;
Agraph_t *graph;
Agnodeinfo_t u;
};
struct Agedge_t {
int tag : 4;
int printkey : 4;
int handle: 24;
char **attr;
Agnode_t *head,*tail;
int id;
Agedgeinfo_t u;
};
struct Agdata_t {
Dict_t *node_dict;
Agdict_t *nodeattr;
Agdict_t *edgeattr;
Agdict_t *globattr;
int max_node_id, max_edge_id;
};
struct Agsym_t {
char *name,*value;
int index;
unsigned char printed;
unsigned char fixed;
};
struct Agdict_t {
char *name;
Dict_t *dict;
Agsym_t **list;
};
struct Agproto_t {
Agnode_t *n;
Agedge_t *e;
Agproto_t *prev;
};
# 130 "../../graph/graph.h"
extern char *agstrcanon(char *, char *);
extern int aghtmlstr (char* s);
extern char *agget(void*, char *);
extern char *agxget(void*, int);
extern int agset(void*, char *, char *);
extern int agxset(void*, int, char *);
extern int agindex(void*, char *);
extern void aginitlib(int, int, int);
extern Agraph_t *agopen(char *, int);
extern Agraph_t *agsubg(Agraph_t *, char *);
extern Agraph_t *agfindsubg(Agraph_t *, char *);
extern void agclose(Agraph_t *);
extern Agraph_t *agread(FILE *);
extern Agraph_t *agread_usergets(FILE *, gets_f);
extern void agreadline(int);
extern void agsetfile(char*);
extern Agraph_t *agmemread(char *);
extern int agwrite(Agraph_t *, FILE *);
extern int agerrors(void);
extern Agraph_t *agprotograph();
extern Agraph_t *agusergraph(Agnode_t *);
extern int agnnodes(Agraph_t *);
extern int agnedges(Agraph_t *);
extern void aginsert(Agraph_t *, void*);
extern void agdelete(Agraph_t *, void*);
extern int agcontains(Agraph_t *, void*);
extern Agnode_t *agnode(Agraph_t *, char *);
extern Agsym_t *agnodeattr(Agraph_t *, char *, char *);
extern Agnode_t *agfindnode(Agraph_t *, char *);
extern Agnode_t *agfstnode(Agraph_t *);
extern Agnode_t *agnxtnode(Agraph_t *, Agnode_t *);
extern Agnode_t *aglstnode(Agraph_t *);
extern Agnode_t *agprvnode(Agraph_t *, Agnode_t *);
extern Agedge_t *agedge(Agraph_t *, Agnode_t *, Agnode_t *);
extern Agsym_t *agedgeattr(Agraph_t *, char *, char *);
extern Agedge_t *agfindedge(Agraph_t *, Agnode_t *, Agnode_t *);
extern Agedge_t *agfstedge(Agraph_t *, Agnode_t *);
extern Agedge_t *agnxtedge(Agraph_t *, Agedge_t *, Agnode_t *);
extern Agedge_t *agfstin(Agraph_t *, Agnode_t *);
extern Agedge_t *agnxtin(Agraph_t *, Agedge_t *);
extern Agedge_t *agfstout(Agraph_t *, Agnode_t *);
extern Agedge_t *agnxtout(Agraph_t *, Agedge_t *);
extern Agsym_t *agraphattr(Agraph_t *, char *, char *);
extern Agsym_t *agnodeattr(Agraph_t *, char *, char *);
extern Agsym_t *agedgeattr(Agraph_t *, char *, char *);
extern Agsym_t *agfindattr(void*, char *);
typedef enum {AGWARN, AGERR, AGMAX, AGPREV} agerrlevel_t;
extern agerrlevel_t agerrno;
extern void agseterr (agerrlevel_t);
extern char* aglasterr ();
extern int agerr (agerrlevel_t level, char* fmt, ...);
extern void agerrorf (char* fmt, ...);
extern void agwarningf (char* fmt, ...);
typedef enum {AGNODE = 1, AGEDGE, AGGRAPH } agobjkind_t;
# 50 "render.h" 2
# 1 "globals.h" 1
# 47 "globals.h"
extern char *Version;
extern char **Lib;
extern char **Files;
extern char **Lib;
extern char *CmdName;
extern char* specificFlags;
extern char* specificItems;
extern char *Gvfilepath;
extern int y_invert;
extern int Output_lang;
extern FILE *Output_file;
extern int Obj;
extern boolean Verbose,Reduce,UseRankdir;
extern char *HTTPServerEnVar;
extern char *Output_file_name;
extern int graphviz_errors;
extern int Nop;
extern double PSinputscale;
extern int Syntax_errors;
extern int Show_boxes;
extern int CL_type;
extern boolean Concentrate;
extern double Epsilon;
extern double Nodesep;
extern double Nodefactor;
extern int MaxIter;
extern int Ndim;
extern int State;
extern double Initial_dist;
extern double Damping;
extern char* BaseLineStyle[];
extern codegen_t FIG_CodeGen, HPGL_CodeGen,
MAP_CodeGen, MIF_CodeGen,
XDot_CodeGen, MP_CodeGen, PIC_CodeGen, PS_CodeGen,
DIA_CodeGen, SVG_CodeGen, VRML_CodeGen, VTX_CodeGen;
extern codegen_t GD_CodeGen, memGD_CodeGen;
extern attrsym_t
*N_height, *N_width, *N_shape, *N_color, *N_fillcolor,
*N_fontsize, *N_fontname, *N_fontcolor,
*N_label, *N_nojustify, *N_style, *N_showboxes,
*N_sides,*N_peripheries,*N_orientation,
*N_skew,*N_distortion,*N_fixed,*N_layer,
*N_group,*N_comment,*N_vertices,*N_z;
extern attrsym_t *E_weight, *E_minlen, *E_color,
*E_fontsize, *E_fontname, *E_fontcolor,
*E_label, *E_dir, *E_style, *E_decorate,
*E_showboxes,*E_arrowsz,*E_constr,*E_layer,
*E_comment,*E_label_float;
extern attrsym_t *E_samehead, *E_sametail,
*E_arrowhead, *E_arrowtail,
*E_headlabel, *E_taillabel,
*E_labelfontsize, *E_labelfontname, *E_labelfontcolor,
*E_labeldistance, *E_labelangle;
extern attrsym_t *E_tailclip, *E_headclip;
# 51 "render.h" 2
# 1 "renderprocs.h" 1
# 17 "renderprocs.h"
typedef void (*nodesizefn_t)(Agnode_t*, boolean);
extern void add_box(path*, box);
extern point add_points(point, point);
extern void arrow_flags (Agedge_t *e, int *sflag, int *eflag);
extern void arrow_gen (GVC_t *gvc, point p, point u, double scale, int flag);
extern double arrow_length (edge_t* e, int flag);
extern int arrowEndClip (inside_t *inside_context, point* ps, int startp, int endp, bezier* spl, int eflag);
extern int arrowStartClip (inside_t *inside_context, point* ps, int startp, int endp, bezier* spl, int sflag);
extern void attach_attrs(Agraph_t *);
extern void beginpath(path*, Agedge_t *, int, pathend_t *, boolean);
extern pointf Bezier(pointf *, int, double, pointf *, pointf *);
extern void bezier_clip (inside_t *inside_context, boolean (*insidefn)(inside_t *inside_context, pointf p), pointf* sp, boolean left_inside);
extern shape_desc * bind_shape(char* name, node_t*);
extern box boxof(int, int, int, int);
extern void cat_libfile(FILE *, char **, char **);
extern void clip_and_install (edge_t*, edge_t*,point*, int, splineInfo*);
extern int clust_in_layer(Agraph_t *);
extern char* canontoken(char *str);
extern void colorxlate(char *str, color_t *color, color_type_t target_type);
extern void common_init_node(node_t *n);
extern int common_init_edge(edge_t *e);
extern void compute_bb(Agraph_t *);
extern void config_codegen_builtins (GVC_t *gvc);
extern point coord(node_t *n);
extern pointf cvt2ptf(point);
extern point cvt2pt(pointf);
extern Agnode_t *dequeue(queue *);
extern void do_graph_label(graph_t *sg);
extern point dotneato_closest (splines *spl, point p);
extern void graph_init(graph_t *g);
extern void dotneato_initialize(GVC_t *gvc, int, char **);
extern void setCmdName(char *);
extern void dotneato_usage(int);
extern char* getFlagOpt (int argc, char** argv, int* idx);
extern void dotneato_postprocess(Agraph_t *, nodesizefn_t);
extern void dotneato_set_margins(GVC_t *gvc, Agraph_t *);
extern void dotneato_eof(GVC_t *gvc);
extern void dotneato_terminate(GVC_t *gvc);
extern void dotneato_write(GVC_t *gvc);
extern void dotneato_write_one(GVC_t *gvc, graph_t *g);
extern int edge_in_CB(Agedge_t *);
extern int edge_in_layer(Agraph_t *, Agedge_t *);
extern double elapsed_sec(void);
extern void enqueue(queue *, Agnode_t *);
extern void enqueue_neighbors(queue *, Agnode_t *, int);
extern void emit_attachment(GVC_t *gvc, textlabel_t *, splines *);
extern void emit_clusters(GVC_t *gvc, Agraph_t *g, int flags);
extern void emit_eof(GVC_t *gvc);
extern void emit_graph(GVC_t *gvc, graph_t *g, int flags);
extern void emit_edge(GVC_t *gvc, edge_t* e);
extern void emit_node(GVC_t *gvc, node_t* n);
extern void emit_label(GVC_t *gvc, textlabel_t *, void *obj);
extern int emit_once(char *message);
extern void emit_once_reset();
extern void emit_reset(GVC_t *gvc);
extern void endpath(path*, Agedge_t *, int, pathend_t*, boolean);
extern void epsf_init(node_t *n);
extern void epsf_free(node_t *n);
extern void epsf_gencode(GVC_t *gvc, node_t *n);
extern FILE *file_select(char *);
extern shape_desc *find_user_shape(char *);
extern box flip_rec_box(box b, point p);
extern point flip_pt(point p, int rankdir);
extern pointf flip_ptf(pointf p, int rankdir);
extern void free_line(textline_t *);
extern void free_label(textlabel_t *);
extern void free_queue(queue *);
extern void free_ugraph(graph_t *);
extern char *gd_alternate_fontlist(char *font);
extern char *gd_textsize(textline_t *textline, char *fontname, double fontsz, char **fontpath);
extern point gd_user_shape_size(node_t *n, char *shapeimagefile);
extern point ps_user_shape_size(node_t *n, char *shapeimagefile);
extern point svg_user_shape_size(node_t *n, char *shapeimagefile);
extern point quartz_user_shape_size(node_t *n, char *shapeimagefile);
extern point gd_image_size(graph_t *n, char *shapeimagefile);
extern point ps_image_size(graph_t *n, char *shapeimagefile);
extern point svg_image_size(graph_t *n, char *shapeimagefile);
extern point quartz_image_size(graph_t *n, char *shapeimagefile);
extern boolean getdoubles2pt(graph_t* g, char* name, point* result);
extern void getdouble(graph_t* g, char* name, double* result);
extern splines* getsplinepoints (edge_t* e);
extern void global_def(char *, Agsym_t *(*fun)(Agraph_t *, char *, char *));
extern point image_size(graph_t *g, char *shapefile);
extern void init_ugraph(graph_t *g);
extern point invflip_pt(point p, int rankdir);
extern int is_natural_number(char *);
extern boolean isPolygon (node_t*);
extern int late_attr(void*, char *);
extern int late_bool(void *, Agsym_t *, int);
extern double late_double(void*, Agsym_t *, double, double);
extern int late_int(void*, Agsym_t *, int, int);
extern char *late_nnstring(void*, Agsym_t *, char *);
extern char *late_string(void*, Agsym_t *, char *);
extern int layer_index(char *, int);
extern int layerindex(char *);
extern char *strdup_and_subst_graph(char *str, Agraph_t *g);
extern char *strdup_and_subst_node(char *str, Agnode_t *n);
extern char *strdup_and_subst_edge(char *str, Agedge_t *e);
extern char *xml_string(char *s);
extern void makeSelfEdge(path*, edge_t**, int, int, int, splineInfo*);
extern textlabel_t *make_label(int, char *, double, char *, char *, graph_t *);
extern int mapbool(char *);
extern int maptoken(char *, char **, int *);
extern void map_begin_cluster(graph_t *g);
extern void map_begin_edge(Agedge_t *e);
extern void map_begin_node(Agnode_t *n);
extern void map_edge(Agedge_t *);
extern point map_point(point);
extern box mkbox(point, point);
extern point neato_closest (splines *spl, point p);
extern bezier* new_spline (edge_t* e, int sz);
extern queue *new_queue(int);
extern FILE *next_input_file(void);
extern Agraph_t *next_input_graph(void);
extern int node_in_CB(node_t *);
extern int node_in_layer(Agraph_t *, node_t *);
extern void osize_label(textlabel_t *, int *, int *, int *, int *);
extern point pageincr(point);
extern char **parse_style(char* s);
extern void place_graph_label(Agraph_t *);
extern void place_portlabel (edge_t *e, boolean head_p);
extern point pointof(int, int);
extern void printptf(FILE *, point);
extern int processClusterEdges (graph_t *g);
extern char *ps_string(char *s);
extern void rank(graph_t *g, int balance, int maxiter);
extern void rec_attach_bb(Agraph_t *);
extern int rect_overlap(box, box);
extern void routesplinesinit(void);
extern point *routesplines(path *, int *);
extern void routesplinesterm(void);
extern char* safefile(char *shapefilename);
extern int selectedlayer(char *);
extern void setup_graph(GVC_t *gvc, graph_t *g);
extern shape_kind shapeOf(node_t*);
extern void shape_clip (node_t *n, point curve[4], edge_t *e);
extern point spline_at_y(splines* spl, int y);
extern void start_timer(void);
extern double textwidth(textline_t *textline, char *fontname, double fontsz);
extern void translate_bb(Agraph_t *, int);
extern Agnode_t *UF_find(Agnode_t *);
extern void UF_remove(Agnode_t *, Agnode_t *);
extern void UF_setname(Agnode_t *, Agnode_t *);
extern void UF_singleton(Agnode_t *);
extern Agnode_t *UF_union(Agnode_t *, Agnode_t *);
extern void undoClusterEdges (graph_t *g);
extern void update(edge_t *e, edge_t *f);
extern void updateBB (graph_t* g, textlabel_t* lp);
extern void use_library(char *);
extern char *username();
extern point user_shape_size(node_t *n, char *shapefile);
extern int validpage(point);
extern void write_plain(GVC_t *gvc, FILE*);
extern void write_plain_ext(GVC_t *gvc, FILE*);
extern void* zmalloc(size_t);
extern void* zrealloc(void*, size_t, size_t, size_t);
extern void* gmalloc(size_t);
extern void* grealloc(void*, size_t);
extern point sub_points(point, point);
extern int lang_select(GVC_t *gvc, char *, int);
extern void toggle(int);
extern int test_toggle();
# 199 "renderprocs.h"
extern codegen_info_t* first_codegen();
extern codegen_info_t* next_codegen();
# 52 "render.h" 2
# 1 "../../dotneato/gvrender/gvrender.h" 1
# 18 "../../dotneato/gvrender/gvrender.h"
# 1 "../../dotneato/gvrender/gvplugin.h" 1
# 26 "../../dotneato/gvrender/gvplugin.h"
typedef enum { API_renderer, NUM_APIS} api_t;
typedef struct {
int id;
char *type;
int quality;
void *engine;
void *features;
} gvplugin_type_t;
typedef struct {
api_t api;
gvplugin_type_t *types;
} gvplugin_api_t;
typedef struct {
char *name;
gvplugin_api_t *apis;
} gvplugin_t;
# 19 "../../dotneato/gvrender/gvrender.h" 2
# 1 "../../dotneato/gvrender/gvrenderint.h" 1
# 22 "../../dotneato/gvrender/gvrenderint.h"
typedef struct gvrender_job_s gvrender_job_t;
struct gvrender_job_s {
gvrender_job_t *next;
char *output_filename;
char *output_langname;
FILE *output_file;
void *interim_output;
int output_lang;
};
typedef struct {
int does_flags;
int emit_flags;
int default_margin;
double default_dpi;
char **knowncolors;
int sz_knowncolors;
color_type_t color_type;
boolean y_goes_down;
} gvrender_features_t;
typedef struct gv_plugin_s gv_plugin_t;
struct gv_plugin_s {
gv_plugin_t *next;
char *typestr;
int quality;
char *path;
gvplugin_type_t *typeptr;
};
typedef enum {PEN_NONE, PEN_DASHED, PEN_DOTTED, PEN_SOLID} pen_type;
typedef enum {FILL_NONE, FILL_SOLID} fill_type;
typedef enum {FONT_REGULAR, FONT_BOLD, FONT_ITALIC} font_type;
typedef struct {
char *fontfam,fontopt;
color_t pencolor,fillcolor;
pen_type pen;
fill_type fill;
int penwidth;
double fontsz;
} gvstyle_t;
struct GVC_s {
char *user;
char **info;
gvrender_job_t *jobs;
gvrender_job_t *job;
void (*errorfn)(char *fmt, ...);
gv_plugin_t *apis[NUM_APIS];
gv_plugin_t *api[NUM_APIS];
gvrender_engine_t *render_engine;
gvrender_features_t *render_features;
int render_id;
codegen_t *codegen;
char **lib;
point pages;
graph_t *g;
void *surface;
boolean external_surface;
box bb;
point pb;
point margin;
double dpi;
color_t bgcolor;
gvstyle_t styles[4];
int SP;
gvstyle_t *style;
point size;
double zoom;
pointf focus;
double scale;
pointf compscale;
int rot;
point page;
int page_number;
int layer;
int nLayers;
};
# 20 "../../dotneato/gvrender/gvrender.h" 2
extern GVC_t *gvNEWcontext(char **info, char *user);
extern void gvBindContext(GVC_t * gvc, graph_t *g);
extern void gvFREEcontext(GVC_t * gvc);
extern void gvconfig(GVC_t * gvc, char *config);
extern boolean gvplugin_install (GVC_t *gvc, api_t api,
char *typestr, int quality, char *path, gvplugin_type_t *typeptr);
extern gv_plugin_t *gvplugin_load (GVC_t *gvc, api_t api, char *type);
extern const char *gvplugin_list (GVC_t *gvc, api_t api, char *str);
extern void gvplugin_builtins(GVC_t * gvc);
extern api_t gvplugin_api(char *str);
extern void gvrender_output_filename_job(GVC_t * gvc, char *name);
extern void gvrender_output_langname_job(GVC_t * gvc, char *name);
extern gvrender_job_t *gvrender_first_job(GVC_t * gvc);
extern gvrender_job_t *gvrender_next_job(GVC_t * gvc);
extern void gvrender_delete_jobs(GVC_t * gvc);
extern int gvrender_features(GVC_t * gvc);
extern void gvrender_reset(GVC_t * gvc);
extern void gvrender_begin_job(GVC_t * gvc, char **lib, point pages);
extern void gvrender_end_job(GVC_t * gvc);
extern void gvrender_begin_graph(GVC_t * gvc, graph_t * g, box bb,
point pb);
extern void gvrender_end_graph(GVC_t * gvc);
extern void gvrender_begin_page(GVC_t * gvc, point page, double scale,
int rot, point offset);
extern void gvrender_end_page(GVC_t * gvc);
extern void gvrender_begin_layer(GVC_t * gvc, char *layerName, int n,
int nLayers);
extern void gvrender_end_layer(GVC_t * gvc);
extern void gvrender_begin_cluster(GVC_t * gvc, graph_t * sg);
extern void gvrender_end_cluster(GVC_t * gvc);
extern void gvrender_begin_nodes(GVC_t * gvc);
extern void gvrender_end_nodes(GVC_t * gvc);
extern void gvrender_begin_edges(GVC_t * gvc);
extern void gvrender_end_edges(GVC_t * gvc);
extern void gvrender_begin_node(GVC_t * gvc, node_t * n);
extern void gvrender_end_node(GVC_t * gvc);
extern void gvrender_begin_edge(GVC_t * gvc, edge_t * e);
extern void gvrender_end_edge(GVC_t * gvc);
extern void gvrender_begin_context(GVC_t * gvc);
extern void gvrender_end_context(GVC_t * gvc);
extern void gvrender_begin_anchor(GVC_t * gvc, char *href, char *tooltip, char *target);
extern void gvrender_end_anchor(GVC_t * gvc);
extern void gvrender_set_font(GVC_t * gvc, char *fontname, double fontsize);
extern void gvrender_textline(GVC_t * gvc, pointf p, textline_t * str);
extern void gvrender_set_pencolor(GVC_t * gvc, char *name);
extern void gvrender_set_fillcolor(GVC_t * gvc, char *name);
extern void gvrender_set_style(GVC_t * gvc, char **s);
extern void gvrender_ellipse(GVC_t * gvc, point p, int rx, int ry,
int filled);
extern void gvrender_polygon(GVC_t * gvc, point * A, int n, int filled);
extern void gvrender_beziercurve(GVC_t * gvc, pointf * AF, int n,
int arrow_at_start, int arrow_at_end);
extern void gvrender_polyline(GVC_t * gvc, point * A, int n);
extern void gvrender_comment(GVC_t * gvc, void *obj, attrsym_t * sym);
extern void gvrender_user_shape(GVC_t * gvc, char *name, point * A,
int sides, int filled);
# 53 "render.h" 2
# 12 "shapes.c" 2
# 1 "htmltable.h" 1
# 26 "htmltable.h"
typedef struct {
char* name;
char* color;
double size;
} htmlfont_t;
typedef struct {
textline_t* line;
short nlines;
box box;
htmlfont_t* font;
} htmltxt_t;
typedef struct {
box box;
char* src;
} htmlimg_t;
typedef struct {
char* href;
char* port;
char* target;
char* bgcolor;
char* pencolor;
signed char space;
unsigned char border;
unsigned char pad;
unsigned char flags;
unsigned short width;
unsigned short height;
box box;
} htmldata_t;
typedef struct htmlcell_t htmlcell_t;
typedef struct htmltbl_t htmltbl_t;
struct htmltbl_t {
htmldata_t data;
union {
struct {
htmlcell_t* parent;
htmlcell_t** cells;
} n;
struct {
htmltbl_t* prev;
Dt_t* rows;
} p;
} u;
signed char cb;
int* heights;
int* widths;
int rc;
int cc;
htmlfont_t* font;
};
struct htmllabel_t {
union {
htmltbl_t* tbl;
htmltxt_t* txt;
htmlimg_t* img;
} u;
char kind;
};
struct htmlcell_t {
htmldata_t data;
unsigned short cspan;
unsigned short rspan;
unsigned short col;
unsigned short row;
htmllabel_t child;
htmltbl_t* parent;
};
typedef struct {
Dtlink_t link;
union {
Dt_t* rp;
htmlcell_t* cp;
} u;
} pitem;
extern htmllabel_t* parseHTML (char*, int*);
extern int make_html_label(textlabel_t *lp, void *obj);
extern void emit_html_label(GVC_t *gvc, htmllabel_t* lp, textlabel_t*, void* obj);
extern void free_html_label (htmllabel_t*, int);
extern void free_html_data (htmldata_t*);
extern void free_html_text (htmltxt_t*);
extern box* html_port (node_t* n, char* pname);
extern int html_path (node_t* n, edge_t* e, int pt, box* rv, int* k);
extern int html_inside (node_t * n, pointf p, edge_t * e);
# 14 "shapes.c" 2
# 1 "/usr/lib/gcc/i386-redhat-linux/4.0.0/include/limits.h" 1 3 4
# 15 "shapes.c" 2
# 25 "shapes.c"
void sincos(x,s,c) double x,*s,*c; { *s = sin(x); *c = cos(x); }
static port Center = { {0,0}, -1, 0, 0, 0, 0};
static char* point_style[3] = {"invis\0","filled\0",0};
static shape_desc* point_desc;
static void poly_init(node_t *n);
static void poly_free(node_t *n);
static port poly_port(node_t *n, char *portname, char*);
static boolean poly_inside(inside_t *inside_context, pointf p);
static int poly_path(node_t *n, edge_t *e, int pt, box rv[], int* kptr);
static void poly_gencode(GVC_t *gvc, node_t *n);
static void record_init(node_t *n);
static void record_free(node_t *n);
static port record_port(node_t *n, char *portname, char*);
static boolean record_inside(inside_t *inside_context, pointf p);
static int record_path(node_t *n, edge_t *e, int pt, box rv[], int* kptr);
static void record_gencode(GVC_t *gvc, node_t *n);
static void point_init(node_t *n);
static boolean epsf_inside(inside_t *inside_context, pointf p);
static polygon_t p_polygon = { 0, 1, 0, 0., 0., 0. };
static polygon_t p_ellipse = { 0, 1, 1, 0., 0., 0. };
static polygon_t p_circle = { (!(0)), 1, 1, 0., 0., 0. };
static polygon_t p_egg = { 0, 1, 1, 0., -.3, 0. };
static polygon_t p_triangle = { 0, 1, 3, 0., 0., 0. };
static polygon_t p_box = { 0, 1, 4, 0., 0., 0. };
static polygon_t p_plaintext = { 0, 0, 4, 0., 0., 0. };
static polygon_t p_diamond = { 0, 1, 4, 45., 0., 0. };
static polygon_t p_trapezium = { 0, 1, 4, 0., -.4, 0. };
static polygon_t p_parallelogram = { 0, 1, 4, 0., 0., .6 };
static polygon_t p_house = { 0, 1, 5, 0., -.64, 0. };
static polygon_t p_pentagon = { 0, 1, 5, 0., 0., 0. };
static polygon_t p_hexagon = { 0, 1, 6, 0., 0., 0. };
static polygon_t p_septagon = { 0, 1, 7, 0., 0., 0. };
static polygon_t p_octagon = { 0, 1, 8, 0., 0., 0. };
static polygon_t p_doublecircle = { (!(0)), 2, 1, 0., 0., 0. };
static polygon_t p_invtriangle = { 0, 1, 3, 180., 0., 0. };
static polygon_t p_invtrapezium = { 0, 1, 4, 180., -.4, 0. };
static polygon_t p_invhouse = { 0, 1, 5, 180., -.64, 0. };
static polygon_t p_doubleoctagon = { 0, 2, 8, 0., 0., 0. };
static polygon_t p_tripleoctagon = { 0, 3, 8, 0., 0., 0. };
static polygon_t p_Mdiamond = { 0, 1, 4, 45., 0., 0. ,(1 << 2)|(1 << 3)};
static polygon_t p_Msquare = { (!(0)), 1, 4, 0., 0., 0. ,(1 << 2)};
static polygon_t p_Mcircle = { (!(0)), 1, 1, 0., 0., 0.,(1 << 2)|(1 << 3)};
# 115 "shapes.c"
static shape_functions poly_fns = {
poly_init,
poly_free,
poly_port,
poly_inside,
poly_path,
poly_gencode
};
static shape_functions point_fns = {
point_init,
poly_free,
poly_port,
poly_inside,
((void *)0),
poly_gencode
};
static shape_functions record_fns = {
record_init,
record_free,
record_port,
record_inside,
record_path,
record_gencode
};
static shape_functions epsf_fns = {
epsf_init,
epsf_free,
poly_port,
epsf_inside,
((void *)0),
epsf_gencode
};
static shape_desc Shapes[] = {
{"box" ,&poly_fns ,&p_box },
{"polygon" ,&poly_fns ,&p_polygon },
{"ellipse" ,&poly_fns ,&p_ellipse },
{"circle" ,&poly_fns ,&p_circle },
{"point" ,&point_fns ,&p_circle },
{"egg" ,&poly_fns ,&p_egg },
{"triangle" ,&poly_fns ,&p_triangle },
{"none" ,&poly_fns ,&p_plaintext },
{"plaintext" ,&poly_fns ,&p_plaintext },
{"diamond" ,&poly_fns ,&p_diamond },
{"trapezium" ,&poly_fns ,&p_trapezium },
{"parallelogram",&poly_fns ,&p_parallelogram },
{"house" ,&poly_fns ,&p_house },
{"pentagon" ,&poly_fns ,&p_pentagon },
{"hexagon" ,&poly_fns ,&p_hexagon },
{"septagon" ,&poly_fns ,&p_septagon },
{"octagon" ,&poly_fns ,&p_octagon },
{"rect" ,&poly_fns ,&p_box },
{"rectangle" ,&poly_fns ,&p_box },
{"doublecircle" ,&poly_fns ,&p_doublecircle },
{"doubleoctagon",&poly_fns ,&p_doubleoctagon },
{"tripleoctagon",&poly_fns ,&p_tripleoctagon },
{"invtriangle" ,&poly_fns ,&p_invtriangle },
{"invtrapezium" ,&poly_fns ,&p_invtrapezium },
{"invhouse" ,&poly_fns ,&p_invhouse },
{"Mdiamond" ,&poly_fns ,&p_Mdiamond },
{"Msquare" ,&poly_fns ,&p_Msquare },
{"Mcircle" ,&poly_fns ,&p_Mcircle },
{"record" ,&record_fns ,((void *)0) },
{"Mrecord" ,&record_fns ,((void *)0) },
{"epsf" ,&epsf_fns ,((void *)0) },
{((void *)0) ,((void *)0) ,((void *)0) }
};
static void
unrecognized(node_t* n, char* p)
{
agerr(AGWARN, "node %s, port %s unrecognized\n",n->name,p);
}
static double quant(double val, double q)
{
int i;
i = val / q;
if (i * q + .00001 < val) i++;
return i * q;
}
static int same_side(pointf p0, pointf p1, pointf L0, pointf L1)
{
int s0,s1;
double a,b,c;
a = -(L1.y - L0.y);
b = (L1.x - L0.x);
c = a * L0.x + b * L0.y;
s0 = (a*p0.x + b*p0.y - c >= 0);
s1 = (a*p1.x + b*p1.y - c >= 0);
return (s0 == s1);
}
static
void pencolor(GVC_t *gvc, node_t *n)
{
char *color;
color = late_nnstring(n,N_color,"");
if (color[0])
gvrender_set_pencolor(gvc, color);
}
static
char* findFill(node_t *n)
{
char *color;
color = late_nnstring(n,N_fillcolor,"");
if (! color[0]) {
color = late_nnstring(n,N_color,"");
if (! color[0]) {
if ((n)->u.shape == point_desc) {
color = "black";
}
else {
color = (Output_lang == 4 ? "black" : "lightgrey");
}
}
}
return color;
}
static
void fillcolor(GVC_t *gvc, node_t *n)
{
gvrender_set_fillcolor(gvc, findFill(n));
}
static char**
checkStyle (node_t* n, int* flagp)
{
char* style;
char** pstyle = 0;
int istyle = 0;
polygon_t* poly;
style = late_nnstring(n,N_style,"");
if (style[0]) {
int i;
pstyle = parse_style(style);
for (i = 0; pstyle[i]; i++) {
if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (pstyle[i]) && __builtin_constant_p ("filled") && (__s1_len = strlen (pstyle[i]), __s2_len = strlen ("filled"), (!((size_t)(const void *)((pstyle[i]) + 1) - (size_t)(const void *)(pstyle[i]) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("filled") + 1) - (size_t)(const void *)("filled") == 1) || __s2_len >= 4)) ? __builtin_strcmp (pstyle[i], "filled") : (__builtin_constant_p (pstyle[i]) && ((size_t)(const void *)((pstyle[i]) + 1) - (size_t)(const void *)(pstyle[i]) == 1) && (__s1_len = strlen (pstyle[i]), __s1_len < 4) ? (__builtin_constant_p ("filled") && ((size_t)(const void *)(("filled") + 1) - (size_t)(const void *)("filled") == 1) ? __builtin_strcmp (pstyle[i], "filled") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("filled"); register int __result = (((__const unsigned char *) (__const char *) (pstyle[i]))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (pstyle[i]))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (pstyle[i]))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (pstyle[i]))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("filled") && ((size_t)(const void *)(("filled") + 1) - (size_t)(const void *)("filled") == 1) && (__s2_len = strlen ("filled"), __s2_len < 4) ? (__builtin_constant_p (pstyle[i]) && ((size_t)(const void *)((pstyle[i]) + 1) - (size_t)(const void *)(pstyle[i]) == 1) ? __builtin_strcmp (pstyle[i], "filled") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (pstyle[i]); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("filled"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("filled"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("filled"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("filled"))[3]); } } __result; }))) : __builtin_strcmp (pstyle[i], "filled")))); }) == 0) {istyle |= (1 << 0);}
else if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (pstyle[i]) && __builtin_constant_p ("rounded") && (__s1_len = strlen (pstyle[i]), __s2_len = strlen ("rounded"), (!((size_t)(const void *)((pstyle[i]) + 1) - (size_t)(const void *)(pstyle[i]) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("rounded") + 1) - (size_t)(const void *)("rounded") == 1) || __s2_len >= 4)) ? __builtin_strcmp (pstyle[i], "rounded") : (__builtin_constant_p (pstyle[i]) && ((size_t)(const void *)((pstyle[i]) + 1) - (size_t)(const void *)(pstyle[i]) == 1) && (__s1_len = strlen (pstyle[i]), __s1_len < 4) ? (__builtin_constant_p ("rounded") && ((size_t)(const void *)(("rounded") + 1) - (size_t)(const void *)("rounded") == 1) ? __builtin_strcmp (pstyle[i], "rounded") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("rounded"); register int __result = (((__const unsigned char *) (__const char *) (pstyle[i]))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (pstyle[i]))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (pstyle[i]))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (pstyle[i]))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("rounded") && ((size_t)(const void *)(("rounded") + 1) - (size_t)(const void *)("rounded") == 1) && (__s2_len = strlen ("rounded"), __s2_len < 4) ? (__builtin_constant_p (pstyle[i]) && ((size_t)(const void *)((pstyle[i]) + 1) - (size_t)(const void *)(pstyle[i]) == 1) ? __builtin_strcmp (pstyle[i], "rounded") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (pstyle[i]); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("rounded"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("rounded"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("rounded"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("rounded"))[3]); } } __result; }))) : __builtin_strcmp (pstyle[i], "rounded")))); }) == 0) {istyle |= (1 << 1);}
else if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (pstyle[i]) && __builtin_constant_p ("diagonals") && (__s1_len = strlen (pstyle[i]), __s2_len = strlen ("diagonals"), (!((size_t)(const void *)((pstyle[i]) + 1) - (size_t)(const void *)(pstyle[i]) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("diagonals") + 1) - (size_t)(const void *)("diagonals") == 1) || __s2_len >= 4)) ? __builtin_strcmp (pstyle[i], "diagonals") : (__builtin_constant_p (pstyle[i]) && ((size_t)(const void *)((pstyle[i]) + 1) - (size_t)(const void *)(pstyle[i]) == 1) && (__s1_len = strlen (pstyle[i]), __s1_len < 4) ? (__builtin_constant_p ("diagonals") && ((size_t)(const void *)(("diagonals") + 1) - (size_t)(const void *)("diagonals") == 1) ? __builtin_strcmp (pstyle[i], "diagonals") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("diagonals"); register int __result = (((__const unsigned char *) (__const char *) (pstyle[i]))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (pstyle[i]))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (pstyle[i]))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (pstyle[i]))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("diagonals") && ((size_t)(const void *)(("diagonals") + 1) - (size_t)(const void *)("diagonals") == 1) && (__s2_len = strlen ("diagonals"), __s2_len < 4) ? (__builtin_constant_p (pstyle[i]) && ((size_t)(const void *)((pstyle[i]) + 1) - (size_t)(const void *)(pstyle[i]) == 1) ? __builtin_strcmp (pstyle[i], "diagonals") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (pstyle[i]); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("diagonals"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("diagonals"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("diagonals"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("diagonals"))[3]); } } __result; }))) : __builtin_strcmp (pstyle[i], "diagonals")))); }) == 0) {istyle |= (1 << 2);}
else if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (pstyle[i]) && __builtin_constant_p ("invis") && (__s1_len = strlen (pstyle[i]), __s2_len = strlen ("invis"), (!((size_t)(const void *)((pstyle[i]) + 1) - (size_t)(const void *)(pstyle[i]) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("invis") + 1) - (size_t)(const void *)("invis") == 1) || __s2_len >= 4)) ? __builtin_strcmp (pstyle[i], "invis") : (__builtin_constant_p (pstyle[i]) && ((size_t)(const void *)((pstyle[i]) + 1) - (size_t)(const void *)(pstyle[i]) == 1) && (__s1_len = strlen (pstyle[i]), __s1_len < 4) ? (__builtin_constant_p ("invis") && ((size_t)(const void *)(("invis") + 1) - (size_t)(const void *)("invis") == 1) ? __builtin_strcmp (pstyle[i], "invis") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("invis"); register int __result = (((__const unsigned char *) (__const char *) (pstyle[i]))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (pstyle[i]))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (pstyle[i]))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (pstyle[i]))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("invis") && ((size_t)(const void *)(("invis") + 1) - (size_t)(const void *)("invis") == 1) && (__s2_len = strlen ("invis"), __s2_len < 4) ? (__builtin_constant_p (pstyle[i]) && ((size_t)(const void *)((pstyle[i]) + 1) - (size_t)(const void *)(pstyle[i]) == 1) ? __builtin_strcmp (pstyle[i], "invis") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (pstyle[i]); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("invis"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("invis"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("invis"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("invis"))[3]); } } __result; }))) : __builtin_strcmp (pstyle[i], "invis")))); }) == 0) {istyle |= (1 << 4);}
}
}
if ((poly = (n)->u.shape->polygon)) istyle |= poly->option;
*flagp = istyle;
return pstyle;
}
static
int stylenode(GVC_t *gvc, node_t *n)
{
char** pstyle;
int istyle;
if ((pstyle = checkStyle (n, &istyle)))
gvrender_set_style(gvc, pstyle);
return istyle;
}
static void hack1(GVC_t *gvc, node_t *n, char* str, int k)
{
pointf p;
double fontsize;
textline_t fake;
fontsize = (n)->u.label->fontsize*.8;
p.x = (n)->u.coord.x - (strlen(str) * (n)->u.label->fontsize) / 2;
p.y = (n)->u.coord.y + (k * ((n)->u.ht - (n)->u.label->fontsize - 2)) / 2;
gvrender_begin_context(gvc);
gvrender_set_font(gvc, (n)->u.label->fontname,fontsize);
fake.str = str;
fake.width = strlen(str) * fontsize;
fake.just = 0;
gvrender_textline(gvc, p, &fake);
gvrender_end_context(gvc);
}
static void Mlabel_hack(GVC_t *gvc, node_t *n)
{
char *str;
if ((str = agget(n,"toplabel"))) hack1(gvc, n, str, 1);
if ((str = agget(n,"bottomlabel"))) hack1(gvc, n, str, -1);
}
static void Mcircle_hack(GVC_t *gvc, node_t *n)
{
double x,y;
point A[2],p;
y = .7500;
x = .6614;
p.y = y * (n)->u.ht / 2.0;
p.x = (n)->u.rw * x;
A[0] = add_points(p,(n)->u.coord);
A[1].y = A[0].y; A[1].x = A[0].x - 2*p.x;
gvrender_polyline(gvc, A, 2);
A[0].y -= 2*p.y; A[1].y = A[0].y;
gvrender_polyline(gvc, A, 2);
}
static point interpolate(double t, point p0, point p1)
{
point rv;
rv.x = p0.x + t * (p1.x - p0.x);
rv.y = p0.y + t * (p1.y - p0.y);
return rv;
}
static void round_corners(GVC_t *gvc, node_t *n, point *A, int sides, int style)
{
point *B,C[2],p0,p1;
pointf BF[4];
double d,dx,dy,t;
int i,seg,mode;
if (style & (1 << 2)) mode = (1 << 2);
else mode = (1 << 1);
B = (point*)zmalloc((4*sides+4)*sizeof(point));
i = 0;
for (seg = 0; seg < sides; seg++) {
p0 = A[seg];
if (seg < sides - 1) p1 = A[seg+1];
else p1 = A[0];
dx = p1.x - p0.x;
dy = p1.y - p0.y;
d = sqrt(dx*dx + dy*dy);
t = 12 / d;
if (mode != (1 << 1)) B[i++] = p0;
if (mode == (1 << 1)) B[i++] = interpolate(.5*t,p0,p1);
B[i++] = interpolate(t,p0,p1);
B[i++] = interpolate(1.0 - t,p0,p1);
if (mode == (1 << 1)) B[i++] = interpolate(1.0 - .5*t,p0,p1);
}
B[i++] = B[0];
B[i++] = B[1];
B[i++] = B[2];
if (mode == (1 << 1)) {
for (seg = 0; seg < sides; seg++) {
gvrender_polyline(gvc, B + 4*seg+1, 2);
for (i=0; i<4; i++)
(BF[i].x = B[4*seg+2+i].x, BF[i].y = B[4*seg+2+i].y);
gvrender_beziercurve(gvc, BF, 4, 0, 0);
}
}
else {
pencolor(gvc, n);
if (style & (1 << 0))
fillcolor(gvc, n);
gvrender_polygon(gvc, A, sides, style&(1 << 0));
for (seg = 0; seg < sides; seg++) {
C[0] = B[3 * seg + 2]; C[1] = B[3 * seg + 4];
gvrender_polyline(gvc, C, 2);
}
}
free(B);
}
static double
userSize (node_t *n)
{
double w, h;
w = late_double(n,N_width,0.0,0.01);
h = late_double(n,N_height,0.0,0.02);
return ((((((w)>(h)?(w):(h)))*72.0>=0)?(int)((((w)>(h)?(w):(h)))*72.0 + .5):(int)((((w)>(h)?(w):(h)))*72.0 - .5)));
}
shape_kind
shapeOf(node_t* n)
{
shape_desc* sh = (n)->u.shape;
void (*ifn)(node_t*);
if (!sh) return SH_UNSET;
ifn = (n)->u.shape->fns->initfn;
if (ifn == poly_init) return SH_POLY;
else if (ifn == record_init) return SH_RECORD;
else if (ifn == point_init) return SH_POINT;
else return SH_USER;
}
boolean
isPolygon (node_t* n)
{
return ((n)->u.shape && ((n)->u.shape->fns->initfn == poly_init));
}
static void
poly_init(node_t *n)
{
pointf dimen, bb;
pointf P,Q,R;
pointf *vertices;
char *p;
double temp,alpha,beta,gamma,delta;
double orientation,distortion,skew;
double sectorangle, sidelength, skewdist, gdistortion, gskew;
double angle, sinx, cosx, xmax, ymax, scalex, scaley;
double width, height, marginx, marginy;
int regular,peripheries,sides;
int i,j,outp;
polygon_t *poly=(polygon_t*)zmalloc(sizeof(polygon_t));
regular = (n)->u.shape->polygon->regular;
peripheries = (n)->u.shape->polygon->peripheries;
sides = (n)->u.shape->polygon->sides;
orientation = (n)->u.shape->polygon->orientation;
skew = (n)->u.shape->polygon->skew;
distortion = (n)->u.shape->polygon->distortion;
regular |= mapbool(agget(n,"regular"));
# 460 "shapes.c"
if (regular) {
double sz = userSize(n);
if (sz > 0.0)
width = height = sz;
else {
width = (n)->u.width;
height = (n)->u.height;
width = height = ((((((width)<(height)?(width):(height)))*72.0>=0)?(int)((((width)<(height)?(width):(height)))*72.0 + .5):(int)((((width)<(height)?(width):(height)))*72.0 - .5)));
}
}
else {
width = (((((n)->u.width)*72.0>=0)?(int)(((n)->u.width)*72.0 + .5):(int)(((n)->u.width)*72.0 - .5)));
height = (((((n)->u.height)*72.0>=0)?(int)(((n)->u.height)*72.0 + .5):(int)(((n)->u.height)*72.0 - .5)));
}
peripheries = late_int(n,N_peripheries,peripheries,0);
orientation += late_double(n,N_orientation,0.0,-360.0);
if (sides==0) {
skew = late_double(n,N_skew,0.0,-100.0);
sides = late_int(n,N_sides,4,0);
distortion = late_double(n,N_distortion,0.0,-100.0);
}
dimen = (n)->u.label->dimen;
if ((dimen.x > 0.0) || (dimen.y > 0.0)) {
if ((p = agget(n,"margin"))) {
i = sscanf(p,"%lf,%lf",&marginx,&marginy);
if (i > 0) {
dimen.x += 2 * ((((marginx)*72.0>=0)?(int)((marginx)*72.0 + .5):(int)((marginx)*72.0 - .5)));
if (i > 1) dimen.y += 2 * ((((marginy)*72.0>=0)?(int)((marginy)*72.0 + .5):(int)((marginy)*72.0 - .5)));
else dimen.y += 2 * ((((marginx)*72.0>=0)?(int)((marginx)*72.0 + .5):(int)((marginx)*72.0 - .5)));
}
else {((dimen).x += 4*4); ((dimen).y += 2*4);};
}
else {((dimen).x += 4*4); ((dimen).y += 2*4);};
}
if (mapbool(late_string(n,N_fixed,"false"))) {
if ((width < dimen.x) || (height < dimen.y))
agerr(AGWARN, "node '%s', graph '%s' size too small for label\n",
n->name, n->graph->name);
dimen.x = dimen.y = 0;
}
else {
if ((n)->u.shape->usershape) {
point imagesize;
char* sfile = agget(n,"shapefile");
imagesize = user_shape_size(n, sfile);
if ((imagesize.x == -1) && (imagesize.y == -1)) {
agerr(AGERR,"No or improper shapefile=\"%s\" for node \"%s\"\n",
(sfile ? sfile : "<nil>"), n->name);
}
else (n->graph)->u.has_images = 1;
dimen.x = ((dimen.x)>(imagesize.x)?(dimen.x):(imagesize.x));
dimen.y = ((dimen.y)>(imagesize.y)?(dimen.y):(imagesize.y));
}
}
if ((temp = (n->graph)->u.drawing->quantum) > 0.0) {
temp = ((((temp)*72.0>=0)?(int)((temp)*72.0 + .5):(int)((temp)*72.0 - .5)));
dimen.x = quant(dimen.x,temp);
dimen.y = quant(dimen.y,temp);
}
if (regular) {
dimen.x = dimen.y = ((dimen.x)>(dimen.y)?(dimen.x):(dimen.y));
}
if ((sides<=2) && ((distortion!=0.) || (skew!=0.))) {
sides = 120;
}
if (sides <= 2) {
if (dimen.y > dimen.x) temp = dimen.x * (sqrt(2.) - 1.);
else temp = dimen.y * (sqrt(2.) - 1.);
dimen.x += temp; dimen.y += temp;
}
else if (sides == 4 && (((orientation>=0)?(int)(orientation + .5):(int)(orientation - .5))%90) == 0 && distortion == 0. && skew == 0. ) {
}
else {
temp = cos(3.14159265358979323846/sides);
dimen.x /= temp; dimen.y /= temp;
if (dimen.y > dimen.x) temp = dimen.x * (sqrt(2.) - 1.);
else temp = dimen.y * (sqrt(2.) - 1.);
dimen.x += temp; dimen.y += temp;
}
bb.x = width = ((width)>(dimen.x)?(width):(dimen.x));
bb.y = height = ((height)>(dimen.y)?(height):(dimen.y));
if (! mapbool(late_string(n,N_nojustify,"false"))) {
(n)->u.label->d.x = bb.x - dimen.x;
(n)->u.label->d.y = bb.y - dimen.y;
}
outp=peripheries;
if (peripheries<1) outp=1;
if (sides<3) {
sides=1;
vertices=(pointf*)zmalloc((outp)*sizeof(pointf));
P.x=bb.x/2.; P.y=bb.y/2.;
vertices[0] = P;
if (peripheries>1) {
for (j=1; j<peripheries; j++) {
P.x += 4; P.y += 4;
vertices[j] = P;
}
bb.x=2.*P.x; bb.y=2.*P.y;
}
} else {
vertices=(pointf*)zmalloc((outp*sides)*sizeof(pointf));
sectorangle = 2.*3.14159265358979323846/sides;
sidelength = sin(sectorangle/2.);
skewdist = hypot(fabs(distortion)+fabs(skew),1.);
gdistortion = distortion*sqrt(2.)/cos(sectorangle/2.);
gskew = skew/2.;
angle = (sectorangle-3.14159265358979323846)/2.;
sincos(angle,&sinx,&cosx);
R.x = .5*cosx; R.y = .5*sinx;
xmax=ymax=0.;
angle += (3.14159265358979323846 -sectorangle)/2.;
for (i=0; i<sides; i++) {
angle += sectorangle;
sincos(angle,&sinx,&cosx);
R.x += sidelength*cosx; R.y += sidelength*sinx;
P.x = R.x*(skewdist+R.y*gdistortion)+R.y*gskew;
P.y = R.y;
alpha = ((orientation)/180.0 * 3.14159265358979323846)+atan2(P.y,P.x);
sincos(alpha,&sinx,&cosx);
P.x = P.y = hypot(P.x,P.y);
P.x *= cosx; P.y *= sinx;
P.x *= bb.x; P.y *= bb.y;
xmax = ((fabs(P.x))>(xmax)?(fabs(P.x)):(xmax)); ymax = ((fabs(P.y))>(ymax)?(fabs(P.y)):(ymax));
vertices[i] = P;
}
xmax *=2.; ymax *=2.;
bb.x=((width)>(xmax)?(width):(xmax)); bb.y=((height)>(ymax)?(height):(ymax));
scalex=bb.x/xmax; scaley=bb.y/ymax;
for (i=0; i<sides; i++) {
P = vertices[i];
P.x *= scalex; P.y *= scaley;
vertices[i] = P;
}
if (peripheries>1) {
Q = vertices[(sides-1)];
R = vertices[0];
beta = atan2(R.y-Q.y,R.x-Q.x);
for (i=0; i<sides; i++) {
P = Q; Q = R; R = vertices[(i+1)%sides];
alpha = beta; beta = atan2(R.y-Q.y,R.x-Q.x);
gamma = (alpha+3.14159265358979323846 -beta)/2.;
temp = 4/sin(gamma);
delta = alpha-gamma;
sincos(delta,&sinx,&cosx);
sinx *= temp; cosx *= temp;
for (j=1; j<peripheries; j++) {
Q.x += cosx; Q.y += sinx;
vertices[i+j*sides] = Q;
}
}
for (i=0; i<sides; i++) {
P = vertices[i+(peripheries-1)*sides];
bb.x = ((2.*fabs(P.x))>(bb.x)?(2.*fabs(P.x)):(bb.x));
bb.y = ((2.*fabs(P.y))>(bb.y)?(2.*fabs(P.y)):(bb.y));
}
}
}
poly->regular = regular;
poly->peripheries = peripheries;
poly->sides = sides;
poly->orientation = orientation;
poly->skew = skew;
poly->distortion = distortion;
poly->vertices = vertices;
(n)->u.width = ((bb.x)/72.0);
(n)->u.height = ((bb.y)/72.0);
(n)->u.shape_info = (void*) poly;
}
static void poly_free(node_t *n)
{
polygon_t* p = (n)->u.shape_info;
if (p) {
free(p->vertices);
free(p);
}
}
static boolean poly_inside(inside_t *inside_context, pointf p)
{
static node_t* lastn;
static edge_t* laste;
static node_t* datan;
static polygon_t *poly;
static int last,outp,sides;
static pointf O;
static pointf *vertex;
static double xsize,ysize,scalex,scaley,box_URx,box_URy;
static box* bp;
int i,i1,j,s;
pointf P,Q,R;
edge_t* f;
edge_t* e = inside_context->e;
node_t* n = inside_context->n;
P = flip_ptf(p, (n->graph)->u.rankdir);
for (f = e; (f)->u.edge_type != 0; f = (f)->u.to_orig);
e = f;
if ((n != lastn) || (e != laste)) {
bp = ((n) == (e)->head ? (e)->u.head_port.bp : (e)->u.tail_port.bp);
if ((bp == ((void *)0)) && (n != datan)) {
datan = n;
poly = (polygon_t*) (n)->u.shape_info;
vertex = poly->vertices;
sides = poly->sides;
if (((n->graph)->u.rankdir & 1)) {
ysize = (n)->u.lw + (n)->u.rw; xsize = (n)->u.ht;
}
else {
xsize = (n)->u.lw + (n)->u.rw; ysize = (n)->u.ht;
}
if (xsize == 0.0) xsize = 1.0;
if (ysize == 0.0) ysize = 1.0;
scalex = (((((n)->u.width)*72.0>=0)?(int)(((n)->u.width)*72.0 + .5):(int)(((n)->u.width)*72.0 - .5)))/xsize;
scaley = (((((n)->u.height)*72.0>=0)?(int)(((n)->u.height)*72.0 + .5):(int)(((n)->u.height)*72.0 - .5)))/ysize;
box_URx = (((((n)->u.width)*72.0>=0)?(int)(((n)->u.width)*72.0 + .5):(int)(((n)->u.width)*72.0 - .5)))/2.0;
box_URy = (((((n)->u.height)*72.0>=0)?(int)(((n)->u.height)*72.0 + .5):(int)(((n)->u.height)*72.0 - .5)))/2.0;
outp=(poly->peripheries-1)*sides;
if (outp<0) outp=0;
}
lastn = n;
laste = e;
}
if (bp) {
box bbox = *bp;
return ((((bbox.LL.x) <= (P.x)) && ((P.x) <= (bbox.UR.x))) && (((bbox.LL.y) <= (P.y)) && ((P.y) <= (bbox.UR.y))));
}
P.x *= scalex; P.y *= scaley;
if ((fabs(P.x)>box_URx) || (fabs(P.y)>box_URy)) return 0;
if (sides<=2) return (hypot(P.x/box_URx,P.y/box_URy)<1.);
i = last % sides;
i1 = (i + 1) % sides;
Q = vertex[i+outp]; R = vertex[i1+outp];
if ( !(same_side(P,O,Q,R))) return 0;
if ( (s=same_side(P,Q,R,O)) && (same_side(P,R,O,Q))) return (!(0));
for (j = 1; j < sides; j++) {
if (s) {
i = i1; i1 = (i + 1) % sides;
} else {
i1 = i; i = (i + sides - 1) % sides;
}
if ( !(same_side(P,O,vertex[i+outp],vertex[i1+outp]))) {
last = i;
return 0;
}
}
last = i;
return (!(0));
}
static int poly_path(node_t *n, edge_t *e, int pt, box rv[], int* kptr)
{
int side = 0;
edge_t *f;
if ((n)->u.label->html && (n)->u.has_port) {
for (f = e; (f)->u.edge_type != 0; f = (f)->u.to_orig);
e = f;
if (((n) == (e)->head ? (e)->u.head_port.bp : (e)->u.tail_port.bp)) side = html_path (n, e, pt, rv, kptr);
}
return side;
}
# 808 "shapes.c"
static int
compassPort (node_t* n, box* bp, port* pp, char* compass)
{
box b;
point p, ctr;
int rv = 0;
if (bp) {
b = *bp;
p = pointof((b.LL.x+b.UR.x)/2,(b.LL.y+b.UR.y)/2);
}
else {
p.x = p.y = 0;
if (((n->graph)->u.rankdir & 1)) {
b.UR.x = (n)->u.ht / 2;
b.LL.x = -b.UR.x;
b.UR.y = (n)->u.lw;
b.LL.y = -b.UR.y;
}
else {
b.UR.y = (n)->u.ht / 2;
b.LL.y = -b.UR.y;
b.UR.x = (n)->u.lw;
b.LL.x = -b.UR.x;
}
}
ctr = p;
if (compass && *compass) {
int margin = 1;
switch(*compass++) {
case 'e': p.x = b.UR.x - margin;
break;
case 's':
p.y = b.LL.y + margin;
switch(*compass) {
case '\0': break;
case 'e': p.x = b.UR.x - margin; break;
case 'w': p.x = b.LL.x + margin; break;
default : p.y = ctr.y; rv = 1; break;
}
break;
case 'w': p.x = b.LL.x + margin;
break;
case 'n':
p.y = b.UR.y - margin;
switch(*compass) {
case '\0': break;
case 'e': p.x = b.UR.x - margin; break;
case 'w': p.x = b.LL.x + margin; break;
default : p.y = ctr.y; rv = 1; break;
}
break;
default :
rv = 1;
break;
}
}
p = invflip_pt(p, (n->graph)->u.rankdir);
pp->bp = bp;
pp->p = p;
pp->order = (256 * ((n)->u.lw + p.x)) / ((n)->u.lw + (n)->u.rw);
pp->constrained = 0;
pp->defined = (!(0));
return rv;
}
static port
poly_port(node_t *n, char* portname, char* compass)
{
port rv;
box* bp;
if (portname[0] == '\0') return Center;
if (((n)->u.label->html) && ((bp = html_port (n, portname)))) {
if (compassPort (n, bp, &rv, compass))
agerr(AGWARN, "node %s, port %s, unrecognized compass point '%s' - ignored\n",
n->name,portname,compass);
}
else if (compassPort (n, ((void *)0), &rv, portname)) {
unrecognized(n,portname);
}
return rv;
}
static void poly_gencode(GVC_t *gvc, node_t *n)
{
polygon_t *poly;
double xsize, ysize;
int i,j,peripheries,sides,style;
pointf P,*vertices;
static point *A;
static int A_size;
int filled;
poly = (polygon_t*) (n)->u.shape_info;
vertices = poly->vertices;
sides = poly->sides;
peripheries = poly->peripheries;
if (A_size < sides) {A_size = sides + 5; A = (A? (point*)grealloc(A,(A_size)*sizeof(point)):(point*)gmalloc((A_size)*sizeof(point)));}
(n)->u.label->p = (n)->u.coord;
xsize = (16.0 * ((n)->u.lw + (n)->u.rw) / (((((n)->u.width)*72.0>=0)?(int)(((n)->u.width)*72.0 + .5):(int)(((n)->u.width)*72.0 - .5))));
ysize = (16.0 * (n)->u.ht / (((((n)->u.height)*72.0>=0)?(int)(((n)->u.height)*72.0 + .5):(int)(((n)->u.height)*72.0 - .5))));
if ((gvc->codegen == &VRML_CodeGen) && (peripheries == 0)) {
peripheries = 1;
}
if ((n)->u.shape == point_desc) {
checkStyle (n, &style);
if (style & (1 << 4)) gvrender_set_style(gvc, point_style);
else gvrender_set_style(gvc, &point_style[1]);
style = (1 << 0);
}
else {
style = stylenode(gvc, n);
}
if (style & (1 << 0)) {
fillcolor(gvc, n);
filled = 1;
}
else {
filled = 0;
}
pencolor(gvc, n);
if ((n)->u.shape->usershape) {
for (i = 0; i < sides; i++) {
P = vertices[i];
A[i].x = ((P.x * xsize>=0)?(int)(P.x * xsize + .5):(int)(P.x * xsize - .5)) / 16;
A[i].y = ((P.y * ysize>=0)?(int)(P.y * ysize + .5):(int)(P.y * ysize - .5)) / 16;
if (sides > 2) {
A[i].x += (n)->u.coord.x;
A[i].y += (n)->u.coord.y;
}
}
gvrender_user_shape(gvc,(n)->u.shape->name,A,sides,filled);
filled = 0;
}
if ((peripheries == 0) && filled) {
char* color;
peripheries = 1;
color = findFill(n);
if (color[0])
gvrender_set_pencolor(gvc, color);
}
for (j = 0; j < peripheries; j++) {
for (i = 0; i < sides; i++) {
P = vertices[i+j*sides];
A[i].x = ((P.x * xsize>=0)?(int)(P.x * xsize + .5):(int)(P.x * xsize - .5)) / 16;
A[i].y = ((P.y * ysize>=0)?(int)(P.y * ysize + .5):(int)(P.y * ysize - .5)) / 16;
if (sides > 2) {
A[i].x += (n)->u.coord.x;
A[i].y += (n)->u.coord.y;
}
}
if (sides <= 2) {
gvrender_ellipse(gvc, (n)->u.coord, A[0].x, A[0].y, filled);
if (style & (1 << 2)) {
Mcircle_hack(gvc, n);
}
}
else if (style & ((1 << 1) | (1 << 2))) {
round_corners(gvc, n, A, sides, style);
}
else {
gvrender_polygon(gvc, A, sides, filled);
}
filled = 0;
}
if (style & (1 << 3)) Mlabel_hack(gvc, n);
emit_label(gvc, (n)->u.label, (void*)n);
# 1008 "shapes.c"
}
# 1017 "shapes.c"
static void
point_init(node_t *n)
{
textlabel_t* p;
if (!point_desc) {
shape_desc *ptr;
for (ptr = Shapes; ptr->name; ptr++)
if (!__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (ptr->name) && __builtin_constant_p ("point") && (__s1_len = strlen (ptr->name), __s2_len = strlen ("point"), (!((size_t)(const void *)((ptr->name) + 1) - (size_t)(const void *)(ptr->name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("point") + 1) - (size_t)(const void *)("point") == 1) || __s2_len >= 4)) ? __builtin_strcmp (ptr->name, "point") : (__builtin_constant_p (ptr->name) && ((size_t)(const void *)((ptr->name) + 1) - (size_t)(const void *)(ptr->name) == 1) && (__s1_len = strlen (ptr->name), __s1_len < 4) ? (__builtin_constant_p ("point") && ((size_t)(const void *)(("point") + 1) - (size_t)(const void *)("point") == 1) ? __builtin_strcmp (ptr->name, "point") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("point"); register int __result = (((__const unsigned char *) (__const char *) (ptr->name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (ptr->name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (ptr->name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (ptr->name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("point") && ((size_t)(const void *)(("point") + 1) - (size_t)(const void *)("point") == 1) && (__s2_len = strlen ("point"), __s2_len < 4) ? (__builtin_constant_p (ptr->name) && ((size_t)(const void *)((ptr->name) + 1) - (size_t)(const void *)(ptr->name) == 1) ? __builtin_strcmp (ptr->name, "point") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (ptr->name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("point"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("point"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("point"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("point"))[3]); } } __result; }))) : __builtin_strcmp (ptr->name, "point")))); })) {point_desc = ptr; break;}
((void) ((point_desc) ? 0 : (__assert_fail ("point_desc", "shapes.c", 1026, __PRETTY_FUNCTION__), 0)));
}
p = (n)->u.label;
free_label(p);
(n)->u.label = (textlabel_t*)zmalloc(sizeof(textlabel_t));
(n)->u.label->text = (__extension__ (__builtin_constant_p ("") && ((size_t)(const void *)(("") + 1) - (size_t)(const void *)("") == 1) ? (((__const char *) (""))[0] == '\0' ? (char *) calloc (1, 1) : ({ size_t __len = strlen ("") + 1; char *__retval = (char *) malloc (__len); if (__retval != ((void *)0)) __retval = (char *) memcpy (__retval, "", __len); __retval; })) : __strdup ("")));
if (((N_width) && (*(agxget(n,N_width->index)) != '\0'))) {
if (((N_height) && (*(agxget(n,N_height->index)) != '\0'))) {
(n)->u.width = (n)->u.height = (((n)->u.width)<((n)->u.height)?((n)->u.width):((n)->u.height));
}
else (n)->u.height = (n)->u.width;
}
else if (((N_height) && (*(agxget(n,N_height->index)) != '\0'))) {
(n)->u.width = (n)->u.height;
}
else (n)->u.width = (n)->u.height = 0.05;
poly_init (n);
}
# 1065 "shapes.c"
static char *reclblp;
static field_t *
parse_reclbl(node_t *n, int LR, int flag, char* text)
{
field_t *fp, *rv = (field_t*)zmalloc(sizeof(field_t));
char *tsp, *psp, *hstsp, *hspsp, *sp;
char port[128];
int maxf, cnt, mode, wflag, ishardspace, fi;
fp = ((void *)0);
for (maxf = 1, cnt = 0, sp = reclblp; *sp; sp++) {
if (*sp == '\\') {
sp++;
if (*sp && (*sp == '{' || *sp == '}' || *sp == '|'))
continue;
}
if (*sp == '{')
cnt++;
else if (*sp == '}')
cnt--;
else if (*sp == '|' && cnt == 0)
maxf++;
if (cnt < 0)
break;
}
rv->fld = (field_t**)zmalloc((maxf)*sizeof(field_t*));
rv->LR = LR;
mode = 0;
fi = 0;
hstsp = tsp = text, hspsp = psp = &port[0];
wflag = (!(0));
ishardspace = 0;
while (wflag) {
switch (*reclblp) {
case '<':
if (mode & (4 | 2))
return ((void *)0);
mode |= (2 | 16);
reclblp++;
break;
case '>':
if (!(mode & 16))
return ((void *)0);
mode &= ~16;
reclblp++;
break;
case '{':
reclblp++;
if (mode != 0 || !*reclblp)
return ((void *)0);
mode = 4;
if (!(rv->fld[fi++] = parse_reclbl (n, (!(LR)) , 0, text)))
return ((void *)0);
break;
case '}':
case '|':
case '\000':
if ((!*reclblp && !flag) || (mode & 16))
return ((void *)0);
if (!(mode & 4))
fp = rv->fld[fi++] = (field_t*)zmalloc(sizeof(field_t));
if (mode & 2) {
if (psp > &port[0] + 1 &&
psp - 1 != hspsp &&
*(psp - 1) == ' ')
psp--;
*psp = '\000';
fp->id = (__extension__ (__builtin_constant_p (&port[0]) && ((size_t)(const void *)((&port[0]) + 1) - (size_t)(const void *)(&port[0]) == 1) ? (((__const char *) (&port[0]))[0] == '\0' ? (char *) calloc (1, 1) : ({ size_t __len = strlen (&port[0]) + 1; char *__retval = (char *) malloc (__len); if (__retval != ((void *)0)) __retval = (char *) memcpy (__retval, &port[0], __len); __retval; })) : __strdup (&port[0])));
hspsp = psp = &port[0];
}
if (!(mode & (1 | 4)))
mode |= 1, *tsp++ = ' ';
if (mode & 1) {
if (tsp > text + 1 &&
tsp - 1 != hstsp &&
*(tsp - 1) == ' ')
tsp--;
*tsp = '\000';
fp->lp = make_label (0,(__extension__ (__builtin_constant_p (text) && ((size_t)(const void *)((text) + 1) - (size_t)(const void *)(text) == 1) ? (((__const char *) (text))[0] == '\0' ? (char *) calloc (1, 1) : ({ size_t __len = strlen (text) + 1; char *__retval = (char *) malloc (__len); if (__retval != ((void *)0)) __retval = (char *) memcpy (__retval, text, __len); __retval; })) : __strdup (text))), (n)->u.label->fontsize, (n)->u.label->fontname, (n)->u.label->fontcolor,n->graph);
fp->LR = (!(0));
hstsp = tsp = text;
}
if (*reclblp) {
if (*reclblp == '}') {
reclblp++;
rv->n_flds = fi;
return rv;
}
mode = 0;
reclblp++;
} else
wflag = 0;
break;
case '\\':
if (*(reclblp + 1)) {
if (((*(reclblp + 1)) == '{' || (*(reclblp + 1)) == '}' || (*(reclblp + 1)) == '|' || (*(reclblp + 1)) == '<' || (*(reclblp + 1)) == '>'))
reclblp++;
else if (*(reclblp + 1) == ' ')
ishardspace = (!(0)), reclblp++;
}
default:
if ((mode & 4) && *reclblp != ' ')
return ((void *)0);
if (!(mode & (8 | 16)) && *reclblp != ' ')
mode |= (8 | 1);
if (mode & 8) {
if (!(*reclblp == ' ' && !ishardspace &&
*(tsp - 1) == ' '))
*tsp++ = *reclblp;
if (ishardspace)
hstsp = tsp - 1;
} else if (mode & 16) {
if (!(*reclblp == ' ' && !ishardspace &&
(psp == &port[0] ||
*(psp - 1) == ' ')))
*psp++ = *reclblp;
if (ishardspace)
hspsp = psp - 1;
}
reclblp++;
while (*reclblp & 128)
*tsp++ = *reclblp++;
break;
}
}
rv->n_flds = fi;
return rv;
}
static point size_reclbl(node_t* n, field_t* f)
{
int i;
char *p;
double marginx,marginy;
point d,d0;
pointf dimen;
if (f->lp) {
dimen = f->lp->dimen;
if ((dimen.x > 0.0) || (dimen.y > 0.0)) {
if ((p = agget(n,"margin"))) {
i = sscanf(p,"%lf,%lf",&marginx,&marginy);
if (i > 0) {
dimen.x += 2 * ((((marginx)*72.0>=0)?(int)((marginx)*72.0 + .5):(int)((marginx)*72.0 - .5)));
if (i > 1) dimen.y += 2 * ((((marginy)*72.0>=0)?(int)((marginy)*72.0 + .5):(int)((marginy)*72.0 - .5)));
else dimen.y += 2 * ((((marginy)*72.0>=0)?(int)((marginy)*72.0 + .5):(int)((marginy)*72.0 - .5)));
}
else {((dimen).x += 4*4); ((dimen).y += 2*4);};
}
else {((dimen).x += 4*4); ((dimen).y += 2*4);};
}
(d.x = ((dimen.x>=0)?(int)(dimen.x + .5):(int)(dimen.x - .5)), d.y = ((dimen.y>=0)?(int)(dimen.y + .5):(int)(dimen.y - .5)));
}
else {
d.x = d.y = 0;
for (i = 0; i < f->n_flds; i++) {
d0 = size_reclbl(n,f->fld[i]);
if (f->LR) { d.x += d0.x; d.y = ((d.y)>(d0.y)?(d.y):(d0.y)); }
else { d.y += d0.y; d.x = ((d.x)>(d0.x)?(d.x):(d0.x)); }
}
}
f->size = d;
return d;
}
static void resize_reclbl(field_t* f, point sz, int nojustify_p)
{
int i,amt;
double inc;
point d,newsz;
field_t *sf;
d.x = sz.x - f->size.x; d.y = sz.y - f->size.y;
f->size = sz;
if (f->lp && ! nojustify_p) {
(f->lp->d.x = d.x, f->lp->d.y = d.y);
}
if (f->n_flds) {
if (f->LR)
inc = (double)d.x/f->n_flds;
else
inc = (double)d.y/f->n_flds;
for (i = 0; i < f->n_flds; i++) {
sf = f->fld[i];
amt = ((int)((i+1)*inc)) - ((int)(i*inc));
if (f->LR)
newsz = pointof(sf->size.x+amt,sz.y);
else
newsz = pointof(sz.x,sf->size.y+amt);
resize_reclbl(sf,newsz,nojustify_p);
}
}
}
static void pos_reclbl(field_t* f, point ul)
{
int i;
f->b.LL = pointof(ul.x,ul.y-f->size.y);
f->b.UR = pointof(ul.x+f->size.x,ul.y);
for (i = 0; i < f->n_flds; i++) {
pos_reclbl(f->fld[i],ul);
if (f->LR) ul.x = ul.x + f->fld[i]->size.x;
else ul.y = ul.y - f->fld[i]->size.y;
}
}
# 1318 "shapes.c"
static void
record_init(node_t *n)
{
field_t *info;
point ul,sz;
int len;
char* textbuf;
reclblp = (n)->u.label->text;
len = strlen (reclblp);
textbuf = (char*)zmalloc((len+1)*sizeof(char));
if (!(info = parse_reclbl(n,(!(((n->graph)->u.rankdir & 1))), (!(0)), textbuf))) {
agerr(AGERR, "bad label format %s\n", (n)->u.label->text);
reclblp = "\\N";
info = parse_reclbl(n,(!(((n->graph)->u.rankdir & 1))), (!(0)), textbuf);
}
free (textbuf);
size_reclbl(n,info);
sz.x = (((((n)->u.width)*72.0>=0)?(int)(((n)->u.width)*72.0 + .5):(int)(((n)->u.width)*72.0 - .5))); sz.y = (((((n)->u.height)*72.0>=0)?(int)(((n)->u.height)*72.0 + .5):(int)(((n)->u.height)*72.0 - .5)));
if (mapbool(late_string(n,N_fixed,"false"))) {
if ((sz.x < info->size.x) || (sz.y < info->size.y)) {
}
}
else {
sz.x = ((info->size.x)>(sz.x)?(info->size.x):(sz.x)); sz.y = ((info->size.y)>(sz.y)?(info->size.y):(sz.y));
}
resize_reclbl(info,sz,mapbool(late_string(n,N_nojustify,"false")));
ul = pointof(-sz.x/2,sz.y/2);
pos_reclbl(info,ul);
(n)->u.width = ((info->size.x)/72.0);
(n)->u.height = ((info->size.y)/72.0);
(n)->u.shape_info = (void*) info;
}
static void record_free(node_t *n)
{
field_t* p = (n)->u.shape_info;
free(p);
}
static field_t * map_rec_port(field_t* f, char* str)
{
field_t *rv;
int sub;
if (f->id && (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (f->id) && __builtin_constant_p (str) && (__s1_len = strlen (f->id), __s2_len = strlen (str), (!((size_t)(const void *)((f->id) + 1) - (size_t)(const void *)(f->id) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((str) + 1) - (size_t)(const void *)(str) == 1) || __s2_len >= 4)) ? __builtin_strcmp (f->id, str) : (__builtin_constant_p (f->id) && ((size_t)(const void *)((f->id) + 1) - (size_t)(const void *)(f->id) == 1) && (__s1_len = strlen (f->id), __s1_len < 4) ? (__builtin_constant_p (str) && ((size_t)(const void *)((str) + 1) - (size_t)(const void *)(str) == 1) ? __builtin_strcmp (f->id, str) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) (str); register int __result = (((__const unsigned char *) (__const char *) (f->id))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (f->id))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (f->id))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (f->id))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (str) && ((size_t)(const void *)((str) + 1) - (size_t)(const void *)(str) == 1) && (__s2_len = strlen (str), __s2_len < 4) ? (__builtin_constant_p (f->id) && ((size_t)(const void *)((f->id) + 1) - (size_t)(const void *)(f->id) == 1) ? __builtin_strcmp (f->id, str) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (f->id); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) (str))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) (str))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) (str))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) (str))[3]); } } __result; }))) : __builtin_strcmp (f->id, str)))); }) == 0)) rv = f;
else {
rv = ((void *)0);
for (sub = 0; sub < f->n_flds; sub++)
if ((rv = map_rec_port(f->fld[sub],str))) break;
}
return rv;
}
static port record_port(node_t *n, char* portname, char* compass)
{
field_t *f;
field_t *subf;
port rv;
if (portname[0] == '\0') return Center;
f = (field_t*) (n)->u.shape_info;
if ((subf = map_rec_port(f,portname))) {
if (compassPort (n, &subf->b, &rv, compass))
agerr(AGWARN, "node %s, port %s, unrecognized compass point '%s' - ignored\n",
n->name,portname,compass);
}
else if (compassPort (n, &f->b, &rv, portname)) {
unrecognized(n,portname);
}
return rv;
}
static boolean record_inside(inside_t *inside_context, pointf p)
{
edge_t *f;
field_t *fld0;
static edge_t *last_e;
static node_t *last_n;
static box bbox;
edge_t *e = inside_context->e;
node_t *n = inside_context->n;
p = flip_ptf(p, (n->graph)->u.rankdir);
for (f = e; (f)->u.edge_type != 0; f = (f)->u.to_orig);
e = f;
if ((e != last_e) || (n != last_n)) {
box* bp;
last_e = e; last_n = n;
bp = ((n) == (e)->head ? (e)->u.head_port.bp : (e)->u.tail_port.bp);
if (bp) bbox = *bp;
else {
fld0 = (field_t*) (n)->u.shape_info;
bbox = fld0->b;
}
}
return ((((bbox.LL.x) <= (p.x)) && ((p.x) <= (bbox.UR.x))) && (((bbox.LL.y) <= (p.y)) && ((p.y) <= (bbox.UR.y))));
}
static int record_path(node_t *n, edge_t *e, int pt, box rv[], int* kptr)
{
int i,side,ls,rs;
point p;
field_t *info;
if (pt == 1) p = (e)->u.tail_port.p;
else p = (e)->u.head_port.p;
info = (field_t*) (n)->u.shape_info;
for (i = 0; i < info->n_flds; i++) {
if (!((n->graph)->u.rankdir & 1))
{ ls = info->fld[i]->b.LL.x; rs = info->fld[i]->b.UR.x; }
else
{ ls = info->fld[i]->b.LL.y; rs = info->fld[i]->b.UR.y; }
if ((((ls) <= (p.x)) && ((p.x) <= (rs)))) {
if (((n->graph)->u.rankdir & 1)) {
rv[0] = flip_rec_box(info->fld[i]->b,(n)->u.coord);
}
else {
rv[0].LL.x = (n)->u.coord.x + ls;
rv[0].LL.y = (n)->u.coord.y - (n)->u.ht/2;
rv[0].UR.x = (n)->u.coord.x + rs;
}
# 1468 "shapes.c"
rv[0].UR.y = (n)->u.coord.y + (n)->u.ht/2;
*kptr = 1;
break;
}
}
if (pt == 1) side = (1<<0); else side = (1<<2);
return side;
}
static void gen_fields(GVC_t *gvc, node_t *n, field_t* f)
{
int i;
double cx,cy;
point A[2];
if (f->lp) {
cx = (f->b.LL.x + f->b.UR.x)/2.0 + (n)->u.coord.x;
cy = (f->b.LL.y + f->b.UR.y)/2.0 + (n)->u.coord.y;
f->lp->p = pointof((int)cx,(int)cy);
emit_label(gvc, f->lp, (void*)n);
}
for (i = 0; i < f->n_flds; i++) {
if (i > 0) {
if (f->LR) {
A[0] = f->fld[i]->b.LL;
A[1].x = A[0].x;
A[1].y = f->fld[i]->b.UR.y;
}
else {
A[1] = f->fld[i]->b.UR;
A[0].x = f->fld[i]->b.LL.x;
A[0].y = A[1].y;
}
A[0] = add_points(A[0],(n)->u.coord);
A[1] = add_points(A[1],(n)->u.coord);
gvrender_polyline(gvc, A, 2);
}
gen_fields(gvc, n, f->fld[i]);
}
}
static void record_gencode(GVC_t *gvc, node_t *n)
{
point A[4];
int i,style;
field_t *f;
f = (field_t*) (n)->u.shape_info;
A[0] = f->b.LL;
A[2] = f->b.UR;
A[1].x = A[2].x; A[1].y = A[0].y;
A[3].x = A[0].x; A[3].y = A[2].y;
for (i = 0; i < 4; i++)
A[i] = add_points(A[i],(n)->u.coord);
style = stylenode(gvc, n);
pencolor(gvc, n);
if (style & (1 << 0))
fillcolor(gvc, n);
if ((*((n)->u.shape->name)==*("Mrecord")&&!__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ((n)->u.shape->name) && __builtin_constant_p ("Mrecord") && (__s1_len = strlen ((n)->u.shape->name), __s2_len = strlen ("Mrecord"), (!((size_t)(const void *)(((n)->u.shape->name) + 1) - (size_t)(const void *)((n)->u.shape->name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("Mrecord") + 1) - (size_t)(const void *)("Mrecord") == 1) || __s2_len >= 4)) ? __builtin_strcmp ((n)->u.shape->name, "Mrecord") : (__builtin_constant_p ((n)->u.shape->name) && ((size_t)(const void *)(((n)->u.shape->name) + 1) - (size_t)(const void *)((n)->u.shape->name) == 1) && (__s1_len = strlen ((n)->u.shape->name), __s1_len < 4) ? (__builtin_constant_p ("Mrecord") && ((size_t)(const void *)(("Mrecord") + 1) - (size_t)(const void *)("Mrecord") == 1) ? __builtin_strcmp ((n)->u.shape->name, "Mrecord") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("Mrecord"); register int __result = (((__const unsigned char *) (__const char *) ((n)->u.shape->name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((n)->u.shape->name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((n)->u.shape->name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) ((n)->u.shape->name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("Mrecord") && ((size_t)(const void *)(("Mrecord") + 1) - (size_t)(const void *)("Mrecord") == 1) && (__s2_len = strlen ("Mrecord"), __s2_len < 4) ? (__builtin_constant_p ((n)->u.shape->name) && ((size_t)(const void *)(((n)->u.shape->name) + 1) - (size_t)(const void *)((n)->u.shape->name) == 1) ? __builtin_strcmp ((n)->u.shape->name, "Mrecord") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) ((n)->u.shape->name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("Mrecord"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("Mrecord"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("Mrecord"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("Mrecord"))[3]); } } __result; }))) : __builtin_strcmp ((n)->u.shape->name, "Mrecord")))); })))
style |= (1 << 1);
if (style & ((1 << 1) | (1 << 2)))
round_corners(gvc, n, A, 4, (1 << 1));
else
gvrender_polygon(gvc, A, 4, style&(1 << 0));
gen_fields(gvc, n, f);
}
static shape_desc **UserShape;
static int N_UserShape;
shape_desc *find_user_shape(char* name)
{
int i;
if (UserShape) {
for (i = 0; i < N_UserShape; i++) {
if ((*(UserShape[i]->name)==*(name)&&!__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (UserShape[i]->name) && __builtin_constant_p (name) && (__s1_len = strlen (UserShape[i]->name), __s2_len = strlen (name), (!((size_t)(const void *)((UserShape[i]->name) + 1) - (size_t)(const void *)(UserShape[i]->name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) || __s2_len >= 4)) ? __builtin_strcmp (UserShape[i]->name, name) : (__builtin_constant_p (UserShape[i]->name) && ((size_t)(const void *)((UserShape[i]->name) + 1) - (size_t)(const void *)(UserShape[i]->name) == 1) && (__s1_len = strlen (UserShape[i]->name), __s1_len < 4) ? (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) ? __builtin_strcmp (UserShape[i]->name, name) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) (name); register int __result = (((__const unsigned char *) (__const char *) (UserShape[i]->name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (UserShape[i]->name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (UserShape[i]->name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (UserShape[i]->name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) && (__s2_len = strlen (name), __s2_len < 4) ? (__builtin_constant_p (UserShape[i]->name) && ((size_t)(const void *)((UserShape[i]->name) + 1) - (size_t)(const void *)(UserShape[i]->name) == 1) ? __builtin_strcmp (UserShape[i]->name, name) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (UserShape[i]->name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) (name))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) (name))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) (name))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) (name))[3]); } } __result; }))) : __builtin_strcmp (UserShape[i]->name, name)))); }))) return UserShape[i];
}
}
return ((void *)0);
}
static shape_desc *user_shape(char* name)
{
int i;
shape_desc *p;
if ((p = find_user_shape(name))) return p;
i = N_UserShape++;
UserShape = (UserShape? (shape_desc**)grealloc(UserShape,(N_UserShape)*sizeof(shape_desc*)):(shape_desc**)gmalloc((N_UserShape)*sizeof(shape_desc*)));
p = UserShape[i] = (shape_desc*)zmalloc(sizeof(shape_desc));
*p = Shapes[0];
p->name = name;
p->usershape = (!(0));
if (Lib == ((void *)0) && __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (name) && __builtin_constant_p ("custom") && (__s1_len = strlen (name), __s2_len = strlen ("custom"), (!((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("custom") + 1) - (size_t)(const void *)("custom") == 1) || __s2_len >= 4)) ? __builtin_strcmp (name, "custom") : (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) && (__s1_len = strlen (name), __s1_len < 4) ? (__builtin_constant_p ("custom") && ((size_t)(const void *)(("custom") + 1) - (size_t)(const void *)("custom") == 1) ? __builtin_strcmp (name, "custom") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("custom"); register int __result = (((__const unsigned char *) (__const char *) (name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("custom") && ((size_t)(const void *)(("custom") + 1) - (size_t)(const void *)("custom") == 1) && (__s2_len = strlen ("custom"), __s2_len < 4) ? (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) ? __builtin_strcmp (name, "custom") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("custom"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("custom"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("custom"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("custom"))[3]); } } __result; }))) : __builtin_strcmp (name, "custom")))); }))
agerr(AGWARN, "using %s for unknown shape %s\n", Shapes[0].name,p->name);
return p;
}
shape_desc * bind_shape(char* name, node_t* np)
{
shape_desc *ptr,*rv= ((void *)0);
char* str;
str = safefile(agget(np,"shapefile"));
if (str && __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (name) && __builtin_constant_p ("epsf") && (__s1_len = strlen (name), __s2_len = strlen ("epsf"), (!((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("epsf") + 1) - (size_t)(const void *)("epsf") == 1) || __s2_len >= 4)) ? __builtin_strcmp (name, "epsf") : (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) && (__s1_len = strlen (name), __s1_len < 4) ? (__builtin_constant_p ("epsf") && ((size_t)(const void *)(("epsf") + 1) - (size_t)(const void *)("epsf") == 1) ? __builtin_strcmp (name, "epsf") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("epsf"); register int __result = (((__const unsigned char *) (__const char *) (name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("epsf") && ((size_t)(const void *)(("epsf") + 1) - (size_t)(const void *)("epsf") == 1) && (__s2_len = strlen ("epsf"), __s2_len < 4) ? (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) ? __builtin_strcmp (name, "epsf") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("epsf"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("epsf"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("epsf"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("epsf"))[3]); } } __result; }))) : __builtin_strcmp (name, "epsf")))); })) name = "custom";
if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (name) && __builtin_constant_p ("custom") && (__s1_len = strlen (name), __s2_len = strlen ("custom"), (!((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("custom") + 1) - (size_t)(const void *)("custom") == 1) || __s2_len >= 4)) ? __builtin_strcmp (name, "custom") : (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) && (__s1_len = strlen (name), __s1_len < 4) ? (__builtin_constant_p ("custom") && ((size_t)(const void *)(("custom") + 1) - (size_t)(const void *)("custom") == 1) ? __builtin_strcmp (name, "custom") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("custom"); register int __result = (((__const unsigned char *) (__const char *) (name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("custom") && ((size_t)(const void *)(("custom") + 1) - (size_t)(const void *)("custom") == 1) && (__s2_len = strlen ("custom"), __s2_len < 4) ? (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) ? __builtin_strcmp (name, "custom") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("custom"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("custom"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("custom"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("custom"))[3]); } } __result; }))) : __builtin_strcmp (name, "custom")))); })) {
for (ptr = Shapes; ptr->name; ptr++) {
if (!__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (ptr->name) && __builtin_constant_p (name) && (__s1_len = strlen (ptr->name), __s2_len = strlen (name), (!((size_t)(const void *)((ptr->name) + 1) - (size_t)(const void *)(ptr->name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) || __s2_len >= 4)) ? __builtin_strcmp (ptr->name, name) : (__builtin_constant_p (ptr->name) && ((size_t)(const void *)((ptr->name) + 1) - (size_t)(const void *)(ptr->name) == 1) && (__s1_len = strlen (ptr->name), __s1_len < 4) ? (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) ? __builtin_strcmp (ptr->name, name) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) (name); register int __result = (((__const unsigned char *) (__const char *) (ptr->name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (ptr->name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (ptr->name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (ptr->name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) && (__s2_len = strlen (name), __s2_len < 4) ? (__builtin_constant_p (ptr->name) && ((size_t)(const void *)((ptr->name) + 1) - (size_t)(const void *)(ptr->name) == 1) ? __builtin_strcmp (ptr->name, name) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (ptr->name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) (name))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) (name))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) (name))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) (name))[3]); } } __result; }))) : __builtin_strcmp (ptr->name, name)))); })) {rv = ptr; break;}
}
}
if (rv == ((void *)0)) rv = user_shape(name);
return rv;
}
static boolean epsf_inside(inside_t *inside_context, pointf p)
{
pointf P;
double x2;
node_t *n = inside_context->n;
P = flip_ptf(p, (n->graph)->u.rankdir);
x2 = (n)->u.ht / 2;
return ((P.y >= -x2) && (P.y <= x2) && (P.x >= -(n)->u.lw) && (P.x <= (n)->u.rw));
}