/* $Id: utils.h,v 1.41 2011/02/15 16:30:02 erg Exp $ $Revision: 1.41 $ */ /* vim:set shiftwidth=4 ts=8: */ /************************************************************************* * Copyright (c) 2011 AT&T Intellectual Property * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: See CVS logs. Details at http://www.graphviz.org/ *************************************************************************/ #ifndef _UTILS_H #define _UTILS_H 1 #ifdef __cplusplus extern "C" { #endif #ifdef GVDLL #define extern __declspec(dllexport) #else #define extern #endif /*visual studio*/ #ifdef WIN32_DLL #ifndef GVC_EXPORTS #define extern __declspec(dllimport) #endif #endif /*end visual studio*/ #ifndef HAVE_STRCASECMP extern int strcasecmp(const char *s1, const char *s2); #endif #ifndef HAVE_STRNCASECMP extern int strncasecmp(const char *s1, const char *s2, size_t n); #endif extern nodequeue *new_queue(int); extern void free_queue(nodequeue *); extern void enqueue(nodequeue *, Agnode_t *); extern Agnode_t *dequeue(nodequeue *); extern pointf Bezier(pointf *, int, double, pointf *, pointf *); extern void attach_attrs(graph_t * g); extern void attach_attrs_and_arrows(graph_t*, int*, int*); extern char *xml_string(char *str); extern void write_plain(GVJ_t * job, graph_t * g, FILE * f, boolean extend); extern void output_point(agxbuf *xbuf, pointf p); extern char *ps_string(char *s, int); extern char *strdup_and_subst_obj(char *str, void *obj); extern char *xml_url_string(char *s); extern void epsf_emit_body(GVJ_t *job, usershape_t *us); extern void epsf_define(GVJ_t * job); extern void undoClusterEdges(graph_t * g); #ifndef WITH_CGRAPH extern attrsym_t* safe_dcl(graph_t*, void*, char*, char*, attrsym_t * (*fun) (Agraph_t *, char *, char *)); #else extern attrsym_t* safe_dcl(graph_t * g, int obj_kind, char *name, char *def); #endif extern int late_int(void *, Agsym_t *, int, int); extern double late_double(void *, Agsym_t *, double, double); extern char *late_nnstring(void *, Agsym_t *, char *); extern char *late_string(void *, Agsym_t *, char *); extern boolean late_bool(void *, Agsym_t *, int); extern Agnode_t *UF_find(Agnode_t *); extern Agnode_t *UF_union(Agnode_t *, Agnode_t *); extern void UF_remove(Agnode_t *, Agnode_t *); extern void UF_singleton(Agnode_t *); extern void UF_setname(Agnode_t *, Agnode_t *); extern char *Fgets(FILE * fp); extern const char *safefile(const char *filename); extern boolean mapBool(char *, boolean); extern boolean mapbool(char *); extern int maptoken(char *, char **, int *); extern int test_toggle(void); extern void common_init_node(node_t * n); extern int common_init_edge(edge_t * e); extern void updateBB(graph_t * g, textlabel_t * lp); extern void compute_bb(Agraph_t *); extern boolean overlap_node(node_t *n, boxf b); extern boolean overlap_label(textlabel_t *lp, boxf b); extern boolean overlap_edge(edge_t *e, boxf b); extern int processClusterEdges(graph_t * g); extern char *latin1ToUTF8(char *); extern char *htmlEntityUTF8(char *); extern char* utf8ToLatin1 (char* ins); extern char* scanEntity (char* t, agxbuf* xb); extern pointf dotneato_closest(splines * spl, pointf p); extern pointf neato_closest(splines * spl, pointf p); extern pointf spline_at_y(splines * spl, double y); extern Agsym_t *setAttr(graph_t*, void*, char*name, char *value, Agsym_t*); extern void setEdgeType (graph_t* g, int dflt); extern int edgeType (char* s, int dflt); extern int is_a_cluster (Agraph_t* g); /* from postproc.c */ extern void gv_nodesize(Agnode_t * n, boolean flip); /* from timing.c */ extern void start_timer(void); extern double elapsed_sec(void); /* from psusershape.c */ extern void cat_libfile(GVJ_t * job, const char **arglib, const char **stdlib); /**/ #ifdef WIN32 extern void fix_fc(void); #endif #undef extern #ifdef __cplusplus } #endif #endif /* _UTILS_H */