Graphviz 13.0.0~dev.20250121.0651
|
implements agwrite, agcanon, agstrcanon, and agcanonStr More...
#include <assert.h>
#include <limits.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdio.h>
#include <ctype.h>
#include <cgraph/cghdr.h>
#include <inttypes.h>
#include <util/gv_ctype.h>
#include <util/strcasecmp.h>
Go to the source code of this file.
Data Structures | |
struct | write_info_t |
Macros | |
#define | EMPTY(s) (((s) == 0) || (s)[0] == '\0') |
#define | MAX(a, b) ((a)>(b)?(a):(b)) |
#define | CHKRV(v) {if ((v) == EOF) return EOF;} |
#define | MAX_OUTPUTLINE 128 |
#define | MIN_OUTPUTLINE 60 |
Typedefs | |
typedef void | iochan_t |
Functions | |
static int | ioput (Agraph_t *g, iochan_t *ofile, char *str) |
static int | write_body (Agraph_t *g, iochan_t *ofile, write_info_t *wr_info) |
static write_info_t | before_write (Agraph_t *) |
static void | after_write (write_info_t) |
static int | indent (Agraph_t *g, iochan_t *ofile) |
static bool | is_id_char (char c) |
static bool | is_escape (const char *str) |
static char * | _agstrcanon (char *arg, char *buf) |
static char * | agcanonhtmlstr (const char *arg, char *buf) |
char * | agstrcanon (char *arg, char *buf) |
static char * | getoutputbuffer (const char *str) |
char * | agcanonStr (char *str) |
static int | _write_canonstr (Agraph_t *g, iochan_t *ofile, char *str, bool chk) |
static int | write_canonstr (Agraph_t *g, iochan_t *ofile, char *str, bool known) |
static int | write_dict (Agraph_t *g, iochan_t *ofile, char *name, Dict_t *dict, bool top) |
static int | write_dicts (Agraph_t *g, iochan_t *ofile, bool top) |
static int | write_hdr (Agraph_t *g, iochan_t *ofile, bool top) |
static int | write_trl (Agraph_t *g, iochan_t *ofile) |
static bool | is_anonymous (Agraph_t *g) |
static bool | irrelevant_subgraph (Agraph_t *g) |
static bool | has_no_edges (Agraph_t *g, Agnode_t *n) |
static bool | not_default_attrs (Agraph_t *g, Agnode_t *n) |
static int | write_subgs (Agraph_t *g, iochan_t *ofile, write_info_t *wr_info) |
static int | write_edge_name (Agedge_t *e, iochan_t *ofile, bool terminate) |
static int | write_nondefault_attrs (void *obj, iochan_t *ofile, Dict_t *defdict) |
static int | write_nodename (Agnode_t *n, iochan_t *ofile) |
static int | attrs_written (void *obj) |
static int | write_node (Agraph_t *subg, Agnode_t *n, iochan_t *ofile, Dict_t *d, write_info_t *wr_info) |
static bool | write_node_test (Agraph_t *g, Agnode_t *n, write_info_t *wr_info) |
static int | write_port (Agedge_t *e, iochan_t *ofile, Agsym_t *port) |
static bool | write_edge_test (Agraph_t *g, Agedge_t *e, write_info_t *wr_info) |
static int | write_edge (Agraph_t *subg, Agedge_t *e, iochan_t *ofile, Dict_t *d, write_info_t *wr_info) |
static void | set_attrwf (Agraph_t *g, bool toplevel, bool value) |
int | agwrite (Agraph_t *g, void *ofile) |
Return 0 on success, EOF on failure. | |
static uint64_t | subgdfs (Agraph_t *g, uint64_t ix, write_info_t *wr_info) |
Variables | |
static int | Level |
static int | Max_outputline = MAX_OUTPUTLINE |
static Agsym_t * | Tailport |
static Agsym_t * | Headport |
|
static |
Definition at line 112 of file write.c.
References cnt(), EMPTY, gv_isalnum(), gv_isdigit(), is_escape(), is_id_char(), Max_outputline, NULL, and tok().
Referenced by _write_canonstr(), and agstrcanon().
Definition at line 257 of file write.c.
References _agstrcanon(), agcanonStr(), getoutputbuffer(), ioput(), NULL, and str.
Referenced by write_canonstr(), and write_port().
|
static |
Definition at line 734 of file write.c.
References write_info_t::edge_last_written, free(), write_info_t::node_last_written, and write_info_t::preorder_number.
Referenced by agwrite().
|
static |
Canonicalize html strings.
Definition at line 208 of file write.c.
Referenced by agstrcanon().
|
static |
Definition at line 556 of file write.c.
References AGATTRWF.
Referenced by write_edge(), and write_node().
|
static |
Definition at line 723 of file write.c.
References AGEDGE, AGNODE, AGRAPH, Agraph_s::clos, write_info_t::edge_last_written, gv_calloc(), write_info_t::node_last_written, write_info_t::preorder_number, Agclos_s::seq, set_attrwf(), and subgdfs().
Referenced by agwrite().
|
static |
Definition at line 227 of file write.c.
References len(), MAX, NULL, and str.
Referenced by _write_canonstr(), and agcanonStr().
Definition at line 438 of file write.c.
References agfstin(), agfstout(), and NULL.
Referenced by write_node_test().
Definition at line 59 of file write.c.
References CHKRV, ioput(), and Level.
Referenced by write_dict(), write_edge(), write_hdr(), write_node(), write_nondefault_attrs(), and write_trl().
Definition at line 36 of file write.c.
Referenced by _write_canonstr(), indent(), write_dict(), write_edge(), write_edge_name(), write_hdr(), write_node(), write_nodename(), write_nondefault_attrs(), write_port(), and write_trl().
|
static |
Definition at line 414 of file write.c.
References agattrrec(), agdatadict(), agparent(), agroot(), Agdatadict_s::dict, dtsize(), Agdatadict_s::e, is_anonymous(), Agdatadict_s::n, and Agattr_s::str.
Referenced by write_subgs().
|
static |
is this graph unnamed?
g | Graph to inspect |
Definition at line 397 of file write.c.
References AGDISC, AGID, AgIdDisc, agnameof(), LOCALNAMEPREFIX, and NULL.
Referenced by irrelevant_subgraph().
|
static |
Definition at line 74 of file write.c.
Referenced by _agstrcanon().
|
static |
Definition at line 68 of file write.c.
References gv_isalnum().
Referenced by _agstrcanon().
Definition at line 443 of file write.c.
References agattrrec(), Agsym_s::defval, dtfirst, dtnext, and Agsym_s::id.
Referenced by write_node_test().
|
static |
Definition at line 673 of file write.c.
References AGATTRWF, agfstnode(), agfstout(), agfstsubg(), agnxtnode(), agnxtout(), agnxtsubg(), and set_attrwf().
Referenced by before_write(), and set_attrwf().
|
static |
Definition at line 712 of file write.c.
References agfstsubg(), agnxtsubg(), AGSEQ, write_info_t::preorder_number, and subgdfs().
Referenced by before_write(), and subgdfs().
|
static |
Definition at line 649 of file write.c.
References agdatadict(), agfstnode(), agfstout(), aghead, agnxtnode(), agnxtout(), CHKRV, Agdatadict_s::dict, Agdatadict_s::e, Agdatadict_s::n, prev, write_edge(), write_edge_test(), write_node(), write_node_test(), and write_subgs().
Referenced by agwrite(), and write_subgs().
known | Is str already known to be a reference-counted string? |
Definition at line 270 of file write.c.
References _write_canonstr(), agstrdup(), agstrfree(), and str.
Referenced by write_dict(), write_edge_name(), write_hdr(), write_nodename(), write_nondefault_attrs(), and write_port().
|
static |
Definition at line 286 of file write.c.
References CHKRV, cnt(), Agsym_s::defval, dtfirst, dtnext, dtsearch, dtview(), EMPTY, indent(), ioput(), Level, Agsym_s::name, NULL, Agsym_s::print, top(), view, and write_canonstr().
Referenced by write_dicts().
Definition at line 331 of file write.c.
References agdatadict(), CHKRV, Agdatadict_s::dict, Agdatadict_s::e, Agdatadict_s::g, Agdatadict_s::n, top(), and write_dict().
Referenced by write_hdr().
|
static |
Definition at line 625 of file write.c.
References AGHEAD, agisdirected(), agraphof(), AGSEQ, AGTAIL, attrs_written(), CHKRV, write_info_t::edge_last_written, Headport, indent(), ioput(), write_info_t::preorder_number, Tailport, write_edge_name(), write_nodename(), write_nondefault_attrs(), and write_port().
Referenced by write_body().
Definition at line 474 of file write.c.
References agnameof(), agraphof(), CHKRV, EMPTY, ioput(), Level, and write_canonstr().
Referenced by write_edge(), and write_nondefault_attrs().
|
static |
Definition at line 619 of file write.c.
References AGSEQ, write_info_t::edge_last_written, and write_info_t::preorder_number.
Referenced by write_body().
Definition at line 341 of file write.c.
References agattr(), AGATTRWF, AGEDGE, agisstrict(), agnameof(), agparent(), CHKRV, Agraph_s::desc, Agdesc_s::directed, Headport, HEADPORT_ID, indent(), ioput(), Level, LOCALNAMEPREFIX, NULL, Tailport, TAILPORT_ID, top(), write_canonstr(), and write_dicts().
Referenced by agwrite(), and write_subgs().
|
static |
Definition at line 561 of file write.c.
References agraphof(), AGSEQ, attrs_written(), CHKRV, indent(), ioput(), write_info_t::node_last_written, write_info_t::preorder_number, write_nodename(), and write_nondefault_attrs().
Referenced by write_body().
|
static |
Definition at line 579 of file write.c.
References AGSEQ, has_no_edges(), write_info_t::node_last_written, not_default_attrs(), and write_info_t::preorder_number.
Referenced by write_body().
Definition at line 539 of file write.c.
References AGID, agnameof(), agraphof(), CHKRV, ioput(), and write_canonstr().
Referenced by write_edge(), and write_node().
Definition at line 494 of file write.c.
References agattrrec(), AGATTRWF, AGINEDGE, AGOUTEDGE, agraphof(), AGTYPE, CHKRV, cnt(), Agsym_s::defval, dtfirst, dtnext, Headport, Agsym_s::id, indent(), ioput(), Level, Agsym_s::name, Tailport, write_canonstr(), and write_edge_name().
Referenced by write_edge(), and write_node().
Definition at line 589 of file write.c.
References _write_canonstr(), aghtmlstr(), agraphof(), agxget(), CHKRV, ioput(), and write_canonstr().
Referenced by write_edge().
|
static |
Definition at line 458 of file write.c.
References agfstsubg(), agnxtsubg(), CHKRV, irrelevant_subgraph(), write_body(), write_hdr(), write_subgs(), and write_trl().
Referenced by write_body(), and write_subgs().
|
static |
Definition at line 46 of file write.c.
Referenced by write_edge(), write_hdr(), and write_nondefault_attrs().
|
static |
Definition at line 44 of file write.c.
Referenced by agwrite(), indent(), write_dict(), write_edge_name(), write_hdr(), write_nondefault_attrs(), and write_trl().
|
static |
Definition at line 45 of file write.c.
Referenced by _agstrcanon(), and agwrite().
|
static |
Definition at line 46 of file write.c.
Referenced by write_edge(), write_hdr(), and write_nondefault_attrs().