Graphviz 12.0.1~dev.20240715.2254
Loading...
Searching...
No Matches
cghdr.h
Go to the documentation of this file.
1
6/*************************************************************************
7 * Copyright (c) 2011 AT&T Intellectual Property
8 * All rights reserved. This program and the accompanying materials
9 * are made available under the terms of the Eclipse Public License v1.0
10 * which accompanies this distribution, and is available at
11 * https://www.eclipse.org/legal/epl-v10.html
12 *
13 * Contributors: Details at https://graphviz.org
14 *************************************************************************/
15
16#pragma once
17
18#include "config.h"
19
20#ifdef GVDLL
21#ifdef EXPORT_CGHDR
22#define CGHDR_API __declspec(dllexport)
23#else
24#define CGHDR_API __declspec(dllimport)
25#endif
26#endif
27
28#ifndef CGHDR_API
29#define CGHDR_API /* nothing */
30#endif
31
32#include <cgraph.h>
33
34#include <ctype.h>
35#include <sys/types.h>
36#include <stdarg.h>
37#include <stdbool.h>
38#include <stdlib.h>
39#include <string.h>
40#include <assert.h>
41#include <stdint.h>
42
43#define SUCCESS 0
44#define FAILURE -1
45#define LOCALNAMEPREFIX '%'
46
47#define AGDISC(g,d) ((g)->clos->disc.d)
48#define AGCLOS(g,d) ((g)->clos->state.d)
49#define AGNEW(g,t) ((t*)(agalloc(g,sizeof(t))))
50
51 /* functional definitions */
52typedef Agobj_t *(*agobjsearchfn_t) (Agraph_t * g, Agobj_t * obj);
53CGHDR_API int agapply(Agraph_t * g, Agobj_t * obj, agobjfn_t fn, void *arg,
54 int preorder);
55
56 /* global variables */
57extern Agraph_t *Ag_G_global;
58extern char *AgDataRecName;
59
60 /* set ordering disciplines */
68
69 /* internal constructor of graphs and subgraphs */
71int agstrclose(Agraph_t * g);
72
73 /* ref string management */
74void agmarkhtmlstr(char *s);
75
77enum { SEQ_MASK = (1 << (sizeof(unsigned) * 8 - 4)) - 1 };
78
79 /* object set management */
81uint64_t agnextseq(Agraph_t * g, int objtype);
82
83/* dict helper functions */
84Dict_t *agdtopen(Agraph_t * g, Dtdisc_t * disc, Dtmethod_t * method);
85void agdtdisc(Agraph_t * g, Dict_t * dict, Dtdisc_t * disc);
86int agdtdelete(Agraph_t * g, Dict_t * dict, void *obj);
87int agdtclose(Agraph_t * g, Dict_t * dict);
88void agdictobjfree(void *p);
89
93 /* name-value pair operations */
94CGHDR_API Agdatadict_t *agdatadict(Agraph_t *g, bool cflag);
95CGHDR_API Agattr_t *agattrrec(void *obj);
96
101void agedgeattr_init(Agraph_t *g, Agedge_t * e);
104
105 /* parsing and lexing graph files */
106int aagparse(void);
107void aglexinit(Agdisc_t * disc, void *ifile);
108int aaglex(void);
109void aglexeof(void);
110void aglexbad(void);
111
112 /* ID management */
113int agmapnametoid(Agraph_t *g, int objtype, char *str, IDTYPE *result,
114 bool createflag);
115int agallocid(Agraph_t * g, int objtype, IDTYPE request);
116void agfreeid(Agraph_t * g, int objtype, IDTYPE id);
117char *agprintid(Agobj_t * obj);
118int aginternalmaplookup(Agraph_t * g, int objtype, char *str,
119 IDTYPE *result);
120void aginternalmapinsert(Agraph_t * g, int objtype, char *str,
121 IDTYPE result);
122char *aginternalmapprint(Agraph_t * g, int objtype, IDTYPE id);
123int aginternalmapdelete(Agraph_t * g, int objtype, IDTYPE id);
125void agregister(Agraph_t * g, int objtype, void *obj);
126
127 /* internal set operations */
128void agedgesetop(Agraph_t * g, Agedge_t * e, int insertion);
129void agdelnodeimage(Agraph_t * g, Agnode_t * node, void *ignored);
130void agdeledgeimage(Agraph_t * g, Agedge_t * edge, void *ignored);
131CGHDR_API int agrename(Agobj_t * obj, char *newname);
132void agrecclose(Agobj_t * obj);
133
136void agmethod_init(Agraph_t * g, void *obj);
137void agmethod_upd(Agraph_t * g, void *obj, Agsym_t * sym);
138void agmethod_delete(Agraph_t * g, void *obj);
139
140void aginitcb(Agraph_t * g, void *obj, Agcbstack_t * disc);
141void agupdcb(Agraph_t * g, void *obj, Agsym_t * sym, Agcbstack_t * disc);
142void agdelcb(Agraph_t * g, void *obj, Agcbstack_t * disc);
void agfreeid(Agraph_t *g, int objtype, IDTYPE id)
Definition id.c:146
int agstrclose(Agraph_t *g)
Definition refstr.c:63
void aginternalmapclose(Agraph_t *g)
Definition imap.c:198
void aglexbad(void)
Definition scan.c:2483
void agdtdisc(Agraph_t *g, Dict_t *dict, Dtdisc_t *disc)
Definition utils.c:55
void agrecclose(Agobj_t *obj)
Definition rec.c:226
Agnode_t * agfindnode_by_id(Agraph_t *g, IDTYPE id)
Definition node.c:22
char * AgDataRecName
Definition attr.c:171
int aginternalmapdelete(Agraph_t *g, int objtype, IDTYPE id)
Definition imap.c:151
@ SEQ_MASK
Definition cghdr.h:77
int agapply(Agraph_t *g, Agobj_t *obj, agobjfn_t fn, void *arg, int preorder)
Definition apply.c:60
void aginternalmapinsert(Agraph_t *g, int objtype, char *str, IDTYPE result)
Definition imap.c:104
Dtdisc_t Ag_subnode_seq_disc
Definition node.c:313
int agmapnametoid(Agraph_t *g, int objtype, char *str, IDTYPE *result, bool createflag)
Definition id.c:112
void aglexinit(Agdisc_t *disc, void *ifile)
Definition scan.c:845
Agraph_t * agopen1(Agraph_t *g)
Definition graph.c:68
void agdeledgeimage(Agraph_t *g, Agedge_t *edge, void *ignored)
Definition edge.c:304
Dict_t * agdtopen(Agraph_t *g, Dtdisc_t *disc, Dtmethod_t *method)
Definition utils.c:29
int aginternalmaplookup(Agraph_t *g, int objtype, char *str, IDTYPE *result)
Definition imap.c:81
char * aginternalmapprint(Agraph_t *g, int objtype, IDTYPE id)
Definition imap.c:141
int agallocid(Agraph_t *g, int objtype, IDTYPE request)
Definition id.c:141
int agdtdelete(Agraph_t *g, Dict_t *dict, void *obj)
Definition utils.c:39
Dtdisc_t Ag_subedge_seq_disc
Definition edge.c:413
Agraph_t * Ag_G_global
Definition graph.c:24
uint64_t agnextseq(Agraph_t *g, int objtype)
Definition graph.c:153
void agmarkhtmlstr(char *s)
Definition refstr.c:173
int aaglex(void)
Dtdisc_t Ag_mainedge_seq_disc
Definition edge.c:408
void agregister(Agraph_t *g, int objtype, void *obj)
Definition id.c:185
int agrename(Agobj_t *obj, char *newname)
Definition obj.c:40
void agdelnodeimage(Agraph_t *g, Agnode_t *node, void *ignored)
Definition node.c:179
int aagparse(void)
Dtdisc_t Ag_subedge_id_disc
Definition edge.c:424
Dtdisc_t Ag_mainedge_id_disc
Definition edge.c:419
char * agprintid(Agobj_t *obj)
void aglexeof(void)
Definition scan.c:2481
void agdictobjfree(void *p)
Definition utils.c:21
Dtdisc_t Ag_subgraph_seq_disc
Definition graph.c:263
Dtdisc_t Ag_subgraph_id_disc
Definition graph.c:268
int agdtclose(Agraph_t *g, Dict_t *dict)
Definition utils.c:45
void agedgesetop(Agraph_t *g, Agedge_t *e, int insertion)
abstract graph C library, Cgraph API
edge
Definition gmlparse.y:279
Agattr_t * agattrrec(void *obj)
Definition attr.c:229
void agnodeattr_init(Agraph_t *g, Agnode_t *n)
Definition attr.c:404
void agnodeattr_delete(Agnode_t *n)
Definition attr.c:413
void agedgeattr_init(Agraph_t *g, Agedge_t *e)
Definition attr.c:423
void agraphattr_init(Agraph_t *g)
Definition attr.c:373
void agedgeattr_delete(Agedge_t *e)
Definition attr.c:432
Agdatadict_t * agdatadict(Agraph_t *g, bool cflag)
Definition attr.c:48
int agraphattr_delete(Agraph_t *g)
Definition attr.c:384
void agupdcb(Agraph_t *g, void *obj, Agsym_t *sym, Agcbstack_t *disc)
Definition obj.c:112
void agdelcb(Agraph_t *g, void *obj, Agcbstack_t *disc)
Definition obj.c:142
void aginitcb(Agraph_t *g, void *obj, Agcbstack_t *disc)
Definition obj.c:82
void agmethod_delete(Agraph_t *g, void *obj)
Definition obj.c:137
void agmethod_init(Agraph_t *g, void *obj)
Definition obj.c:77
void agmethod_upd(Agraph_t *g, void *obj, Agsym_t *sym)
Definition obj.c:107
void(* agobjfn_t)(Agraph_t *g, Agobj_t *obj, void *arg)
Definition cgraph.h:369
uint64_t IDTYPE
unique per main graph ID
Definition cgraph.h:73
agxbuf * str
Definition htmlparse.c:97
string attribute container
Definition cgraph.h:631
object event callbacks
Definition cgraph.h:399
user's discipline
Definition cgraph.h:337
a generic header of Agraph_s, Agnode_s and Agedge_s
Definition cgraph.h:210
graph or subgraph
Definition cgraph.h:425
string attribute descriptor symbol in Agattr_s.dict
Definition cgraph.h:639
Definition cdt.h:104
Definition grammar.c:93