diff toolboxes/graph_visualisation/include/graphviz/graph.h @ 0:e9a9cd732c1e tip

first hg version after svn
author wolffd
date Tue, 10 Feb 2015 15:05:51 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/toolboxes/graph_visualisation/include/graphviz/graph.h	Tue Feb 10 15:05:51 2015 +0000
@@ -0,0 +1,236 @@
+/* $Id: graph.h,v 1.20 2009/06/03 01:10:53 ellson Exp $ $Revision: 1.20 $ */
+/* vim:set shiftwidth=4 ts=8: */
+
+/**********************************************************
+*      This software is part of the graphviz package      *
+*                http://www.graphviz.org/                 *
+*                                                         *
+*            Copyright (c) 1994-2004 AT&T Corp.           *
+*                and is licensed under the                *
+*            Common Public License, Version 1.0           *
+*                      by AT&T Corp.                      *
+*                                                         *
+*        Information and Software Systems Research        *
+*              AT&T Research, Florham Park NJ             *
+**********************************************************/
+
+
+
+#ifndef _GRAPH_H
+#define _GRAPH_H 1
+
+#if _PACKAGE_ast
+#include    <ast.h>
+#else
+#include <sys/types.h>
+#include <stdlib.h>
+#endif
+#include <stdio.h>
+#include "cdt.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define TAIL_ID				"tailport"
+#define HEAD_ID				"headport"
+
+    typedef struct Agraph_t Agraph_t;
+    typedef struct Agnode_t Agnode_t;
+    typedef struct Agedge_t Agedge_t;
+    typedef struct Agdict_t Agdict_t;
+    typedef struct Agsym_t Agsym_t;
+    typedef struct Agdata_t Agdata_t;
+    typedef struct Agproto_t Agproto_t;
+
+    typedef char *(*gets_f) (char *ubuf, int n, FILE * fp);
+
+#define AGFLAG_DIRECTED		(1<<0)
+#define AGFLAG_STRICT		(1<<1)
+#define AGFLAG_METAGRAPH	(1<<2)
+
+#define	AGRAPH				0
+#define	AGRAPHSTRICT		(AGRAPH | AGFLAG_STRICT)
+#define AGDIGRAPH 			AGFLAG_DIRECTED
+#define AGDIGRAPHSTRICT		(AGDIGRAPH | AGFLAG_STRICT)
+#define AGMETAGRAPH			(AGFLAG_DIRECTED | AGFLAG_STRICT | AGFLAG_METAGRAPH)
+
+#define AG_IS_DIRECTED(g)	((g)->kind & AGFLAG_DIRECTED)
+#define AG_IS_STRICT(g)		((g)->kind & AGFLAG_STRICT)
+#define AG_IS_METAGRAPH(g)	((g)->kind & AGFLAG_METAGRAPH)
+#define aginit()			aginitlib(sizeof(Agraph_t),sizeof(Agnode_t),sizeof(Agedge_t))
+
+    struct Agraph_t {
+	int tag:4;
+	int kind:4;
+	int handle:24;
+	char **attr;
+	char *didset;
+	char *name;
+	Agdata_t *univ;
+	Dict_t *nodes, *inedges, *outedges;
+	Agraph_t *root;
+	Agnode_t *meta_node;
+	Agproto_t *proto;
+	Agraphinfo_t u;
+    };
+
+    struct Agnode_t {
+	int tag:4;
+	int pad:4;
+	int handle:24;
+	char **attr;
+	char *didset;
+	char *name;
+	int id;
+	Agraph_t *graph;
+	Agnodeinfo_t u;
+    };
+
+    struct Agedge_t {
+	int tag:4;
+	int printkey:4;
+	int handle:24;
+	char **attr;
+	char *didset;
+	Agnode_t *head, *tail;
+	int id;
+	Agedgeinfo_t u;
+    };
+
+    struct Agdata_t {		/* for main graph */
+	Dict_t *node_dict;
+	Agdict_t *nodeattr;
+	Agdict_t *edgeattr;
+	Agdict_t *globattr;
+	int max_node_id, max_edge_id;
+    };
+
+    struct Agsym_t {
+	char *name, *value;
+	int index;
+	unsigned char printed;
+	unsigned char fixed;
+    };
+
+    struct Agdict_t {
+	char *name;
+	Dict_t *dict;
+	Agsym_t **list;
+    };
+
+    struct Agproto_t {
+	Agnode_t *n;
+	Agedge_t *e;
+	Agproto_t *prev;
+    };
+
+#if _PACKAGE_ast
+     _BEGIN_EXTERNS_		/* public data */
+#if _BLD_graph && defined(__EXPORT__)
+#define extern  __EXPORT__
+#endif
+#if !_BLD_graph && defined(__IMPORT__) && 0
+#define extern  __IMPORT__
+#endif
+#endif
+
+/*visual studio*/
+#ifdef WIN32_DLL
+#ifndef GRAPH_EXPORTS
+#define extern __declspec(dllimport)
+#endif
+#endif
+/*end visual studio*/
+    extern char *agstrcanon(char *, char *);
+    extern char *agcanonical(char *);
+    extern char *agcanon(char *);
+    extern int aghtmlstr(char *s);
+    extern char *agget(void *, char *);
+    extern char *agxget(void *, int);
+    extern int agset(void *, char *, char *);
+    extern int agsafeset(void *, char *, char *, char*);
+    extern int agxset(void *, int, char *);
+    extern int agindex(void *, char *);
+
+    extern void aginitlib(int, int, int);
+    extern Agraph_t *agopen(char *, int);
+    extern Agraph_t *agsubg(Agraph_t *, char *);
+    extern Agraph_t *agfindsubg(Agraph_t *, char *);
+    extern void agclose(Agraph_t *);
+    extern Agraph_t *agread(FILE *);
+    extern Agraph_t *agread_usergets(FILE *, gets_f);
+    extern void agreadline(int);
+    extern void agsetfile(char *);
+    extern Agraph_t *agmemread(char *);
+    extern void agsetiodisc(
+        char * (*myfgets) (char *s, int size, FILE *stream),
+	size_t (*myfwrite) (const void *ptr, size_t size, size_t nmemb, FILE *stream),
+	int (*myferror) (FILE *stream) );
+    extern int agputs(const char *s, FILE *fp);
+    extern int agputc(int c, FILE *fp);
+    extern int agwrite(Agraph_t *, FILE *);
+    extern int agerrors(void);
+    extern Agraph_t *agprotograph(void);
+    extern Agnode_t *agprotonode(Agraph_t *);
+    extern Agedge_t *agprotoedge(Agraph_t *);
+    extern Agraph_t *agusergraph(Agnode_t *);
+    extern int agnnodes(Agraph_t *);
+    extern int agnedges(Agraph_t *);
+
+    extern void aginsert(Agraph_t *, void *);
+    extern void agdelete(Agraph_t *, void *);
+    extern int agcontains(Agraph_t *, void *);
+
+    extern Agnode_t *agnode(Agraph_t *, char *);
+    extern Agnode_t *agfindnode(Agraph_t *, char *);
+    extern Agnode_t *agfstnode(Agraph_t *);
+    extern Agnode_t *agnxtnode(Agraph_t *, Agnode_t *);
+    extern Agnode_t *aglstnode(Agraph_t *);
+    extern Agnode_t *agprvnode(Agraph_t *, Agnode_t *);
+
+    extern Agedge_t *agedge(Agraph_t *, Agnode_t *, Agnode_t *);
+    extern Agedge_t *agfindedge(Agraph_t *, Agnode_t *, Agnode_t *);
+    extern Agedge_t *agfstedge(Agraph_t *, Agnode_t *);
+    extern Agedge_t *agnxtedge(Agraph_t *, Agedge_t *, Agnode_t *);
+    extern Agedge_t *agfstin(Agraph_t *, Agnode_t *);
+    extern Agedge_t *agnxtin(Agraph_t *, Agedge_t *);
+    extern Agedge_t *agfstout(Agraph_t *, Agnode_t *);
+    extern Agedge_t *agnxtout(Agraph_t *, Agedge_t *);
+
+    extern Agsym_t *agattr(void *, char *, char *);
+    extern Agsym_t *agraphattr(Agraph_t *, char *, char *);
+    extern Agsym_t *agnodeattr(Agraph_t *, char *, char *);
+    extern Agsym_t *agedgeattr(Agraph_t *, char *, char *);
+    extern Agsym_t *agfindattr(void *, char *);
+    extern Agsym_t *agfstattr(void *);
+    extern Agsym_t *agnxtattr(void *, Agsym_t *);
+    extern Agsym_t *aglstattr(void *);
+    extern Agsym_t *agprvattr(void *, Agsym_t *);
+    extern int      agcopyattr(void *, void *);	
+
+    typedef enum { AGWARN, AGERR, AGMAX, AGPREV } agerrlevel_t;
+    extern agerrlevel_t agerrno;
+    extern void agseterr(agerrlevel_t);
+    extern char *aglasterr(void);
+    extern int agerr(agerrlevel_t level, char *fmt, ...);
+    extern void agerrorf(const char *fmt, ...);
+    extern void agwarningf(char *fmt, ...);
+
+    extern char *agstrdup(char *);
+    extern char *agstrdup_html(char *s);
+    extern void agstrfree(char *);
+
+    typedef enum { AGNODE = 1, AGEDGE, AGGRAPH } agobjkind_t;
+#define agobjkind(p)		((agobjkind_t)(((Agraph_t*)(p))->tag))
+
+#define agmetanode(g)		((g)->meta_node)
+
+#undef extern
+#if _PACKAGE_ast
+     _END_EXTERNS_
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif				/* _GRAPH_H */