Mercurial > hg > camir-aes2014
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 */