Rc
view release on metacpan or search on metacpan
return sv_setref_pv(newSV(0), node_class(var), (void*)var);
}
}
static char *CB;
extern void walk(Node *nd)
{
dSP;
ENTER;
SAVETMPS;
PUSHMARK(SP);
XPUSHs(node_2sv(nd));
PUTBACK;
perl_call_method(CB, G_DISCARD);
FREETMPS;
LEAVE;
}
MODULE = Rc PACKAGE = Rc
PROTOTYPES: DISABLE
BOOT:
initparse();
initinput();
initprint();
void
_walk(sv, method)
SV *sv
char *method
PREINIT:
STRLEN len;
char *str = SvPV(sv, len);
CODE:
CB = method;
parseline(str, len);
MODULE = Rc PACKAGE = Rc::Node
char *
Node::type()
CODE:
RETVAL = node_typename(THIS);
OUTPUT:
RETVAL
MODULE = Rc PACKAGE = Rc::WordX
char *
Node::string()
CODE:
RETVAL = THIS->u[0].s;
OUTPUT:
RETVAL
MODULE = Rc PACKAGE = Rc::UnaryCmd
void
Node::kids()
PPCODE:
XPUSHs(node_2sv(THIS->u[0].p));
Node *
Node::kid(xx)
int xx;
CODE:
assert(xx==0);
RETVAL = THIS->u[xx].p;
OUTPUT:
RETVAL
MODULE = Rc PACKAGE = Rc::BinCmd
void
Node::kids()
PPCODE:
XPUSHs(node_2sv(THIS->u[0].p));
XPUSHs(node_2sv(THIS->u[1].p));
Node *
Node::kid(xx)
int xx;
CODE:
assert(xx==0 || xx==1);
RETVAL = THIS->u[xx].p;
OUTPUT:
RETVAL
MODULE = Rc PACKAGE = Rc::Forin
void
Node::kids()
PPCODE:
XPUSHs(node_2sv(THIS->u[0].p));
XPUSHs(node_2sv(THIS->u[1].p));
XPUSHs(node_2sv(THIS->u[2].p));
Node *
Node::kid(xx)
int xx;
CODE:
assert(xx==0 || xx==1 || xx==2);
RETVAL = THIS->u[xx].p;
OUTPUT:
RETVAL
MODULE = Rc PACKAGE = Rc::RedirX
char *
Node::redir()
PREINIT:
char *str;
PPCODE:
switch(THIS->u[0].i) {
case rFrom: str="<"; break;
case rCreate: str=">"; break;
case rAppend: str=">>"; break;
case rHeredoc: str="<<"; break;
case rHerestring: str="<<<"; break;
default: croak("unknown redir %d", THIS->u[0].i);
}
XPUSHs(sv_2mortal(newSVpv(str,0)));
MODULE = Rc PACKAGE = Rc::Dup
int
Node::left()
PPCODE:
XPUSHs(sv_2mortal(newSViv(THIS->u[1].i)));
int
Node::right()
PPCODE:
XPUSHs(sv_2mortal(newSViv(THIS->u[2].i)));
MODULE = Rc PACKAGE = Rc::Redir
int
Node::fd()
PPCODE:
XPUSHs(sv_2mortal(newSViv(THIS->u[1].i)));
Node *
Node::targ()
CODE:
RETVAL = THIS->u[2].p;
OUTPUT:
RETVAL
MODULE = Rc PACKAGE = Rc::Pipe
void
Node::fds()
PPCODE:
XPUSHs(sv_2mortal(newSViv(THIS->u[0].i)));
XPUSHs(sv_2mortal(newSViv(THIS->u[1].i)));
void
Node::kids()
PPCODE:
XPUSHs(node_2sv(THIS->u[2].p));
XPUSHs(node_2sv(THIS->u[3].p));
Node *
Node::kid(xx)
int xx;
CODE:
assert(xx==0 || xx==1);
RETVAL = xx==0? THIS->u[2].p : THIS->u[3].p;
OUTPUT:
RETVAL
( run in 1.656 second using v1.01-cache-2.11-cpan-5511b514fd6 )