Graphviz
14.1.2~dev.20260118.1035
Loading...
Searching...
No Matches
exexpr.c
Go to the documentation of this file.
1
/*************************************************************************
2
* Copyright (c) 2011 AT&T Intellectual Property
3
* All rights reserved. This program and the accompanying materials
4
* are made available under the terms of the Eclipse Public License v1.0
5
* which accompanies this distribution, and is available at
6
* https://www.eclipse.org/legal/epl-v10.html
7
*
8
* Contributors: Details at https://graphviz.org
9
*************************************************************************/
10
11
/*
12
* Glenn Fowler
13
* AT&T Research
14
*
15
* expression library
16
*/
17
18
#include "config.h"
19
20
#include <
expr/exlib.h
>
21
#include <stddef.h>
22
23
/*
24
* return the expression for name or sym coerced to type
25
*/
26
27
Exnode_t
*
28
exexpr
(
Expr_t
* ex,
const
char
* name,
Exid_t
* sym,
int
type
)
29
{
30
if
(ex)
31
{
32
if
(!sym)
33
sym = name ?
dtmatch
(ex->
symbols
, name) : &ex->main;
34
if
(sym && sym->
lex
==
PROCEDURE
&& sym->
value
)
35
{
36
if
(
type
!=
DELETE_T
)
37
return
excast
(ex, sym->
value
->
data
.procedure.body,
type
,
NULL
, 0);
38
exfreenode
(ex, sym->
value
);
39
sym->
lex
=
NAME
;
40
sym->
value
= 0;
41
}
42
}
43
return
0;
44
}
45
dtmatch
#define dtmatch(d, o)
Definition
cdt.h:185
exexpr
Exnode_t * exexpr(Expr_t *ex, const char *name, Exid_t *sym, int type)
Definition
exexpr.c:28
exlib.h
PROCEDURE
#define PROCEDURE
Definition
exparse.h:185
type
expr procedure type
Definition
exparse.y:208
DELETE_T
#define DELETE_T
Definition
expr.h:55
excast
Exnode_t * excast(Expr_t *, Exnode_t *, long, Exnode_t *, int)
exfreenode
void exfreenode(Expr_t *, Exnode_t *)
NAME
#define NAME
Definition
gmlparse.h:135
NULL
node NULL
Definition
grammar.y:181
Exid_s
Definition
expr.h:91
Exid_s::lex
long lex
Definition
expr.h:93
Exid_s::value
Exnode_t * value
Definition
expr.h:97
Exnode_s
Definition
expr.h:146
Exnode_s::data
Exdata_t data
Definition
expr.h:156
Expr_s
Definition
expr.h:218
Expr_s::symbols
Dt_t * symbols
Definition
expr.h:220
lib
expr
exexpr.c
Generated by
1.9.8