Graphviz 15.1.0
Loading...
Searching...
No Matches
actions.c File Reference
#include "config.h"
#include <ast/ast.h>
#include <ast/error.h>
#include <cgraph/agstrcanon.h>
#include <gvpr/actions.h>
#include <gvpr/compile.h>
#include <limits.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <util/agxbuf.h>
#include <util/alloc.h>
#include <util/gv_ctype.h>
#include <util/strcasecmp.h>
#include <util/unreachable.h>
#include <util/unused.h>
#include "../common/colxlate.c"
Include dependency graph for actions.c:

Go to the source code of this file.

Data Structures

struct  edgepair_t
 

Macros

#define CCMARKED(n)   (((nData(n))->iu.integer) & 2)
 
#define CCMARK(n)   (((nData(n))->iu.integer) |= 2)
 
#define CCUNMARK(n)   (((nData(n))->iu.integer) &= ~2)
 
#define COLORPROCS_API   static UNUSED
 

Functions

static const char * kinds (Agobj_t *obj)
 
Agraph_tsameG (void *obj1, void *obj2, char *fn, char *msg)
 
int indexOf (char *s1, char *s2)
 return index of leftmost string s2 in string s1, or -1
 
long rindexOf (char *s1, char *s2)
 return index of rightmost string s2 in string s1, or -1
 
size_t match (char *str, char *pat)
 return index of pattern pat in string str, or SIZE_MAX
 
int copyAttr (Agobj_t *src, Agobj_t *tgt)
 
Agobj_tcopy (Agraph_t *g, Agobj_t *obj)
 
static Agedge_tmapEdge (Dt_t *emap, Agedge_t *e)
 
static Agraph_tcloneSubg (Agraph_t *tgt, Agraph_t *g, Dt_t *emap)
 clone subgraph sg in tgt
 
static int cmppair (void *k1, void *k2)
 
static void cloneGraph (Agraph_t *tgt, Agraph_t *src)
 clone node, edge and subgraph structure from src to tgt
 
Agraph_tcloneG (Agraph_t *g, char *name)
 
Agobj_tcloneO (Agraph_t *g, Agobj_t *obj)
 
static void cc_dfs (Agraph_t *g, Agraph_t *comp, Agnode_t *n)
 
Agraph_tcompOf (Agraph_t *g, Agnode_t *n)
 return connected component of node
 
Agedge_tisEdge (Agraph_t *g, Agnode_t *t, Agnode_t *h, char *key)
 
Agnode_taddNode (Agraph_t *gp, Agnode_t *np, int doAdd)
 
Agedge_taddEdge (Agraph_t *gp, Agedge_t *ep, int doAdd)
 
int lockGraph (Agraph_t *g, int v)
 
int deleteObj (Agraph_t *g, Agobj_t *obj)
 
int sfioWrite (Agraph_t *g, FILE *fp)
 
int writeFile (Agraph_t *g, char *f)
 
Agraph_treadFile (char *f)
 
int fwriteFile (Expr_t *ex, Agraph_t *g, long long fd)
 
Agraph_tfreadFile (Expr_t *ex, long long fd)
 
int openFile (Expr_t *ex, const char *fname, const char *mode)
 
int closeFile (Expr_t *ex, long long fd)
 
char * readLine (Expr_t *ex, long long fd)
 
int compare (Agobj_t *l, Agobj_t *r)
 lexicographic ordering of objects
 
char * toLower (Expr_t *pgm, char *src)
 convert characters to lowercase
 
char * toUpper (Expr_t *pgm, char *src)
 convert characters to uppercase
 
char * toHtml (Agraph_t *g, char *arg)
 create a string marked as HTML
 
char * canon (Expr_t *pgm, char *arg)
 canonicalize a string for printing
 
char * colorx (Expr_t *ex, const char *incolor, char *fmt)
 RGB, RGBA, HSV, HSVA.
 

Variables

static Dtdisc_t edgepair
 

Macro Definition Documentation

◆ CCMARK

#define CCMARK (   n)    (((nData(n))->iu.integer) |= 2)

Definition at line 378 of file actions.c.

◆ CCMARKED

#define CCMARKED (   n)    (((nData(n))->iu.integer) & 2)

Definition at line 377 of file actions.c.

◆ CCUNMARK

#define CCUNMARK (   n)    (((nData(n))->iu.integer) &= ~2)

Definition at line 379 of file actions.c.

◆ COLORPROCS_API

#define COLORPROCS_API   static UNUSED

Definition at line 733 of file actions.c.

Function Documentation

◆ addEdge()

Agedge_t * addEdge ( Agraph_t gp,
Agedge_t ep,
int  doAdd 
)

Definition at line 446 of file actions.c.

References agsubedge(), and sameG().

Here is the call graph for this function:

◆ addNode()

Agnode_t * addNode ( Agraph_t gp,
Agnode_t np,
int  doAdd 
)

