gcc4 Segmentation fault

John Ellson ellson@research.att.com
Sun Nov 7 03:30:00 GMT 2004


John Ellson wrote:

> 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.
>  
>

Sincere apologies.  I captured the wrong version string.  The problem is 
really with gcc4:

$ /usr/bin/gcc4 --version
gcc4 (GCC) 4.0.0 20041028 (Red Hat 4.0.0-0.9)
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));
>}
>  
>



More information about the Gcc-bugs mailing list