1/* $Id$ $Revision$ */
2/* vim:set shiftwidth=4 ts=8: */
3
4/*************************************************************************
5 * Copyright (c) 2011 AT&T Intellectual Property
6 * All rights reserved. This program and the accompanying materials
7 * are made available under the terms of the Eclipse Public License v1.0
8 * which accompanies this distribution, and is available at
9 * http://www.eclipse.org/legal/epl-v10.html
10 *
11 * Contributors: See CVS logs. Details at http://www.graphviz.org/
12 *************************************************************************/
13
14#ifndef INGRAPHS_H
15#define INGRAPHS_H
16
17/* The ingraphs library works with both libagraph and with
18 * libgraph, with all user-supplied data. For this to work,
19 * the include file relies upon its context to supply a
20 * definition of Agraph_t.
21 */
22
23#include <stdio.h>
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
29 typedef Agraph_t *(*opengfn) (FILE *);
30
31 typedef struct {
32 void *(*openf) (char *);
33 Agraph_t *(*readf) (void *);
34 int (*closef) (void *);
35 void *dflt;
36 } ingdisc;
37
38 typedef struct {
39 union {
40 char** Files;
41 Agraph_t** Graphs;
42 } u;
43 int ctr;
44 int ingraphs;
45 void *fp;
46 ingdisc *fns;
47 char heap;
48 int errors;
49 } ingraph_state;
50
51 extern ingraph_state *newIngraph(ingraph_state *, char **, opengfn);
52 extern ingraph_state *newIng(ingraph_state *, char **, ingdisc *);
53 extern ingraph_state *newIngGraphs(ingraph_state *, Agraph_t**, ingdisc *);
54 extern void closeIngraph(ingraph_state * sp);
55 extern Agraph_t *nextGraph(ingraph_state *);
56 extern char *fileName(ingraph_state *);
57
58#ifdef __cplusplus
59}
60#endif
61#endif
62