Graphviz 16.1.1~dev.20261012.0359
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 <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <util/agxbuf.h>
#include <util/alloc.h>
#include <util/gv_ctype.h>
#include <util/list.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_t * sameG (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_t * copy (Agraph_t *g, Agobj_t *obj)
 
typedef LIST (edgepair_t)
 
static Agedge_t * mapEdge (emap_t *emap, Agedge_t *e)
 
static Agraph_t * cloneSubg (Agraph_t *tgt, Agraph_t *g, emap_t *emap)
 clone subgraph sg in tgt
 
static int cmppair (const void *k1, const void *k2)
 
static void cloneGraph (Agraph_t *tgt, Agraph_t *src)
 clone node, edge and subgraph structure from src to tgt
 
Agraph_t * cloneG (Agraph_t *g, char *name)
 
Agobj_t * cloneO (Agraph_t *g, Agobj_t *obj)
 
static void cc_dfs (Agraph_t *g, Agraph_t *comp, Agnode_t *n)
 
Agraph_t * compOf (Agraph_t *g, Agnode_t *n)
 return connected component of node
 
Agedge_t * isEdge (Agraph_t *g, Agnode_t *t, Agnode_t *h, char *key)
 
Agnode_t * addNode (Agraph_t *gp, Agnode_t *np, int doAdd)
 
Agedge_t * addEdge (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_t * readFile (char *f)
 
int fwriteFile (Expr_t *ex, Agraph_t *g, long long fd)
 
Agraph_t * freadFile (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.
 

Macro Definition Documentation

◆ CCMARK

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

Definition at line 367 of file actions.c.

◆ CCMARKED

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

Definition at line 366 of file actions.c.

◆ CCUNMARK

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

Definition at line 368 of file actions.c.

◆ COLORPROCS_API

#define COLORPROCS_API   static UNUSED

Definition at line 722 of file actions.c.

Function Documentation

◆ addEdge()

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

Definition at line 435 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 426 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 705 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 370 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 300 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 256 of file actions.c.

References agfstnode(), agfstout(), agfstsubg(), aghead, AGMKOUT, agnameof(), agnedges(), agnxtnode(), agnxtout(), agnxtsubg(), agtail, Agnode_s::base, Agedge_s::base, cloneSubg(), cmppair(), copy(), exerror(), LIST_APPEND, LIST_FREE, LIST_RESERVE, and LIST_SORT.

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 318 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,
emap_t *  emap 
)
static

Definition at line 202 of file actions.c.

References agfstnode(), agfstout(), agfstsubg(), aghead, AGMKOUT, agnameof(), agnode(), agnxtnode(), agnxtout(), agnxtsubg(), agsubedge(), agsubnode(), agtail, cloneSubg(), copy(), exerror(), mapEdge(), NULL, 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 593 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 ( const void *  k1,
const void *  k2 
)
static

Definition at line 250 of file actions.c.

References edgepair_t::key.

Referenced by cloneGraph().

Here is the caller graph for this function:

◆ colorx()

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

Definition at line 727 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 639 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 387 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 133 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(), and cloneSubg().

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 105 of file actions.c.

References agattr_text(), agattrsym(), aghtmlstr(), agnxtattr(), agraphof(), agstrdup_html(), agstrfree(), AGTYPE, agxget(), agxset(), and NULL.

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 476 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 565 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 555 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 62 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 408 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 37 of file actions.c.

References AGNODE, AGRAPH, and AGTYPE.

Referenced by sameG().

Here is the caller graph for this function:

◆ LIST()

typedef LIST ( edgepair_t  )

Definition at line 180 of file actions.c.

References edgepair_t::key.

◆ lockGraph()

int lockGraph ( Agraph_t *  g,
int  v 
)

Definition at line 449 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 ( emap_t *  emap,
Agedge_t *  e 
)
static

Definition at line 192 of file actions.c.

References Agedge_s::base, LIST_SIZE, 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 92 of file actions.c.

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

Referenced by getval(), Multilevel_MQ_Clustering_establish(), 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 575 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 537 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 618 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 68 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 48 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 504 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 702 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 668 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 685 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 517 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: