/* XML processor/application API for src/xbt/graphxml.dtd.
 *
 * This program was generated with the FleXML XML processor generator.
 * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
 * FleXML is Copyright (C) 2003-2013 Martin Quinson.  All rights reserved.
 * (1.9.6).
 * 
 * There are two, intertwined parts to this program, part A and part B.
 *
 * Part A
 * ------
 * 
 * Some parts, here collectively called "Part A", are found in the 
 * FleXML package.  They are Copyright (C) 1999-2005 Kristoffer Rose
 * and Copyright (C) 2003-2013 Martin Quinson. All rights reserved.
 *
 * You can redistribute, use, perform, display and/or modify "Part A"
 * provided the following two conditions hold:
 *
 * 1. The program is distributed WITHOUT ANY WARRANTY from the author of
 *    FleXML; without even the implied warranty of MERCHANTABILITY or
 *    FITNESS FOR A PARTICULAR PURPOSE.
 *
 * 2. The program distribution conditions do not in any way affect the
 *    distribution conditions of the FleXML system used to generate this
 *    file or any version of FleXML derived from that system.
 *
 * Notice that these are explicit rights granted to you for files
 * generated by the FleXML system.  For your rights in connection with
 * the FleXML system itself please consult the GNU General Public License.
 * 
 * Part B
 * ------
 * 
 * The other parts, here collectively called "Part B", and which came 
 * from the DTD used by FleXML to generate this program, can be 
 * distributed (or not, as the case may be) under the terms of whoever
 * wrote them, provided these terms respect and obey the two conditions 
 * above under the heading "Part A".
 *
 * The author of and contributors to FleXML specifically disclaim
 * any copyright interest in "Part B", unless "Part B" was written 
 * by the author of or contributors to FleXML.
 * 
 */

#ifndef _FLEXML_graphxml_H
#define _FLEXML_graphxml_H

/* XML application entry points. */
XBT_PUBLIC(void) STag_graphxml_graph(void);
XBT_PUBLIC(void) ETag_graphxml_graph(void);
XBT_PUBLIC(void) STag_graphxml_node(void);
XBT_PUBLIC(void) ETag_graphxml_node(void);
XBT_PUBLIC(void) STag_graphxml_edge(void);
XBT_PUBLIC(void) ETag_graphxml_edge(void);

/* XML application data. */
typedef int AT_graphxml_node_name;
#define AU_graphxml_node_name NULL
typedef int AT_graphxml_edge_source;
#define AU_graphxml_edge_source NULL
typedef int AT_graphxml_node_position___y;
#define AU_graphxml_node_position___y NULL
typedef int AT_graphxml_node_position___x;
#define AU_graphxml_node_position___x NULL
typedef int AT_graphxml_edge_data;
#define AU_graphxml_edge_data NULL
typedef int AT_graphxml_edge_target;
#define AU_graphxml_edge_target NULL
typedef enum { AU_graphxml_graph_isDirected, A_graphxml_graph_isDirected_true,A_graphxml_graph_isDirected_false } AT_graphxml_graph_isDirected;
typedef int AT_graphxml_node_label;
#define AU_graphxml_node_label NULL
typedef int AT_graphxml_node_data;
#define AU_graphxml_node_data NULL
typedef int AT_graphxml_edge_label;
#define AU_graphxml_edge_label NULL
typedef int AT_graphxml_edge_length;
#define AU_graphxml_edge_length NULL
typedef int AT_graphxml_edge_name;
#define AU_graphxml_edge_name NULL

/* FleXML-provided data. */
XBT_PUBLIC_DATA(int) graphxml_pcdata_ix;
XBT_PUBLIC_DATA(char *) graphxml_bufferstack;
#define graphxml_pcdata (graphxml_bufferstack + graphxml_pcdata_ix)
XBT_PUBLIC_DATA(AT_graphxml_node_name) AX_graphxml_node_name;
#define A_graphxml_node_name (graphxml_bufferstack + AX_graphxml_node_name)
XBT_PUBLIC_DATA(short int) graphxml_node_name_isset;
XBT_PUBLIC_DATA(AT_graphxml_edge_source) AX_graphxml_edge_source;
#define A_graphxml_edge_source (graphxml_bufferstack + AX_graphxml_edge_source)
XBT_PUBLIC_DATA(short int) graphxml_edge_source_isset;
XBT_PUBLIC_DATA(AT_graphxml_node_position___y) AX_graphxml_node_position___y;
#define A_graphxml_node_position___y (graphxml_bufferstack + AX_graphxml_node_position___y)
XBT_PUBLIC_DATA(short int) graphxml_node_position___y_isset;
XBT_PUBLIC_DATA(AT_graphxml_node_position___x) AX_graphxml_node_position___x;
#define A_graphxml_node_position___x (graphxml_bufferstack + AX_graphxml_node_position___x)
XBT_PUBLIC_DATA(short int) graphxml_node_position___x_isset;
XBT_PUBLIC_DATA(AT_graphxml_edge_data) AX_graphxml_edge_data;
#define A_graphxml_edge_data (graphxml_bufferstack + AX_graphxml_edge_data)
XBT_PUBLIC_DATA(short int) graphxml_edge_data_isset;
XBT_PUBLIC_DATA(AT_graphxml_edge_target) AX_graphxml_edge_target;
#define A_graphxml_edge_target (graphxml_bufferstack + AX_graphxml_edge_target)
XBT_PUBLIC_DATA(short int) graphxml_edge_target_isset;
XBT_PUBLIC_DATA(AT_graphxml_graph_isDirected) AX_graphxml_graph_isDirected;
#define A_graphxml_graph_isDirected AX_graphxml_graph_isDirected
XBT_PUBLIC_DATA(short int) graphxml_graph_isDirected_isset;
XBT_PUBLIC_DATA(AT_graphxml_node_label) AX_graphxml_node_label;
#define A_graphxml_node_label (graphxml_bufferstack + AX_graphxml_node_label)
XBT_PUBLIC_DATA(short int) graphxml_node_label_isset;
XBT_PUBLIC_DATA(AT_graphxml_node_data) AX_graphxml_node_data;
#define A_graphxml_node_data (graphxml_bufferstack + AX_graphxml_node_data)
XBT_PUBLIC_DATA(short int) graphxml_node_data_isset;
XBT_PUBLIC_DATA(AT_graphxml_edge_label) AX_graphxml_edge_label;
#define A_graphxml_edge_label (graphxml_bufferstack + AX_graphxml_edge_label)
XBT_PUBLIC_DATA(short int) graphxml_edge_label_isset;
XBT_PUBLIC_DATA(AT_graphxml_edge_length) AX_graphxml_edge_length;
#define A_graphxml_edge_length (graphxml_bufferstack + AX_graphxml_edge_length)
XBT_PUBLIC_DATA(short int) graphxml_edge_length_isset;
XBT_PUBLIC_DATA(AT_graphxml_edge_name) AX_graphxml_edge_name;
#define A_graphxml_edge_name (graphxml_bufferstack + AX_graphxml_edge_name)
XBT_PUBLIC_DATA(short int) graphxml_edge_name_isset;

/* XML application utilities. */
XBT_PUBLIC(int) graphxml_element_context(int);

/* XML processor entry point. */
XBT_PUBLIC(int) yylex(void);

/* Flexml error handling function (useful only when -q flag passed to flexml) */
const char * graphxml_parse_err_msg(void);
#endif
