diff toolboxes/graph_visualisation/include/graphviz/cdt.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/cdt.h	Tue Feb 10 15:05:51 2015 +0000
@@ -0,0 +1,261 @@
+/* $Id: cdt.h,v 1.11 2009/07/24 21:10:19 arif Exp $ $Revision: 1.11 $ */
+/* 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 _CDT_H
+#define _CDT_H		1
+
+/*	Public interface for the dictionary library
+**
+**      Written by Kiem-Phong Vo (05/25/96)
+*/
+
+#define CDT_VERSION	19991101L
+
+#define Void_t		void
+#define _ARG_(x)	x
+#ifndef NIL
+#define NIL(type) ((type)0)
+#endif
+
+#include <string.h>
+
+#if _PACKAGE_ast
+#  include	<ast_std.h>
+#elif _BLD_cdt
+#  include	"ast_common.h"
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+    typedef struct _dtlink_s Dtlink_t;
+    typedef struct _dthold_s Dthold_t;
+    typedef struct _dtdisc_s Dtdisc_t;
+    typedef struct _dtmethod_s Dtmethod_t;
+    typedef struct _dtdata_s Dtdata_t;
+    typedef struct _dt_s Dt_t;
+    typedef struct _dt_s Dict_t;	/* for libdict compatibility */
+    typedef struct _dtstat_s Dtstat_t;
+    typedef Void_t *(*Dtsearch_f) _ARG_((Dt_t *, Void_t *, int));
+    typedef Void_t *(*Dtmake_f) _ARG_((Dt_t *, Void_t *, Dtdisc_t *));
+    typedef void (*Dtfree_f) _ARG_((Dt_t *, Void_t *, Dtdisc_t *));
+    typedef int (*Dtcompar_f)
+	_ARG_((Dt_t *, Void_t *, Void_t *, Dtdisc_t *));
+    typedef unsigned int (*Dthash_f) _ARG_((Dt_t *, Void_t *, Dtdisc_t *));
+    typedef Void_t *(*Dtmemory_f)
+	_ARG_((Dt_t *, Void_t *, size_t, Dtdisc_t *));
+    typedef int (*Dtevent_f) _ARG_((Dt_t *, int, Void_t *, Dtdisc_t *));
+
+    struct _dtlink_s {
+	Dtlink_t *right;	/* right child          */
+	union {
+	    unsigned int _hash;	/* hash value           */
+	    Dtlink_t *_left;	/* left child           */
+	} hl;
+    };
+
+/* private structure to hold an object */
+    struct _dthold_s {
+	Dtlink_t hdr;		/* header               */
+	Void_t *obj;		/* user object          */
+    };
+
+/* method to manipulate dictionary structure */
+    struct _dtmethod_s {
+	Dtsearch_f searchf;	/* search function     */
+	int type;		/* type of operation    */
+    };
+
+/* stuff that may be in shared memory */
+    struct _dtdata_s {
+	int type;		/* type of dictionary                   */
+	Dtlink_t *here;		/* finger to last search element        */
+	union {
+	    Dtlink_t **_htab;	/* hash table                           */
+	    Dtlink_t *_head;	/* linked list                          */
+	} hh;
+	int ntab;		/* number of hash slots                 */
+	int size;		/* number of objects                    */
+	int loop;		/* number of nested loops               */
+    };
+
+/* structure to hold methods that manipulate an object */
+    struct _dtdisc_s {
+	int key;		/* where the key begins in an object    */
+	int size;		/* key size and type                    */
+	int link;		/* offset to Dtlink_t field             */
+	Dtmake_f makef;		/* object constructor                   */
+	Dtfree_f freef;		/* object destructor                    */
+	Dtcompar_f comparf;	/* to compare two objects               */
+	Dthash_f hashf;		/* to compute hash value of an object   */
+	Dtmemory_f memoryf;	/* to allocate/free memory              */
+	Dtevent_f eventf;	/* to process events                    */
+    };
+
+/* the dictionary structure itself */
+    struct _dt_s {
+	Dtsearch_f searchf;	/* search function                      */
+	Dtdisc_t *disc;		/* method to manipulate objs            */
+	Dtdata_t *data;		/* sharable data                        */
+	Dtmemory_f memoryf;	/* function to alloc/free memory        */
+	Dtmethod_t *meth;	/* dictionary method                    */
+	int type;		/* type information                     */
+	int nview;		/* number of parent view dictionaries   */
+	Dt_t *view;		/* next on viewpath                     */
+	Dt_t *walk;		/* dictionary being walked              */
+    };
+
+/* structure to get status of a dictionary */
+    struct _dtstat_s {
+	int dt_meth;		/* method type                          */
+	int dt_size;		/* number of elements                   */
+	int dt_n;		/* number of chains or levels           */
+	int dt_max;		/* max size of a chain or a level       */
+	int *dt_count;		/* counts of chains or levels by size   */
+    };
+
+/* supported storage methods */
+#define DT_SET		0000001	/* set with unique elements             */
+#define DT_BAG		0000002	/* multiset                             */
+#define DT_OSET		0000004	/* ordered set (self-adjusting tree)    */
+#define DT_OBAG		0000010	/* ordered multiset                     */
+#define DT_LIST		0000020	/* linked list                          */
+#define DT_STACK	0000040	/* stack                                */
+#define DT_QUEUE	0000100	/* queue                                */
+#define DT_METHODS	0000177	/* all currently supported methods      */
+
+/* asserts to dtdisc() */
+#define DT_SAMECMP	0000001	/* compare methods equivalent           */
+#define DT_SAMEHASH	0000002	/* hash methods equivalent              */
+
+/* types of search */
+#define DT_INSERT	0000001	/* insert object if not found           */
+#define DT_DELETE	0000002	/* delete object if found               */
+#define DT_SEARCH	0000004	/* look for an object                   */
+#define DT_NEXT		0000010	/* look for next element                */
+#define DT_PREV		0000020	/* find previous element                */
+#define DT_RENEW	0000040	/* renewing an object                   */
+#define DT_CLEAR	0000100	/* clearing all objects                 */
+#define DT_FIRST	0000200	/* get first object                     */
+#define DT_LAST		0000400	/* get last object                      */
+#define DT_MATCH	0001000	/* find object matching key             */
+#define DT_VSEARCH	0002000	/* search using internal representation */
+#define DT_ATTACH	0004000	/* attach an object to the dictionary   */
+#define DT_DETACH	0010000	/* attach an object to the dictionary   */
+
+/* events */
+#define DT_OPEN		1	/* a dictionary is being opened         */
+#define DT_CLOSE	2	/* a dictionary is being closed         */
+#define DT_DISC		3	/* discipline is about to be changed    */
+#define DT_METH		4	/* method is about to be changed        */
+
+
+#if _BLD_cdt && defined(__EXPORT__)
+#define extern	__EXPORT__
+#endif
+#if !_BLD_cdt && defined(GVDLL)
+#define extern	__declspec(dllimport)
+#endif
+#if !_BLD_cdt && defined(__IMPORT__)
+#define extern	__IMPORT__
+#endif
+/*visual studio*/
+#ifdef WIN32_DLL
+#ifndef CDT_EXPORTS
+#define extern __declspec(dllimport)
+#else
+#define extern __declspec(dllexport)
+#endif
+#endif
+/*end visual studio*/
+
+	
+	extern Dtmethod_t *Dtset;
+    extern Dtmethod_t *Dtbag;
+    extern Dtmethod_t *Dtoset;
+    extern Dtmethod_t *Dtobag;
+    extern Dtmethod_t *Dtlist;
+    extern Dtmethod_t *Dtstack;
+    extern Dtmethod_t *Dtqueue;
+
+/* compatibility stuff; will go away */
+#ifndef KPVDEL
+	extern Dtmethod_t *Dtorder;
+    extern Dtmethod_t *Dttree;
+    extern Dtmethod_t *Dthash;
+    extern Dtmethod_t _Dttree;
+    extern Dtmethod_t _Dthash;
+    extern Dtmethod_t _Dtlist;
+    extern Dtmethod_t _Dtqueue;
+    extern Dtmethod_t _Dtstack;
+#endif
+
+#undef extern
+#if _BLD_cdt && defined(__EXPORT__)
+#define extern	__EXPORT__
+#endif
+#if !_BLD_cdt && defined(__IMPORT__) && defined(__EXPORT__)
+#define extern	__IMPORT__
+#endif
+     extern Dt_t *dtopen _ARG_((Dtdisc_t *, Dtmethod_t *));
+    extern int dtclose _ARG_((Dt_t *));
+    extern Dt_t *dtview _ARG_((Dt_t *, Dt_t *));
+    extern Dtdisc_t *dtdisc _ARG_((Dt_t * dt, Dtdisc_t *, int));
+    extern Dtmethod_t *dtmethod _ARG_((Dt_t *, Dtmethod_t *));
+
+    extern Dtlink_t *dtflatten _ARG_((Dt_t *));
+    extern Dtlink_t *dtextract _ARG_((Dt_t *));
+    extern int dtrestore _ARG_((Dt_t *, Dtlink_t *));
+
+    extern int dtwalk
+	_ARG_((Dt_t *, int (*)(Dt_t *, Void_t *, Void_t *), Void_t *));
+
+    extern Void_t *dtrenew _ARG_((Dt_t *, Void_t *));
+
+    extern int dtsize _ARG_((Dt_t *));
+    extern int dtstat _ARG_((Dt_t *, Dtstat_t *, int));
+    extern unsigned int dtstrhash _ARG_((unsigned int, Void_t *, int));
+
+#undef extern
+
+#define _DT_(d)		((Dt_t*)(d))
+#define dtvnext(d)	(_DT_(d)->view)
+#define dtvcount(d)	(_DT_(d)->nview)
+#define dtvhere(d)	(_DT_(d)->walk)
+#define dtlink(d,e)	(((Dtlink_t*)(e))->right)
+#define dtobj(d,e)	((_DT_(d)->disc->link < 0) ? (((Dthold_t*)(e))->obj) : \
+				(Void_t*)((char*)(e) - _DT_(d)->disc->link) )
+#define dtfinger(d)	(_DT_(d)->data->here ? dtobj((d),_DT_(d)->data->here) : \
+				(Void_t*)(0) )
+#define dtfirst(d)	(*(_DT_(d)->searchf))((d),(Void_t*)(0),DT_FIRST)
+#define dtnext(d,o)	(*(_DT_(d)->searchf))((d),(Void_t*)(o),DT_NEXT)
+#define dtlast(d)	(*(_DT_(d)->searchf))((d),(Void_t*)(0),DT_LAST)
+#define dtprev(d,o)	(*(_DT_(d)->searchf))((d),(Void_t*)(o),DT_PREV)
+#define dtsearch(d,o)	(*(_DT_(d)->searchf))((d),(Void_t*)(o),DT_SEARCH)
+#define dtmatch(d,o)	(*(_DT_(d)->searchf))((d),(Void_t*)(o),DT_MATCH)
+#define dtinsert(d,o)	(*(_DT_(d)->searchf))((d),(Void_t*)(o),DT_INSERT)
+#define dtdelete(d,o)	(*(_DT_(d)->searchf))((d),(Void_t*)(o),DT_DELETE)
+#define dtattach(d,o)	(*(_DT_(d)->searchf))((d),(Void_t*)(o),DT_ATTACH)
+#define dtdetach(d,o)	(*(_DT_(d)->searchf))((d),(Void_t*)(o),DT_DETACH)
+#define dtclear(d)	(*(_DT_(d)->searchf))((d),(Void_t*)(0),DT_CLEAR)
+/* A linear congruential hash: h*17 + c + 97531 */
+#define dtcharhash(h,c)	((((unsigned int)(h))<<4) + ((unsigned int)(h)) + \
+			 ((unsigned char)(c)) + 97531 )
+#ifdef __cplusplus
+}
+#endif
+#endif				/* _CDT_H */