Definition at line 437 of file actions.c.

References agsubnode(), and sameG().

Here is the call graph for this function:

◆ canon()

char * canon ( Expr_t pgm,
char *  arg 
)

Definition at line 716 of file actions.c.

References agstrcanon(), agstrcanon_bytes(), and exstralloc().

Here is the call graph for this function:

◆ cc_dfs()

static void cc_dfs ( Agraph_t g,
Agraph_t comp,
Agnode_t n 
)
static

Definition at line 381 of file actions.c.

References agfstedge(), aghead, AGID, agidnode(), agnxtedge(), agtail, cc_dfs(), CCMARK, and CCMARKED.

Referenced by cc_dfs(), and compOf().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ cloneG()

Agraph_t * cloneG ( Agraph_t g,
char *  name 
)

Definition at line 309 of file actions.c.

References agnameof(), Agraph_s::base, cloneGraph(), copyAttr(), Agraph_s::desc, and openG().

Referenced by getval().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ cloneGraph()

static void cloneGraph ( Agraph_t tgt,
Agraph_t src 
)
static

Definition at line 263 of file actions.c.

References agfstnode(), agfstout(), agfstsubg(), aghead, AGMKOUT, agnameof(), agnedges(), agnxtnode(), agnxtout(), agnxtsubg(), agtail, Agnode_s::base, Agedge_s::base, cloneSubg(), copy(), dtclose(), dtinsert, dtopen(), Dtoset, edgepair, exerror(), free(), gv_calloc(), edgepair_t::key, and edgepair_t::val.

Referenced by cloneG(), and cloneO().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ cloneO()

Agobj_t * cloneO ( Agraph_t g,
Agobj_t obj 
)

Definition at line 329 of file actions.c.

References aghead, AGINEDGE, AGMKOUT, agnameof(), AGNODE, AGOUTEDGE, AGRAPH, agtail, AGTYPE, cloneGraph(), cloneO(), copyAttr(), exerror(), OBJ, openEdge(), openG(), openNode(), openSubg(), and UNREACHABLE.

Referenced by addOutputGraph(), cloneO(), getval(), and gvpr_core().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ cloneSubg()

static Agraph_t * cloneSubg ( Agraph_t tgt,
Agraph_t g,
Dt_t emap 
)
static

Definition at line 196 of file actions.c.

References agfstnode(), agfstout(), agfstsubg(), aghead, AGMKOUT, agnameof(), agnode(), agnxtnode(), agnxtout(), agnxtsubg(), agsubedge(), agsubnode(), agtail, cloneSubg(), copy(), exerror(), mapEdge(), and OBJ.

Referenced by cloneGraph(), and cloneSubg().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ closeFile()

int closeFile ( Expr_t ex,
long long  fd 
)

Definition at line 604 of file actions.c.

References elementsof, exerror(), and Expr_s::file.

Referenced by getval().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ cmppair()

static int cmppair ( void *  k1,
void *  k2 
)
static

Definition at line 244 of file actions.c.

◆ colorx()

char * colorx ( Expr_t ex,
const char *  incolor,
char *  fmt 
)

Definition at line 738 of file actions.c.

References agxbfree(), agxbprint(), agxbuse(), alpha, color(), COLOR_OK, colorxlate(), exstring(), HSVA_DOUBLE, RGBA_BYTE, and type.

Referenced by getval().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ compare()

int compare ( Agobj_t l,
Agobj_t r 
)

Definition at line 650 of file actions.c.

References AGID, AGTYPE, and NULL.

Referenced by binary().

Here is the caller graph for this function:

◆ compOf()

Agraph_t * compOf ( Agraph_t g,
Agnode_t n 
)

Definition at line 398 of file actions.c.

References agfstnode(), AGID, agidnode(), agnxtnode(), cc_dfs(), CCUNMARK, cg(), id, and openSubg().

Referenced by getval().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ copy()

Agobj_t * copy ( Agraph_t g,
Agobj_t obj 
)

Definition at line 139 of file actions.c.

References aghead, AGINEDGE, AGMKOUT, agnameof(), AGNODE, AGOUTEDGE, AGRAPH, agtail, AGTYPE, copyAttr(), exerror(), openEdge(), openG(), openNode(), openSubg(), and UNREACHABLE.

Referenced by cloneGraph(), cloneSubg(), getval(), gv_strdup(), gv_strndup(), and prformat().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ copyAttr()

int copyAttr ( Agobj_t src,
Agobj_t tgt 
)

Definition at line 106 of file actions.c.

References agattr_text(), agattrsym(), aghtmlstr(), agnxtattr(), agraphof(), agstrdup_html(), agstrfree(), AGTYPE, agxget(), agxset(), Agsym_s::defval, and Agsym_s::name.

Referenced by cloneG(), cloneO(), and copy().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ deleteObj()

int deleteObj ( Agraph_t g,
Agobj_t obj 
)

