1cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* VCG description handler for Bison.
2cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
3cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 Free Software
4cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   Foundation, Inc.
5cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
6cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   This file is part of Bison, the GNU Compiler Compiler.
7cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
8cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   Bison is free software; you can redistribute it and/or modify
9cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   it under the terms of the GNU General Public License as published by
10cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   the Free Software Foundation; either version 2, or (at your option)
11cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   any later version.
12cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
13cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   Bison is distributed in the hope that it will be useful,
14cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   but WITHOUT ANY WARRANTY; without even the implied warranty of
15cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   GNU General Public License for more details.
17cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
18cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   You should have received a copy of the GNU General Public License
19cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   along with Bison; see the file COPYING.  If not, write to
20cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   Boston, MA 02110-1301, USA.  */
22cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
23cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include <config.h>
24cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include "system.h"
25cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
26cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include <quotearg.h>
27cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
28cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include "vcg.h"
29cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include "vcg_defaults.h"
30cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
31cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Return an unambiguous printable representated, for NAME, suitable
32cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   for C strings.  Use slot 2 since the user may use slots 0 and 1.
33cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   */
34cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
35cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic char const *
36cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectquote (char const *name)
37cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
38cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  return quotearg_n_style (2, c_quoting_style, name);
39cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
40cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
41cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
42cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Initialize a graph with the default values. */
43cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid
44cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectnew_graph (graph *g)
45cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
46cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->title = G_TITLE;
47cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->label = G_LABEL;
48cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
49cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->infos[0] = G_INFOS1;
50cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->infos[1] = G_INFOS2;
51cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->infos[2] = G_INFOS3;
52cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
53cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->color = G_COLOR;
54cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->textcolor = G_TEXTCOLOR;
55cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->bordercolor = G_BORDERCOLOR;
56cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
57cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->width = G_WIDTH;
58cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->height = G_HEIGHT;
59cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->borderwidth = G_BORDERWIDTH;
60cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->x = G_X;
61cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->y = G_Y;
62cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->folding = G_FOLDING;
63cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->shrink = G_SHRINK;
64cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->stretch = G_STRETCH;
65cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
66cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->textmode = G_TEXTMODE;
67cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->shape = G_SHAPE;
68cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
69cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->vertical_order = G_VERTICAL_ORDER;
70cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->horizontal_order = G_HORIZONTAL_ORDER;
71cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
72cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->xmax = G_XMAX; /* Not output. */
73cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->ymax = G_YMAX; /* Not output. */
74cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
75cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->xbase = G_XBASE;
76cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->ybase = G_YBASE;
77cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
78cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->xspace = G_XSPACE;
79cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->yspace = G_YSPACE;
80cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->xlspace = G_XLSPACE; /* Not output. */
81cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
82cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->xraster = G_XRASTER;
83cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->yraster = G_YRASTER;
84cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->xlraster = G_XLRASTER;
85cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
86cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->hidden = G_HIDDEN; /* No default value. */
87cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
88cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->classname = G_CLASSNAME; /* No class name association. */
89cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
90cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->layout_downfactor = G_LAYOUT_DOWNFACTOR;
91cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->layout_upfactor = G_LAYOUT_UPFACTOR;
92cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->layout_nearfactor = G_LAYOUT_NEARFACTOR;
93cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->layout_splinefactor = G_LAYOUT_SPLINEFACTOR;
94cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
95cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->late_edge_labels = G_LATE_EDGE_LABELS;
96cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->display_edge_labels = G_DISPLAY_EDGE_LABELS;
97cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->dirty_edge_labels = G_DIRTY_EDGE_LABELS;
98cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->finetuning = G_FINETUNING;
99cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->ignore_singles = G_IGNORE_SINGLES;
100cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->priority_phase = G_PRIORITY_PHASE;
101cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->manhattan_edges = G_MANHATTAN_EDGES;
102cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->smanhattan_edges = G_SMANHATTAN_EDGES;
103cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->near_edges = G_NEAR_EDGES;
104cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
105cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->orientation = G_ORIENTATION;
106cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->node_alignment = G_NODE_ALIGNMENT;
107cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->port_sharing = G_PORT_SHARING;
108cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->arrow_mode = G_ARROW_MODE;
109cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->treefactor = G_TREEFACTOR;
110cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->spreadlevel = G_SPREADLEVEL;
111cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->crossing_weight = G_CROSSING_WEIGHT;
112cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->crossing_phase2 = G_CROSSING_PHASE2;
113cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->crossing_optimization = G_CROSSING_OPTIMIZATION;
114cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->view = G_VIEW;
115cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
116cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->edges = G_EDGES;
117cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->nodes = G_NODES;
118cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->splines = G_SPLINES;
119cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
120cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->bmax = G_BMAX;
121cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->cmin = G_CMIN;
122cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->cmax = G_CMAX;
123cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->pmin = G_PMIN;
124cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->pmax = G_PMAX;
125cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->rmin = G_RMIN;
126cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->rmax = G_RMAX;
127cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->smax = G_SMAX;
128cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
129cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->node_list = G_NODE_LIST;
130cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->edge_list = G_EDGE_LIST;
131cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
132cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  new_edge (&g->edge);
133cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  new_node (&g->node);
134cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
135cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
136cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Initialize a node with the default values. */
137cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid
138cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectnew_node (node *n)
139cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
140cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  n->title = N_TITLE;
141cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  n->label = N_LABEL;
142cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
143cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  n->locx = N_LOCX; /* Default unspcified. */
144cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  n->locy = N_LOCY; /* Default unspcified. */
145cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
146cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  n->vertical_order = N_VERTICAL_ORDER;	/* Default unspcified. */
147cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  n->horizontal_order = N_HORIZONTAL_ORDER;	/* Default unspcified. */
148cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
149cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  n->width = N_WIDTH; /* We assume that we can't define it now. */
150cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  n->height = N_HEIGHT; /* Also. */
151cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
152cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  n->shrink = N_SHRINK;
153cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  n->stretch = N_STRETCH;
154cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
155cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  n->folding = N_FOLDING; /* No explicit default value. */
156cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
157cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  n->shape = N_SHAPE;
158cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  n->textmode = N_TEXTMODE;
159cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  n->borderwidth = N_BORDERWIDTH;
160cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
161cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  n->color = N_COLOR;
162cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  n->textcolor = N_TEXTCOLOR;
163cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  n->bordercolor = N_BORDERCOLOR;
164cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
165cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  n->infos[0] = N_INFOS1;
166cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  n->infos[1] = N_INFOS2;
167cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  n->infos[2] = N_INFOS3;
168cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
169cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  n->next = N_NEXT;
170cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
171cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
172cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Initialize an edge with the default values. */
173cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid
174cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectnew_edge (edge *e)
175cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
176cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  e->type = E_EDGE_TYPE;
177cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
178cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  e->sourcename = E_SOURCENAME;
179cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  e->targetname = E_TARGETNAME;
180cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  e->label = E_LABEL;
181cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
182cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  e->linestyle = E_LINESTYLE;
183cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  e->thickness = E_THICKNESS;
184cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
185cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  e->class = E_CLASS;
186cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
187cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  e->color = E_COLOR;
188cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  e->textcolor = E_TEXTCOLOR;
189cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  e->arrowcolor = E_ARROWCOLOR;
190cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  e->backarrowcolor = E_BACKARROWCOLOR;
191cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
192cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  e->arrowsize = E_ARROWSIZE;
193cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  e->backarrowsize = E_BACKARROWSIZE;
194cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  e->arrowstyle = E_ARROWSTYLE;
195cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
196cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  e->backarrowstyle = E_BACKARROWSTYLE;
197cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
198cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  e->priority = E_PRIORITY;
199cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
200cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  e->anchor = E_ANCHOR;
201cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
202cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  e->horizontal_order = E_HORIZONTAL_ORDER;
203cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
204cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  e->next = E_NEXT;
205cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
206cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
207cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*----------------------------------------------.
208cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| Get functions.	                        |
209cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| Return string corresponding to an enum value. |
210cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`----------------------------------------------*/
211cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
212cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const char *
213cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectget_color_str (enum color color)
214cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
215cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  switch (color)
216cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    {
217cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    default:		abort ();
218cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case white:		return "white";
219cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case blue:		return "blue";
220cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case red:		return "red";
221cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case green:		return "green";
222cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case yellow:	return "yellow";
223cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case magenta:	return "magenta";
224cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case cyan:		return "cyan";
225cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case darkgrey:	return "darkgrey";
226cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case darkblue:	return "darkblue";
227cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case darkred:	return "darkred";
228cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case darkgreen:	return "darkgreen";
229cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case darkyellow:	return "darkyellow";
230cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case darkmagenta:	return "darkmagenta";
231cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case darkcyan:	return "darkcyan";
232cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case gold:		return "gold";
233cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case lightgrey:	return "lightgrey";
234cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case lightblue:	return "lightblue";
235cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case lightred:	return "lightred";
236cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case lightgreen:	return "lightgreen";
237cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case lightyellow:	return "lightyellow";
238cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case lightmagenta:	return "lightmagenta";
239cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case lightcyan:	return "lightcyan";
240cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case lilac:		return "lilac";
241cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case turquoise:	return "turquoise";
242cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case aquamarine:	return "aquamarine";
243cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case khaki:		return "khaki";
244cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case purple:	return "purple";
245cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case yellowgreen:	return "yellowgreen";
246cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case pink:		return "pink";
247cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case orange:	return "orange";
248cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case orchid:	return "orchid";
249cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case black:		return "black";
250cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    }
251cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
252cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
253cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const char *
254cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectget_textmode_str (enum textmode textmode)
255cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
256cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  switch (textmode)
257cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    {
258cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    default:		abort ();
259cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case centered:	return "center";
260cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case left_justify:	return "left_justify";
261cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case right_justify:	return "right_justify";
262cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    }
263cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
264cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
265cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const char *
266cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectget_shape_str (enum shape shape)
267cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
268cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  switch (shape)
269cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    {
270cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    default:		abort ();
271cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case box:		return "box";
272cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case rhomb:		return "rhomb";
273cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case ellipse:	return "ellipse";
274cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case triangle:	return "triangle";
275cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    }
276cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
277cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
278cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const char *
279cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectget_decision_str (enum decision decision)
280cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
281cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  switch (decision)
282cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    {
283cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    default:	abort ();
284cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case no:	return "no";
285cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case yes:	return "yes";
286cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    }
287cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
288cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
289cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const char *
290cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectget_orientation_str (enum orientation orientation)
291cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
292cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  switch (orientation)
293cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    {
294cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    default:		abort ();
295cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case top_to_bottom:	return "top_to_bottom";
296cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case bottom_to_top: return "bottom_to_top";
297cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case left_to_right: return "left_to_right";
298cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case right_to_left: return "right_to_left";
299cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    }
300cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
301cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
302cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const char *
303cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectget_node_alignment_str (enum alignment alignment)
304cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
305cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  switch (alignment)
306cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    {
307cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    default:		abort ();
308cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case center:	return "center";
309cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case top:		return "top";
310cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case bottom:	return "bottom";
311cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    }
312cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
313cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
314cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const char *
315cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectget_arrow_mode_str (enum arrow_mode arrow_mode)
316cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
317cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  switch (arrow_mode)
318cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    {
319cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    default:		abort ();
320cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case fixed:		return "fixed";
321cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case free_a:	return "free";
322cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    }
323cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
324cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
325cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const char *
326cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectget_crossing_type_str (enum crossing_type crossing_type)
327cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
328cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  switch (crossing_type)
329cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    {
330cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    default:		abort ();
331cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case bary:		return "bary";
332cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case median:	return "median";
333cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case barymedian:	return "barymedian";
334cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case medianbary:	return "medianbary";
335cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    }
336cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
337cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
338cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const char *
339cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectget_view_str (enum view view)
340cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
341cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  /* There is no way with vcg 1.30 to specify a normal view explicitly,
342cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project     so it is an error here if view == normal_view.  */
343cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  switch (view)
344cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    {
345cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    default:		abort ();
346cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case cfish:		return "cfish";
347cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case pfish:		return "pfish";
348cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case fcfish:	return "fcfish";
349cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case fpfish:	return "fpfish";
350cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    }
351cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
352cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
353cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const char *
354cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectget_linestyle_str (enum linestyle linestyle)
355cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
356cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  switch (linestyle)
357cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    {
358cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    default:		abort ();
359cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case continuous:	return "continuous";
360cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case dashed:	return "dashed";
361cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case dotted:	return "dotted";
362cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case invisible:	return "invisible";
363cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    }
364cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
365cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
366cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const char *
367cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectget_arrowstyle_str (enum arrowstyle arrowstyle)
368cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
369cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  switch (arrowstyle)
370cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    {
371cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    default:	abort ();
372cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case solid:	return "solid";
373cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case line:	return "line";
374cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case none:	return "none";
375cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    }
376cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
377cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
378cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*------------------------------.
379cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| Add functions.	        |
380cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| Edge and nodes into a graph.  |
381cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`------------------------------*/
382cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
383cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid
384cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectadd_node (graph *g, node *n)
385cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
386cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  n->next = g->node_list;
387cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->node_list = n;
388cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
389cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
390cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid
391cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectadd_edge (graph *g, edge *e)
392cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
393cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  e->next = g->edge_list;
394cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->edge_list = e;
395cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
396cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
397cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid
398cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectadd_classname (graph *g, int val, const char *name)
399cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
400cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  struct classname *classname = xmalloc (sizeof *classname);
401cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  classname->no = val;
402cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  classname->name = name;
403cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  classname->next = g->classname;
404cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->classname = classname;
405cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
406cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
407cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid
408cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectadd_infoname (graph *g, int integer, const char *str)
409cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
410cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  struct infoname *infoname = xmalloc (sizeof *infoname);
411cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  infoname->integer = integer;
412cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  infoname->chars = str;
413cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  infoname->next = g->infoname;
414cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->infoname = infoname;
415cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
416cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
417cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Build a colorentry struct and add it to the list.  */
418cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid
419cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectadd_colorentry (graph *g, int color_idx, int red_cp,
420cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project		int green_cp, int blue_cp)
421cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
422cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  struct colorentry *ce = xmalloc (sizeof *ce);
423cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  ce->color_index = color_idx;
424cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  ce->red_cp = red_cp;
425cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  ce->green_cp = green_cp;
426cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  ce->blue_cp = blue_cp;
427cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  ce->next = g->colorentry;
428cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  g->colorentry = ce;
429cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
430cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
431cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*-------------------------------------.
432cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| Open and close functions (formatted) |
433cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`-------------------------------------*/
434cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
435cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid
436cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectopen_edge (edge *e, FILE *fout)
437cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
438cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  switch (e->type)
439cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    {
440cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case normal_edge:
441cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      fputs ("\tedge: {\n", fout);
442cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      break;
443cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case back_edge:
444cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      fputs ("\tbackedge: {\n", fout);
445cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      break;
446cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case near_edge:
447cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      fputs ("\tnearedge: {\n", fout);
448cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      break;
449cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case bent_near_edge:
450cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      fputs ("\tbentnearedge: {\n", fout);
451cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      break;
452cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    default:
453cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      fputs ("\tedge: {\n", fout);
454cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    }
455cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
456cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
457cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid
458cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectclose_edge (FILE *fout)
459cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
460cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  fputs ("\t}\n", fout);
461cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
462cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
463cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid
464cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectopen_node (FILE *fout)
465cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
466cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  fputs ("\tnode: {\n", fout);
467cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
468cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
469cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid
470cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectclose_node (FILE *fout)
471cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
472cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  fputs ("\t}\n", fout);
473cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
474cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
475cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid
476cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectopen_graph (FILE *fout)
477cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
478cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  fputs ("graph: {\n", fout);
479cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
480cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
481cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid
482cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectclose_graph (graph *g, FILE *fout)
483cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
484cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  fputc ('\n', fout);
485cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
486cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  /* FIXME: Unallocate nodes and edges if required.  */
487cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  {
488cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    node *n;
489cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
490cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    for (n = g->node_list; n; n = n->next)
491cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      {
492cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	open_node (fout);
493cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	output_node (n, fout);
494cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	close_node (fout);
495cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      }
496cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  }
497cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
498cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  fputc ('\n', fout);
499cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
500cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  {
501cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    edge *e;
502cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
503cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    for (e = g->edge_list; e; e = e->next)
504cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      {
505cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	open_edge (e, fout);
506cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	output_edge (e, fout);
507cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	close_edge (fout);
508cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      }
509cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  }
510cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
511cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  fputs ("}\n", fout);
512cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
513cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
514cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*-------------------------------------------.
515cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| Output functions (formatted) in file FOUT  |
516cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`-------------------------------------------*/
517cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
518cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid
519cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectoutput_node (node *n, FILE *fout)
520cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
521cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (n->title != N_TITLE)
522cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\ttitle:\t%s\n", quote (n->title));
523cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (n->label != N_LABEL)
524cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\tlabel:\t%s\n", quote (n->label));
525cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
526cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if ((n->locx != N_LOCX) && (n->locy != N_LOCY))
527cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\tloc { x: %d  y: %d }\t\n", n->locx, n->locy);
528cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
529cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (n->vertical_order != N_VERTICAL_ORDER)
530cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\tvertical_order:\t%d\n", n->vertical_order);
531cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (n->horizontal_order != N_HORIZONTAL_ORDER)
532cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\thorizontal_order:\t%d\n", n->horizontal_order);
533cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
534cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (n->width != N_WIDTH)
535cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\twidth:\t%d\n", n->width);
536cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (n->height != N_HEIGHT)
537cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\theight:\t%d\n", n->height);
538cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
539cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (n->shrink != N_SHRINK)
540cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\tshrink:\t%d\n", n->shrink);
541cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (n->stretch != N_STRETCH)
542cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\tstretch:\t%d\n", n->stretch);
543cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
544cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (n->folding != N_FOLDING)
545cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\tfolding:\t%d\n", n->folding);
546cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
547cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (n->textmode != N_TEXTMODE)
548cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\ttextmode:\t%s\n",
549cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	     get_textmode_str (n->textmode));
550cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
551cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (n->shape != N_SHAPE)
552cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\tshape:\t%s\n", get_shape_str (n->shape));
553cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
554cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (n->borderwidth != N_BORDERWIDTH)
555cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\tborderwidth:\t%d\n", n->borderwidth);
556cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
557cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (n->color != N_COLOR)
558cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\tcolor:\t%s\n", get_color_str (n->color));
559cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (n->textcolor != N_TEXTCOLOR)
560cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\ttextcolor:\t%s\n",
561cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	     get_color_str (n->textcolor));
562cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (n->bordercolor != N_BORDERCOLOR)
563cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\tbordercolor:\t%s\n",
564cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	     get_color_str (n->bordercolor));
565cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
566cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  {
567cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    int i;
568cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    for (i = 0; i < 3; ++i)
569cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      if (n->infos[i])
570cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	fprintf (fout, "\t\tinfo%d:\t%s\n",
571cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project		 i, quote (n->infos[i]));
572cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  }
573cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
574cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
575cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid
576cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectoutput_edge (edge *e, FILE *fout)
577cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
578cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  /* FIXME: SOURCENAME and TARGETNAME are mandatory
579cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project     so it has to be fatal not to give these informations.  */
580cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (e->sourcename != E_SOURCENAME)
581cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\tsourcename:\t%s\n", quote (e->sourcename));
582cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (e->targetname != E_TARGETNAME)
583cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\ttargetname:\t%s\n", quote (e->targetname));
584cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
585cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (e->label != E_LABEL)
586cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\tlabel:\t%s\n", quote (e->label));
587cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
588cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (e->linestyle != E_LINESTYLE)
589cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\tlinestyle:\t%s\n", get_linestyle_str (e->linestyle));
590cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
591cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (e->thickness != E_THICKNESS)
592cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\tthickness:\t%d\n", e->thickness);
593cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (e->class != E_CLASS)
594cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\tclass:\t%d\n", e->class);
595cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
596cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (e->color != E_COLOR)
597cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\tcolor:\t%s\n", get_color_str (e->color));
598cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (e->color != E_TEXTCOLOR)
599cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\ttextcolor:\t%s\n",
600cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	     get_color_str (e->textcolor));
601cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (e->arrowcolor != E_ARROWCOLOR)
602cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\tarrowcolor:\t%s\n",
603cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	     get_color_str (e->arrowcolor));
604cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (e->backarrowcolor != E_BACKARROWCOLOR)
605cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\tbackarrowcolor:\t%s\n",
606cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	     get_color_str (e->backarrowcolor));
607cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
608cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (e->arrowsize != E_ARROWSIZE)
609cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\tarrowsize:\t%d\n", e->arrowsize);
610cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (e->backarrowsize != E_BACKARROWSIZE)
611cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\tbackarrowsize:\t%d\n", e->backarrowsize);
612cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
613cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (e->arrowstyle != E_ARROWSTYLE)
614cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\tarrowstyle:\t%s\n",
615cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	     get_arrowstyle_str (e->arrowstyle));
616cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (e->backarrowstyle != E_BACKARROWSTYLE)
617cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\tbackarrowstyle:\t%s\n",
618cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	     get_arrowstyle_str (e->backarrowstyle));
619cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
620cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (e->priority != E_PRIORITY)
621cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\tpriority:\t%d\n", e->priority);
622cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (e->anchor != E_ANCHOR)
623cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\tanchor:\t%d\n", e->anchor);
624cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (e->horizontal_order != E_HORIZONTAL_ORDER)
625cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\t\thorizontal_order:\t%d\n", e->horizontal_order);
626cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
627cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
628cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid
629cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectoutput_graph (graph *g, FILE *fout)
630cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
631cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->title)
632cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\ttitle:\t%s\n", quote (g->title));
633cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->label)
634cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tlabel:\t%s\n", quote (g->label));
635cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
636cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  {
637cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    int i;
638cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    for (i = 0; i < 3; ++i)
639cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      if (g->infos[i])
640cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	fprintf (fout, "\tinfo%d:\t%s\n", i, quote (g->infos[i]));
641cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  }
642cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
643cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->color != G_COLOR)
644cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tcolor:\t%s\n", get_color_str (g->color));
645cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->textcolor != G_TEXTCOLOR)
646cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\ttextcolor:\t%s\n", get_color_str (g->textcolor));
647cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->bordercolor != G_BORDERCOLOR)
648cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tbordercolor:\t%s\n",
649cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	     get_color_str (g->bordercolor));
650cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
651cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->width != G_WIDTH)
652cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\twidth:\t%d\n", g->width);
653cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->height != G_HEIGHT)
654cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\theight:\t%d\n", g->height);
655cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->borderwidth != G_BORDERWIDTH)
656cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tborderwidth:\t%d\n", g->borderwidth);
657cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
658cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->x != G_X)
659cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tx:\t%d\n", g->x);
660cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->y != G_Y)
661cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\ty:\t%d\n", g->y);
662cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
663cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->folding != G_FOLDING)
664cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tfolding:\t%d\n", g->folding);
665cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
666cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->shrink != G_SHRINK)
667cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tshrink:\t%d\n", g->shrink);
668cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->stretch != G_STRETCH)
669cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tstretch:\t%d\n", g->stretch);
670cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
671cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->textmode != G_TEXTMODE)
672cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\ttextmode:\t%s\n",
673cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	     get_textmode_str (g->textmode));
674cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
675cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->shape != G_SHAPE)
676cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tshape:\t%s\n", get_shape_str (g->shape));
677cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
678cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->vertical_order != G_VERTICAL_ORDER)
679cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tvertical_order:\t%d\n", g->vertical_order);
680cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->horizontal_order != G_HORIZONTAL_ORDER)
681cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\thorizontal_order:\t%d\n", g->horizontal_order);
682cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
683cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->xmax != G_XMAX)
684cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\txmax:\t%d\n", g->xmax);
685cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->ymax != G_YMAX)
686cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tymax:\t%d\n", g->ymax);
687cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
688cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->xbase != G_XBASE)
689cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\txbase:\t%d\n", g->xbase);
690cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->ybase != G_YBASE)
691cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tybase:\t%d\n", g->ybase);
692cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
693cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->xspace != G_XSPACE)
694cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\txspace:\t%d\n", g->xspace);
695cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->yspace != G_YSPACE)
696cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tyspace:\t%d\n", g->yspace);
697cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->xlspace != G_XLSPACE)
698cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\txlspace:\t%d\n", g->xlspace);
699cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
700cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->xraster != G_XRASTER)
701cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\txraster:\t%d\n", g->xraster);
702cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->yraster != G_YRASTER)
703cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tyraster:\t%d\n", g->yraster);
704cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->xlraster != G_XLRASTER)
705cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\txlraster:\t%d\n", g->xlraster);
706cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
707cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->hidden != G_HIDDEN)
708cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\thidden:\t%d\n", g->hidden);
709cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
710cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  /* FIXME: Unallocate struct list if required.
711cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project     Maybe with a little function.  */
712cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->classname != G_CLASSNAME)
713cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    {
714cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      struct classname *ite;
715cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
716cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      for (ite = g->classname; ite; ite = ite->next)
717cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	fprintf (fout, "\tclassname %d :\t%s\n", ite->no, ite->name);
718cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    }
719cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
720cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->infoname != G_INFONAME)
721cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    {
722cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      struct infoname *ite;
723cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
724cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      for (ite = g->infoname; ite; ite = ite->next)
725cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	fprintf (fout, "\tinfoname %d :\t%s\n", ite->integer, ite->chars);
726cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    }
727cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
728cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->colorentry != G_COLORENTRY)
729cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    {
730cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      struct colorentry *ite;
731cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
732cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      for (ite = g->colorentry; ite; ite = ite->next)
733cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	{
734cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	  fprintf (fout, "\tcolorentry %d :\t%d %d %d\n",
735cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project		   ite->color_index,
736cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project		   ite->red_cp,
737cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project		   ite->green_cp,
738cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project		   ite->blue_cp);
739cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	}
740cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    }
741cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
742cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->layout_downfactor != G_LAYOUT_DOWNFACTOR)
743cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tlayout_downfactor:\t%d\n", g->layout_downfactor);
744cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->layout_upfactor != G_LAYOUT_UPFACTOR)
745cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tlayout_upfactor:\t%d\n", g->layout_upfactor);
746cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->layout_nearfactor != G_LAYOUT_NEARFACTOR)
747cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tlayout_nearfactor:\t%d\n", g->layout_nearfactor);
748cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->layout_splinefactor != G_LAYOUT_SPLINEFACTOR)
749cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tlayout_splinefactor:\t%d\n",
750cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	     g->layout_splinefactor);
751cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
752cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->late_edge_labels != G_LATE_EDGE_LABELS)
753cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tlate_edge_labels:\t%s\n",
754cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	     get_decision_str (g->late_edge_labels));
755cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->display_edge_labels != G_DISPLAY_EDGE_LABELS)
756cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tdisplay_edge_labels:\t%s\n",
757cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	     get_decision_str (g->display_edge_labels));
758cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->dirty_edge_labels != G_DIRTY_EDGE_LABELS)
759cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tdirty_edge_labels:\t%s\n",
760cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	     get_decision_str (g->dirty_edge_labels));
761cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->finetuning != G_FINETUNING)
762cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tfinetuning:\t%s\n",
763cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	     get_decision_str (g->finetuning));
764cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->ignore_singles != G_IGNORE_SINGLES)
765cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tignore_singles:\t%s\n",
766cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	     get_decision_str (g->ignore_singles));
767cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->priority_phase != G_PRIORITY_PHASE)
768cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tpriority_phase:\t%s\n",
769cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	     get_decision_str (g->priority_phase));
770cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->manhattan_edges != G_MANHATTAN_EDGES)
771cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout,
772cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	     "\tmanhattan_edges:\t%s\n",
773cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	     get_decision_str (g->manhattan_edges));
774cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->smanhattan_edges != G_SMANHATTAN_EDGES)
775cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout,
776cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	     "\tsmanhattan_edges:\t%s\n",
777cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	     get_decision_str (g->smanhattan_edges));
778cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->near_edges != G_NEAR_EDGES)
779cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tnear_edges:\t%s\n",
780cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	     get_decision_str (g->near_edges));
781cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
782cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->orientation != G_ORIENTATION)
783cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\torientation:\t%s\n",
784cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	     get_orientation_str (g->orientation));
785cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
786cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->node_alignment != G_NODE_ALIGNMENT)
787cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tnode_alignment:\t%s\n",
788cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	     get_node_alignment_str (g->node_alignment));
789cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
790cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->port_sharing != G_PORT_SHARING)
791cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tport_sharing:\t%s\n",
792cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	     get_decision_str (g->port_sharing));
793cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
794cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->arrow_mode != G_ARROW_MODE)
795cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tarrow_mode:\t%s\n",
796cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	     get_arrow_mode_str (g->arrow_mode));
797cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
798cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->treefactor != G_TREEFACTOR)
799cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\ttreefactor:\t%f\n", g->treefactor);
800cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->spreadlevel != G_SPREADLEVEL)
801cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tspreadlevel:\t%d\n", g->spreadlevel);
802cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
803cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->crossing_weight != G_CROSSING_WEIGHT)
804cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tcrossing_weight:\t%s\n",
805cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	     get_crossing_type_str (g->crossing_weight));
806cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->crossing_phase2 != G_CROSSING_PHASE2)
807cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tcrossing_phase2:\t%s\n",
808cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	     get_decision_str (g->crossing_phase2));
809cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->crossing_optimization != G_CROSSING_OPTIMIZATION)
810cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tcrossing_optimization:\t%s\n",
811cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	     get_decision_str (g->crossing_optimization));
812cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
813cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->view != normal_view)
814cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tview:\t%s\n", get_view_str (g->view));
815cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
816cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->edges != G_EDGES)
817cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tedges:\t%s\n", get_decision_str (g->edges));
818cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
819cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->nodes != G_NODES)
820cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout,"\tnodes:\t%s\n", get_decision_str (g->nodes));
821cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
822cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->splines != G_SPLINES)
823cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tsplines:\t%s\n", get_decision_str (g->splines));
824cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
825cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->bmax != G_BMAX)
826cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tbmax:\t%d\n", g->bmax);
827cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->cmin != G_CMIN)
828cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tcmin:\t%d\n", g->cmin);
829cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->cmax != G_CMAX)
830cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tcmax:\t%d\n", g->cmax);
831cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->pmin != G_PMIN)
832cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tpmin:\t%d\n", g->pmin);
833cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->pmax != G_PMAX)
834cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tpmax:\t%d\n", g->pmax);
835cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->rmin != G_RMIN)
836cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\trmin:\t%d\n", g->rmin);
837cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->rmax != G_RMAX)
838cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\trmax:\t%d\n", g->rmax);
839cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (g->smax != G_SMAX)
840cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    fprintf (fout, "\tsmax:\t%d\n", g->smax);
841cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
842