00001 /* $Id: ingraphs.h,v 1.1 2005/04/09 03:38:19 roxo Exp $ $Revision: 1.1 $ */ 00002 /* vim:set shiftwidth=4 ts=8: */ 00003 00004 /********************************************************** 00005 * This software is part of the graphviz package * 00006 * http://www.graphviz.org/ * 00007 * * 00008 * Copyright (c) 1994-2004 AT&T Corp. * 00009 * and is licensed under the * 00010 * Common Public License, Version 1.0 * 00011 * by AT&T Corp. * 00012 * * 00013 * Information and Software Systems Research * 00014 * AT&T Research, Florham Park NJ * 00015 **********************************************************/ 00016 00017 #ifndef INGRAPHS_H 00018 #define INGRAPHS_H 00019 00020 /* The ingraphs library works with both libagraph and with 00021 * libgraph, with all user-supplied data. For this to work, 00022 * the include file relies upon its context to supply a 00023 * definition of Agraph_t. 00024 */ 00025 00026 #include <stdio.h> 00027 00028 #ifdef __cplusplus 00029 extern "C" { 00030 #endif 00031 00032 typedef Agraph_t *(*opengfn) (FILE *); 00033 00034 typedef struct { 00035 void *(*openf) (char *); 00036 Agraph_t *(*readf) (void *); 00037 int (*closef) (void *); 00038 void *dflt; 00039 } ingdisc; 00040 00041 typedef struct { 00042 char **Files; 00043 int ctr; 00044 void *fp; 00045 ingdisc *fns; 00046 char heap; 00047 } ingraph_state; 00048 00049 extern ingraph_state *newIngraph(ingraph_state *, char **, opengfn); 00050 extern ingraph_state *newIng(ingraph_state *, char **, ingdisc *); 00051 extern void closeIngraph(ingraph_state * sp); 00052 extern Agraph_t *nextGraph(ingraph_state *); 00053 extern char *fileName(ingraph_state *); 00054 00055 #ifdef __cplusplus 00056 } 00057 #endif 00058 #endif