Definition at line 487 of file actions.c.

References agclose(), agdelete(), agnameof(), AGRAPH, agraphof(), agroot(), AGTYPE, error, ERROR_WARNING, gData, gval_t::lock, gvlock_t::locked, and gvlock_t::zombie.

Referenced by getval().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ freadFile()

Agraph_t * freadFile ( Expr_t ex,
long long  fd 
)

Definition at line 576 of file actions.c.

References elementsof, exerror(), Expr_s::file, and readG().

Referenced by getval().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fwriteFile()

int fwriteFile ( Expr_t ex,
Agraph_t g,
long long  fd 
)

Definition at line 566 of file actions.c.

References elementsof, exerror(), Expr_s::file, and sfioWrite().

Referenced by getval().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ indexOf()

int indexOf ( char *  s1,
char *  s2 
)

Definition at line 61 of file actions.c.

References NULL, and s1().

Referenced by getval().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ isEdge()

Agedge_t * isEdge ( Agraph_t g,
Agnode_t t,
Agnode_t h,
char *  key 
)

Definition at line 419 of file actions.c.

References agedge(), agroot(), and sameG().

Referenced by getval(), and strdup_and_subst_obj0().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ kinds()

static const char * kinds ( Agobj_t obj)
static

Definition at line 36 of file actions.c.

References AGNODE, AGRAPH, and AGTYPE.

Referenced by sameG().

Here is the caller graph for this function:

◆ lockGraph()

int lockGraph ( Agraph_t g,
int  v 
)

Definition at line 460 of file actions.c.

References agclose(), agroot(), error, ERROR_WARNING, gData, gval_t::lock, gvlock_t::locked, and gvlock_t::zombie.

Referenced by getval().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ mapEdge()

static Agedge_t * mapEdge ( Dt_t emap,
Agedge_t e 
)
static

Definition at line 187 of file actions.c.

References dtmatch, NULL, and edgepair_t::val.

Referenced by cloneSubg().

Here is the caller graph for this function:

◆ match()

size_t match ( char *  str,
char *  pat 
)

Definition at line 91 of file actions.c.

References SIZE_MAX, str, strgrpmatch(), and sub.

Referenced by getval(), strgrpmatch(), and svg_size().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ openFile()

int openFile ( Expr_t ex,
const char *  fname,
const char *  mode 
)

Definition at line 586 of file actions.c.

References elementsof, exerror(), Expr_s::file, and fname.

Here is the call graph for this function:

◆ readFile()

Agraph_t * readFile ( char *  f)

Definition at line 548 of file actions.c.

References exerror(), exwarn(), and readG().

Referenced by getval().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ readLine()

char * readLine ( Expr_t ex,
long long  fd 
)

Definition at line 629 of file actions.c.

References agxbfree(), agxbputc(), agxbuse(), elementsof, exerror(), exstring(), and Expr_s::file.

Referenced by getval().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rindexOf()

long rindexOf ( char *  s1,
char *  s2 
)

Definition at line 67 of file actions.c.

References s1().

Referenced by getval().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sameG()

Agraph_t * sameG ( void *  obj1,
void *  obj2,
char *  fn,
char *  msg 
)

Definition at line 47 of file actions.c.

References agraphof(), agroot(), error, ERROR_WARNING, and kinds().

Referenced by addEdge(), addNode(), isEdge(), and openEdge().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sfioWrite()

int sfioWrite ( Agraph_t g,
FILE *  fp 
)

Definition at line 515 of file actions.c.

References AgIoDisc, agwrite(), Agraph_s::clos, Agclos_s::disc, and Agdisc_s::io.

Referenced by fwriteFile(), getval(), gvpr_core(), and writeFile().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ toHtml()

char * toHtml ( Agraph_t g,
char *  arg 
)

Definition at line 713 of file actions.c.

References agstrdup_html().

Referenced by getval().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ toLower()

char * toLower ( Expr_t pgm,
char *  src 
)

Definition at line 679 of file actions.c.

References exstralloc(), gv_tolower(), len(), and NULL.

Referenced by getval().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ toUpper()

char * toUpper ( Expr_t pgm,
char *  src 
)

Definition at line 696 of file actions.c.

References exstralloc(), gv_toupper(), len(), and NULL.

Referenced by getval().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ writeFile()

int writeFile ( Agraph_t g,
char *  f 
)

Definition at line 528 of file actions.c.

References exerror(), exwarn(), and sfioWrite().

Referenced by getval().

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ edgepair

Dtdisc_t edgepair
static
Initial value:
= {
.key = offsetof(edgepair_t, key),
.size = sizeof(Agedge_t *),
.link = offsetof(edgepair_t, link),
.comparf = cmppair,
}
static int cmppair(void *k1, void *k2)
Definition actions.c:244

Definition at line 255 of file actions.c.

Referenced by cloneGraph().