arrow
check_proplists_lhs(t, np->u.arrow.lhs);
if (lhs->u.arrow.rhs->t == T_LIST) {
check_proplists_lhs(t, lhs->u.arrow.lhs);
check_path_iterators(np->u.arrow.lhs);
check_path_iterators(np->u.arrow.rhs);
if (np->u.arrow.lhs->t != T_ARROW &&
np->u.arrow.lhs->t != T_LIST &&
np->u.arrow.lhs->t != T_EVENT) {
np->u.arrow.lhs->file, np->u.arrow.lhs->line,
ptree_nodetype2str(np->u.arrow.lhs->t));
if (!check_nork(np->u.arrow.nnp) ||
!check_nork(np->u.arrow.knp))
static void check_cycle_lhs(struct node *stmtnp, struct node *arrow);
check_propnames(t, np->u.arrow.lhs, 1, to);
check_propnames(t, np->u.arrow.rhs, from, 1);
ex = record_iterators(np->u.arrow.lhs, ex);
ex = record_iterators(np->u.arrow.rhs, ex);
check_exprscope(np->u.arrow.lhs, ex);
check_exprscope(np->u.arrow.rhs, ex);
check_cycle_lhs(struct node *stmtnp, struct node *arrow)
switch (arrow->u.arrow.lhs->t) {
check_cycle_lhs(stmtnp, arrow->u.arrow.lhs);
if (arrow->u.arrow.lhs->u.arrow.rhs->t != T_EVENT)
trylhs = arrow->u.arrow.lhs->u.arrow.rhs;
tryrhs = arrow->u.arrow.rhs;
trylhs = arrow->u.arrow.lhs;
tryrhs = arrow->u.arrow.rhs;
ptree_nodetype2str(arrow->u.arrow.lhs->t));
ptree(flags, np->u.arrow.lhs, no_iterators, fileline);
if (np->u.arrow.nnp) {
ptree(flags, np->u.arrow.nnp, no_iterators, fileline);
if (np->u.arrow.knp) {
ptree(flags, np->u.arrow.knp, no_iterators, fileline);
ptree(flags, np->u.arrow.rhs, no_iterators, fileline);
return (name_pattern_match_in_subtree(np->u.arrow.lhs, pat) ||
name_pattern_match_in_subtree(np->u.arrow.rhs, pat));
np->u.arrow.prop = prop;
set_arrow_prop(prop, np->u.arrow.lhs);
size += sizeof (ret->u.arrow) - sizeof (ret->u);
tree_free(root->u.arrow.lhs);
tree_free(root->u.arrow.nnp);
tree_free(root->u.arrow.knp);
tree_free(root->u.arrow.rhs);
if (tree_treecmp(np1->u.arrow.lhs, np2->u.arrow.lhs, t,
if (tree_treecmp(np1->u.arrow.nnp, np2->u.arrow.nnp, t,
if (tree_treecmp(np1->u.arrow.knp, np2->u.arrow.knp, t,
return (tree_treecmp(np1->u.arrow.rhs, np2->u.arrow.rhs, t,
ret->u.arrow.lhs = lhs;
ret->u.arrow.nnp = nnp;
ret->u.arrow.knp = knp;
ret->u.arrow.rhs = rhs;
} arrow;
(void) eft_node((uintptr_t)node.u.arrow.lhs, DCMD_ADDRSPEC, 0,
if (node.u.arrow.nnp) {
(void) eft_node((uintptr_t)node.u.arrow.nnp,
if (node.u.arrow.knp) {
(void) eft_node((uintptr_t)node.u.arrow.knp,
(void) eft_node((uintptr_t)node.u.arrow.rhs, DCMD_ADDRSPEC, 0,
struct config *croot, struct arrow *arrowp, int try, int *dupedp)
struct lut **globals, struct config *croot, struct arrow *arrowp,
struct lut **globals, struct config *croot, struct arrow *arrowp,
struct config *croot, struct arrow *arrowp, int try, struct evalue *valuep)
struct lut **globals, struct config *croot, struct arrow *arrowp,
extern void ipath_dummy_lut(struct arrow *);
ap->arrowp->pnode->u.arrow.needed = 1;
ap->arrowp->pnode->u.arrow.needed = 0;
checkconstraints(struct fme *fmep, struct arrow *arrowp)
ipath_dummy_lut(struct arrow *arrowp)
static void add_arrow(struct bubble *bp, struct arrow *ap);
static struct constraintlist *itree_add_constraint(struct arrow *arrowp,
static void itree_free_constraints(struct arrow *ap);
itree_np2nork(infop->anp->u.arrow.nnp),
itree_np2nork(infop->anp->u.arrow.knp));
dst = infop->anp->u.arrow.rhs;
src = infop->anp->u.arrow.lhs;
hmatch(infop, src->u.arrow.rhs, dst);
itree_np2nork(src->u.arrow.nnp),
itree_np2nork(src->u.arrow.knp));
dst = src->u.arrow.rhs;
src = src->u.arrow.lhs;
vmatch(infop, np->u.arrow.rhs, NULL, np->u.arrow.parent);
if (anp->u.arrow.lhs->t == T_ARROW) {
anp->u.arrow.lhs->u.arrow.parent = anp;
find_first_arrow(infop, anp->u.arrow.lhs);
vmatch(infop, anp->u.arrow.lhs, NULL, anp);
cp_reset(np->u.arrow.lhs);
cp_reset(np->u.arrow.rhs);
if (!anp->u.arrow.needed)
anp->u.arrow.parent = NULL;
struct arrow *arrowp;
dlst = arrownp->u.arrow.rhs;
slst = arrownp->u.arrow.lhs;
slst = slst->u.arrow.rhs;
sizeof (struct arrow));
bzero(arrowp, sizeof (struct arrow));
struct arrow *arrowp;
add_arrow(struct bubble *bp, struct arrow *ap)
static struct arrow *
struct arrow *newa;
newa = alloc_xmalloc(sizeof (struct arrow));
bzero(newa, sizeof (struct arrow));
alloc_xfree(newa, sizeof (struct arrow));
itree_set_arrow_traits(struct arrow *ap, struct node *fromev,
arrow_add_within(struct arrow *ap, struct node *xpr)
alloc_xfree(al->arrowp, sizeof (struct arrow));
itree_delete_arrow(struct bubble *bubp, struct arrow *arrow)
if (al->arrowp == arrow) {
if (al->arrowp == arrow) {
alloc_xfree(al->arrowp, sizeof (struct arrow));
itree_add_constraint(struct arrow *arrowp, struct node *c)
itree_next_constraint(struct arrow *arrowp, struct constraintlist *last)
itree_free_constraints(struct arrow *ap)
static int itree_set_arrow_traits(struct arrow *ap, struct node *fromev,
static void arrow_add_within(struct arrow *ap, struct node *xpr);
static struct arrow *itree_add_arrow(struct node *apnode,
struct constraintlist *itree_next_constraint(struct arrow *arrowp,
struct arrow *arrowp, char ***argv, int *argc, int *argvlen)
generate_envp(struct arrow *arrowp, char ***envp, int *envc, int *envplen)
struct arrow *arrowp, struct evalue *valuep)
struct arrow *arrowp, struct evalue *valuep)
struct arrow *arrowp, struct evalue *valuep);
struct config *croot, struct arrow *arrowp, struct evalue *valuep);