view release on metacpan or search on metacpan
MODULE = Env::C PACKAGE = Env::C PREFIX = env_c_
void
env_c_setenv_multi(...)
PPCODE:
int i;
if (items % 3)
croak("Usage: setenv_multi(var1, value1, override1, var2, value2, override2, ...)");
for (i=0; i<items; i+=3)
__setenv(SvPV_nolen(ST(i)), SvPV_nolen(ST(i+1)), SvIV(ST(i+2)));
MODULE = Env::C PACKAGE = Env::C PREFIX = env_c_
void
env_c_unsetenv_multi(...)
PPCODE:
int i;
for (i=0; i<items; i++)
__unsetenv(SvPV_nolen(ST(i)));
XSRETURN(0);
view all matches for this distribution
view release on metacpan or search on metacpan
fallback/const-xs.inc view on Meta::CPAN
/* NV nv; Uncomment this if you need to return NVs */
/* const char *pv; Uncomment this if you need to return PVs */
INPUT:
SV * sv;
const char * s = SvPV(sv, len);
PPCODE:
/* Change this to constant(aTHX_ s, len, &iv, &nv);
if you need to return both NVs and IVs */
type = constant(aTHX_ s, len, &iv);
/* Return 1 or 2 items. First is error message, or undef if no error.
Second, if present, is found value */
view all matches for this distribution
view release on metacpan or search on metacpan
include/eshu_xs.h view on Meta::CPAN
while (p < eol && (*p == ' ' || *p == '\t')) p++;
return (p < eol && *p == '=');
}
/* XS labels: CODE, INIT, OUTPUT, PREINIT, CLEANUP, POSTCALL,
* PPCODE, BOOT, CASE, INTERFACE, INTERFACE_MACRO, PROTOTYPES,
* VERSIONCHECK, INCLUDE, FALLBACK, OVERLOAD, ALIAS, ATTRS */
static int eshu_xs_is_label(const char *content, const char *eol,
int *is_boot) {
const char *p = content;
const char *start;
include/eshu_xs.h view on Meta::CPAN
(len == 4 && memcmp(start, "INIT", 4) == 0) ||
(len == 6 && memcmp(start, "OUTPUT", 6) == 0) ||
(len == 7 && memcmp(start, "PREINIT", 7) == 0) ||
(len == 7 && memcmp(start, "CLEANUP", 7) == 0) ||
(len == 8 && memcmp(start, "POSTCALL", 8) == 0) ||
(len == 6 && memcmp(start, "PPCODE", 6) == 0) ||
(len == 4 && memcmp(start, "CASE", 4) == 0) ||
(len == 9 && memcmp(start, "INTERFACE", 9) == 0) ||
(len == 15 && memcmp(start, "INTERFACE_MACRO", 15) == 0) ||
(len == 10 && memcmp(start, "PROTOTYPES", 10) == 0) ||
(len == 12 && memcmp(start, "VERSIONCHECK", 12) == 0) ||
view all matches for this distribution
view release on metacpan or search on metacpan
xs/Alignment.xs view on Meta::CPAN
void
etk_alignment_get(alignment)
Etk_Alignment * alignment
ALIAS:
Get=1
PPCODE:
float xalign;
float yalign;
float xscale;
float yscale;
view all matches for this distribution
view release on metacpan or search on metacpan
void
cache_eval_undef()
PREINIT:
SV *last;
PPCODE:
last = eval_cache;
if ( !eval_cache ){
XSRETURN(0);
};
eval_cache=0;
STRLEN plen;
AV* temppad;
HV* closure_cache;
p_closure closure;
dXSTARG;
PPCODE:
PERL_UNUSED_VAR(ix);
if ( !eval_cache ){
eval_cache = newAV();
temppad = eval_cache;
closure_cache = newHV();
//I32 i;
SV **value;
char *pstr;
STRLEN plen;
dXSTARG;
PPCODE:
if ( ! (PL_op->op_private & OPpENTERSUB_HASTARG )){
croak( "panic: XS sub no target " );
};
if (SvTYPE(TARG) != SVt_PVHV ){
(void)SvUPGRADE( TARG , SVt_PVHV );
void run_sub( SV * code )
PREINIT:
I32 ret_count;
int i;
PPCODE:
dSP;
PUSHMARK(SP);
PUTBACK;
ret_count = call_sv( code, G_NOARGS | G_SCALAR );
SPAGAIN;
void
compile_sub( SV *codetext)
PREINIT:
SV *text;
SV *anonsub;
PPCODE:
//dSP;
text= sv_newmortal( );
sv_setpv( text , "sub {\n" );
sv_catsv( text, codetext );
sv_catpv( text, "\n};\n" );
long subcv_depth;
long stack_depth;
bool context_match;
U32 context_seq;
AV *results;
PPCODE:
if (cv && CvPADLIST( cv ) ){
PADLIST *padlist = CvPADLIST( cv );
if (CvDEPTH(cv)){
croak( "Fail compile: cv is running" );
}
view all matches for this distribution
view release on metacpan or search on metacpan
const-xs.inc view on Meta::CPAN
/* NV nv; Uncomment this if you need to return NVs */
/* const char *pv; Uncomment this if you need to return PVs */
INPUT:
SV * sv;
const char * s = SvPV(sv, len);
PPCODE:
/* Change this to constant(aTHX_ s, len, &iv, &nv);
if you need to return both NVs and IVs */
type = constant(aTHX_ s, len, &iv);
/* Return 1 or 2 items. First is error message, or undef if no error.
Second, if present, is found value */
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Event/Stats.xs view on Meta::CPAN
GEventAPI->install_stats(&Myvtbl);
}
void
_enforcing_max_callback_time()
PPCODE:
{
XPUSHs(boolSV(EnforceMaxCBTime));
}
void
_enforce_max_callback_time(yes)
bool yes
PPCODE:
{
XPUSHs(boolSV(EnforceMaxCBTime));
if (!EnforceMaxCBTime ^ !yes)
use_stats(yes? 1:-1);
EnforceMaxCBTime = yes;
lib/Event/Stats.xs view on Meta::CPAN
idle_time(sec)
int sec
PREINIT:
int ran, die;
double elapse;
PPCODE:
if (!Stats) croak("Event::Stats are not enabled");
pe_stat_query(&idleStats, sec, &ran, &die, &elapse);
XPUSHs(sv_2mortal(newSViv(ran)));
XPUSHs(sv_2mortal(newSViv(die)));
XPUSHs(sv_2mortal(newSVnv(elapse)));
lib/Event/Stats.xs view on Meta::CPAN
total_time(sec)
int sec
PREINIT:
int ran,die;
double elapse;
PPCODE:
if (!Stats) croak("Event::Stats are not enabled");
pe_stat_query(&totalStats, sec, &ran, &die, &elapse);
XPUSHs(sv_2mortal(newSVnv(elapse)));
int
lib/Event/Stats.xs view on Meta::CPAN
int sec
PREINIT:
int ran, die;
double elapse;
pe_watcher *THIS;
PPCODE:
if (!Stats)
croak("Event::Stats are not enabled");
THIS = (pe_watcher*) GEventAPI->sv_2watcher(obj);
if (THIS->stats)
pe_stat_query(THIS->stats, sec, &ran, &die, &elapse);
view all matches for this distribution
view release on metacpan or search on metacpan
OUTPUT:
RETVAL
void
_memory_counters()
PPCODE:
{
#ifdef EVENT_MEMORY_DEBUG
int xx;
for (xx=0; xx < MAX_MEMORYCOUNT; xx++)
XPUSHs(sv_2mortal(newSViv(MemoryCount[xx])));
#endif
}
void
_incr_looplevel()
PPCODE:
++LoopLevel;
++ExitLevel;
void
_decr_looplevel()
PPCODE:
--LoopLevel;
void
unloop(...)
CODE:
int sec
void
all_watchers()
PROTOTYPE:
PPCODE:
pe_watcher *ev;
if (!AllWatchers.next)
return;
ev = (pe_watcher*) AllWatchers.next->self;
while (ev) {
}
void
all_idle()
PROTOTYPE:
PPCODE:
pe_watcher *ev;
if (!Idle.prev)
return;
ev = (pe_watcher*) Idle.prev->self;
while (ev) {
}
void
all_running()
PROTOTYPE:
PPCODE:
int fx;
for (fx = CurCBFrame; fx >= 0; fx--) {
pe_watcher *ev = (CBFrame + fx)->ev->up; /* XXX */
XPUSHs(watcher_2sv(ev));
if (GIMME_V != G_ARRAY)
queue(...)
PROTOTYPE: $;$
PREINIT:
pe_watcher *wa;
pe_event *ev;
PPCODE:
wa = (pe_watcher*) sv_2watcher(ST(0));
if (items == 1) {
ev = (*wa->vtbl->new_event)(wa);
++ev->hits;
}
LEAVE; /* reentry */
void
queue_time(prio)
int prio
PPCODE:
NV max=0;
int xx;
if (prio < 0 || prio >= PE_QUEUES)
croak("queue_time(%d) out of domain [0..%d]",
prio, PE_QUEUES-1);
MODULE = Event PACKAGE = Event::Event::Io
void
pe_event::got()
PPCODE:
XPUSHs(sv_2mortal(events_mask_2sv(((pe_ioevent*)THIS)->got)));
MODULE = Event PACKAGE = Event::Event::Dataful
void
pe_event::data()
PPCODE:
XPUSHs(((pe_datafulevent*)THIS)->data);
MODULE = Event PACKAGE = Event::Event
void
(*THIS->vtbl->dtor)(THIS);
}
void
pe_event::mom()
PPCODE:
if (--WarnCounter >= 0) warn("'mom' renamed to 'w'");
XPUSHs(watcher_2sv(THIS->up));
void
pe_event::w()
PPCODE:
XPUSHs(watcher_2sv(THIS->up));
void
pe_event::hits()
PPCODE:
XPUSHs(sv_2mortal(newSViv(THIS->hits)));
void
pe_event::prio()
PPCODE:
XPUSHs(sv_2mortal(newSViv(THIS->prio)));
MODULE = Event PACKAGE = Event::Watcher
void
}
}
void
pe_watcher::pending()
PPCODE:
{
if (GIMME_V == G_ARRAY) {
pe_event *ev = (pe_event *) THIS->events.prev->self;
while (ev) {
XPUSHs(event_2sv(ev));
pe_watcher_now(THIS);
void
pe_watcher::use_keys(...)
PREINIT:
PPCODE:
warn("use_keys is deprecated");
void
pe_watcher::is_running(...)
PPCODE:
XPUSHs(sv_2mortal(newSViv(THIS->running)));
void
pe_watcher::is_active(...)
PPCODE:
PUTBACK;
XPUSHs(boolSV(WaACTIVE(THIS)));
void
pe_watcher::is_suspended(...)
PPCODE:
PUTBACK;
XPUSHs(boolSV(WaSUSPEND(THIS)));
void
pe_watcher::is_cancelled(...)
PPCODE:
PUTBACK;
XPUSHs(boolSV(WaCANCELLED(THIS)));
void
pe_watcher::cb(...)
PPCODE:
PUTBACK;
_watcher_callback(THIS, items == 2? sv_mortalcopy(ST(1)) : 0);
SPAGAIN;
void
pe_watcher::cbtime(...)
PPCODE:
PUTBACK;
_watcher_cbtime(THIS, items == 2? sv_mortalcopy(ST(1)) : 0);
SPAGAIN;
void
pe_watcher::desc(...)
PPCODE:
PUTBACK;
_watcher_desc(THIS, items == 2? sv_mortalcopy(ST(1)) : 0);
SPAGAIN;
void
pe_watcher::debug(...)
PPCODE:
PUTBACK;
_watcher_debug(THIS, items == 2? sv_mortalcopy(ST(1)) : 0);
SPAGAIN;
void
pe_watcher::prio(...)
PPCODE:
PUTBACK;
_watcher_priority(THIS, items == 2? sv_mortalcopy(ST(1)) : 0);
SPAGAIN;
void
pe_watcher::reentrant(...)
PPCODE:
PUTBACK;
_watcher_reentrant(THIS, items == 2? sv_mortalcopy(ST(1)) : 0);
SPAGAIN;
void
pe_watcher::repeat(...)
PPCODE:
PUTBACK;
_watcher_repeat(THIS, items == 2? sv_mortalcopy(ST(1)) : 0);
SPAGAIN;
void
pe_watcher::max_cb_tm(...)
PPCODE:
PUTBACK;
_watcher_max_cb_tm(THIS, items == 2? sv_mortalcopy(ST(1)) : 0);
SPAGAIN;
MODULE = Event PACKAGE = Event::Watcher::Tied
void
allocate(clname, temple)
SV *clname
SV *temple
PPCODE:
if (!SvROK(temple)) croak("Bad template");
XPUSHs(watcher_2sv(pe_tied_allocate(gv_stashsv(clname, 1),
SvRV(temple))));
void
pe_watcher::hard(...)
PPCODE:
PUTBACK;
_timeable_hard(THIS, items == 2? sv_mortalcopy(ST(1)) : 0);
SPAGAIN;
void
pe_watcher::at(...)
PPCODE:
PUTBACK;
_tied_at(THIS, items == 2? sv_mortalcopy(ST(1)) : 0);
SPAGAIN;
void
pe_watcher::flags(...)
PPCODE:
PUTBACK;
_tied_flags(THIS, items == 2? sv_mortalcopy(ST(1)) : 0);
SPAGAIN;
MODULE = Event PACKAGE = Event::idle
void
allocate(clname, temple)
SV *clname;
SV *temple;
PPCODE:
if (!SvROK(temple)) croak("Bad template");
XPUSHs(watcher_2sv(pe_idle_allocate(gv_stashsv(clname, 1),
SvRV(temple))));
void
pe_watcher::hard(...)
PPCODE:
PUTBACK;
_timeable_hard(THIS, items == 2? sv_mortalcopy(ST(1)) : 0);
SPAGAIN;
void
pe_watcher::max(...)
PPCODE:
PUTBACK;
_idle_max_interval(THIS, items == 2? sv_mortalcopy(ST(1)) : 0);
SPAGAIN;
void
pe_watcher::min(...)
PPCODE:
PUTBACK;
_idle_min_interval(THIS, items == 2? sv_mortalcopy(ST(1)) : 0);
SPAGAIN;
MODULE = Event PACKAGE = Event::timer
void
allocate(clname, temple)
SV *clname;
SV *temple;
PPCODE:
XPUSHs(watcher_2sv(pe_timer_allocate(gv_stashsv(clname, 1),
SvRV(temple))));
void
pe_watcher::at(...)
PPCODE:
PUTBACK;
_timer_at(THIS, items == 2? sv_mortalcopy(ST(1)) : 0);
SPAGAIN;
void
pe_watcher::hard(...)
PPCODE:
PUTBACK;
_timeable_hard(THIS, items == 2? sv_mortalcopy(ST(1)) : 0);
SPAGAIN;
void
pe_watcher::interval(...)
PPCODE:
PUTBACK;
_timer_interval(THIS, items == 2? sv_mortalcopy(ST(1)) : 0);
SPAGAIN;
MODULE = Event PACKAGE = Event::io
void
allocate(clname, temple)
SV *clname;
SV *temple;
PPCODE:
if (!SvROK(temple)) croak("Bad template");
XPUSHs(watcher_2sv(pe_io_allocate(gv_stashsv(clname, 1),
SvRV(temple))));
void
pe_watcher::poll(...)
PPCODE:
PUTBACK;
_io_poll(THIS, items == 2? sv_mortalcopy(ST(1)) : 0);
SPAGAIN;
void
pe_watcher::fd(...)
PPCODE:
PUTBACK;
_io_handle(THIS, items == 2? sv_mortalcopy(ST(1)) : 0);
SPAGAIN;
void
pe_watcher::timeout(...)
PPCODE:
PUTBACK;
_io_timeout(THIS, items == 2? sv_mortalcopy(ST(1)) : 0);
SPAGAIN;
void
pe_watcher::timeout_cb(...)
PPCODE:
PUTBACK;
_io_timeout_cb(THIS, items == 2? sv_mortalcopy(ST(1)) : 0);
SPAGAIN;
MODULE = Event PACKAGE = Event::var
void
allocate(clname, temple)
SV *clname;
SV *temple;
PPCODE:
XPUSHs(watcher_2sv(pe_var_allocate(gv_stashsv(clname, 1),
SvRV(temple))));
void
pe_watcher::var(...)
PPCODE:
PUTBACK;
_var_variable(THIS, items == 2? ST(1) : 0); /* don't mortalcopy!! */
SPAGAIN;
void
pe_watcher::poll(...)
PPCODE:
PUTBACK;
_var_events(THIS, items == 2? sv_mortalcopy(ST(1)) : 0);
SPAGAIN;
MODULE = Event PACKAGE = Event::signal
void
allocate(clname, temple)
SV *clname;
SV *temple;
PPCODE:
XPUSHs(watcher_2sv(pe_signal_allocate(gv_stashsv(clname, 1),
SvRV(temple))));
void
pe_watcher::signal(...)
PPCODE:
PUTBACK;
_signal_signal(THIS, items == 2? sv_mortalcopy(ST(1)) : 0);
SPAGAIN;
MODULE = Event PACKAGE = Event::group
void
allocate(clname, temple)
SV *clname;
SV *temple;
PPCODE:
XPUSHs(watcher_2sv(pe_group_allocate(gv_stashsv(clname, 1),
SvRV(temple))));
void
pe_watcher::timeout(...)
PPCODE:
PUTBACK;
_group_timeout(THIS, items == 2? sv_mortalcopy(ST(1)) : 0);
SPAGAIN;
void
pe_watcher::add(...)
PPCODE:
PUTBACK;
_group_add(THIS, items == 2? sv_mortalcopy(ST(1)) : 0);
SPAGAIN;
void
pe_watcher::del(...)
PPCODE:
PUTBACK;
_group_del(THIS, items == 2? sv_mortalcopy(ST(1)) : 0);
SPAGAIN;
MODULE = Event PACKAGE = Event::generic
void
allocate(clname, temple)
SV *clname;
SV *temple;
PPCODE:
XPUSHs(watcher_2sv(pe_generic_allocate(gv_stashsv(clname, 1),
SvRV(temple))));
void
pe_watcher::source(...)
PPCODE:
PUTBACK;
_generic_source(THIS, items == 2? sv_mortalcopy(ST(1)) : 0);
SPAGAIN;
MODULE = Event PACKAGE = Event::generic::Source
void
allocate(clname, temple)
SV *clname;
SV *temple;
PPCODE:
if (!SvROK(temple)) croak("Bad template");
XPUSHs(genericsrc_2sv(pe_genericsrc_allocate(gv_stashsv(clname, 1),
SvRV(temple))));
void
pe_genericsrc_dtor(sv_2genericsrc(ref));
}
void
pe_genericsrc::event(...)
PPCODE:
pe_genericsrc_event(THIS,
items >= 2 ? sv_mortalcopy(ST(1)) : &PL_sv_undef);
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Evo/Class/Attrs/XS.xs view on Meta::CPAN
SV *self;
SV *name;
void slots(self)
SV *self;
PPCODE:
AV *av = sv2av(self);
int i, last = av_top_index(av), size = last + 1;
for (i = 0; i < size; i++) {
SV **tmp = av_fetch(av, i, 0);
view all matches for this distribution
view release on metacpan or search on metacpan
lib/ExtUtils/Constant.pm view on Meta::CPAN
INPUT:
int utf8 = SvUTF8(sv);
EOT
}
$xs .= << 'EOT';
PPCODE:
EOT
if ($params->{IV} xor $params->{NV}) {
$xs .= << "EOT";
/* Change this to $C_subname(aTHX_ s, len, &iv, &nv);
view all matches for this distribution
view release on metacpan or search on metacpan
t/compare.t view on Meta::CPAN
MODULE = EUHC::Test PACKAGE = EUHC::Test
PROTOTYPES: DISABLED
IV
compiled_xs()
PPCODE:
XSRETURN_IV(1);
END
my $test_file = <<'END';
use Test::More tests => 1;
view all matches for this distribution
view release on metacpan or search on metacpan
lib/ExtUtils/ParseXS/Constants.pm view on Meta::CPAN
# IN_OUT, NO_INIT, NO_OUTPUT.
# This list is mainly used by the parser to delineate blocks (such as
# blocks of CODE or lines of INPUT).
our @XSKeywords = qw(
REQUIRE BOOT CASE PREINIT INPUT INIT CODE PPCODE
OUTPUT CLEANUP ALIAS ATTRS PROTOTYPES PROTOTYPE
VERSIONCHECK INCLUDE INCLUDE_COMMAND SCOPE INTERFACE
INTERFACE_MACRO C_ARGS POSTCALL OVERLOAD FALLBACK
EXPORT_XSUB_SYMBOLS
);
view all matches for this distribution
view release on metacpan or search on metacpan
XSBuilder/WrapXS.pm view on Meta::CPAN
my $retval = $return_type eq 'void' ?
["", ""] : ["RETVAL = ", "OUTPUT:\n RETVAL\n"];
my $retnum = $retdecl?scalar(@$retargs) + ($return_type eq 'void' ?0:1):0 ;
$code .= $retdecl?"PPCODE:":"CODE:" ;
$code .= "\n $retval->[0]$dispatch($thx$parms);\n" ;
if ($retdecl) {
my $retclass = $self -> typemap -> map_class ($return_type) || $return_type ;
if ($retclass =~ / /)
{
view all matches for this distribution
view release on metacpan or search on metacpan
lib/ExtUtils/XSpp/Node/Function.pm view on Meta::CPAN
}
my $has_ret = $ret_typemap && !$ret_typemap->type->is_void;
my $ppcode = $has_ret && $ret_typemap->output_list( '' ) ? 1 : 0;
my $code_type = $ppcode ? "PPCODE" : "CODE";
my $ccode = $this->_call_code( $call_arg_list );
if ($this->{CALL_CODE}) {
$ccode = join( "\n", @{$this->{CALL_CODE}} );
} elsif ($this->isa('ExtUtils::XSpp::Node::Destructor')) {
$ccode = 'delete THIS';
view all matches for this distribution
view release on metacpan or search on metacpan
GetHandles(request)
FCGI request;
PROTOTYPE: $
PREINIT:
int i;
PPCODE:
EXTEND(sp,3);
for (i = 0; i < 3; ++i)
PUSHs(sv_2mortal(newRV((SV *) request->gv[i])));
int
view all matches for this distribution
view release on metacpan or search on metacpan
xs/Buffer.xs view on Meta::CPAN
PROTOTYPE: $$;$
PREINIT:
int clear = 1;
int set_length = 1;
PPCODE:
if (SvROK (sv))
croak("buffer argument must be a scalar");
if ( items > 2 ) {
view all matches for this distribution
view release on metacpan or search on metacpan
PROTOTYPES: ENABLE
void
set_server_name_and_port(SV *self, SV *name, SV *port)
PPCODE:
{
if (feer_server_name)
SvREFCNT_dec(feer_server_name);
feer_server_name = newSVsv(name);
SvREADONLY_on(feer_server_name);
SvREADONLY_on(feer_server_port);
}
void
accept_on_fd(SV *self, int fd)
PPCODE:
{
struct sockaddr_storage addr;
socklen_t addr_len = sizeof(addr);
if (getsockname(fd, (struct sockaddr*)&addr, &addr_len) == -1) perror("getsockname");
ev_io_init(&accept_w, accept_cb, fd, EV_READ);
}
void
unlisten (SV *self)
PPCODE:
{
trace("stopping accept\n");
ev_prepare_stop(feersum_ev_loop, &ep);
ev_check_stop(feersum_ev_loop, &ec);
ev_idle_stop(feersum_ev_loop, &ei);
void
request_handler(SV *self, SV *cb)
PROTOTYPE: $&
ALIAS:
psgi_request_handler = 1
PPCODE:
{
if (unlikely(!SvOK(cb) || !SvROK(cb)))
croak("can't supply an undef handler");
if (request_cb_cv)
SvREFCNT_dec(request_cb_cv);
}
void
graceful_shutdown (SV *self, SV *cb)
PROTOTYPE: $&
PPCODE:
{
if (!IsCodeRef(cb))
croak("must supply a code reference");
if (unlikely(shutting_down))
croak("already shutting down");
OUTPUT:
RETVAL
void
set_keepalive (SV *self, SV *set)
PPCODE:
{
trace("set keepalive %d\n", SvTRUE(set));
is_keepalive = SvTRUE(set);
}
OUTPUT:
RETVAL
void
DESTROY (SV *self)
PPCODE:
{
trace3("DESTROY server\n");
if (request_cb_cv)
SvREFCNT_dec(request_cb_cv);
}
void
DESTROY (SV *self)
ALIAS:
Feersum::Connection::Reader::DESTROY = 1
Feersum::Connection::Writer::DESTROY = 2
PPCODE:
{
feer_conn_handle *hdl = sv_2feer_conn_handle(self, 0);
if (hdl == NULL) {
trace3("DESTROY handle (closed) class=%s\n",
}
SV*
read (feer_conn_handle *hdl, SV *buf, size_t len, ...)
PROTOTYPE: $$$;$
PPCODE:
{
STRLEN buf_len = 0, src_len = 0;
ssize_t offset;
char *buf_ptr, *src_ptr;
RETVAL
void
write_array (feer_conn_handle *hdl, AV *abody)
PROTOTYPE: $$
PPCODE:
{
if (unlikely(c->responding != RESPOND_STREAMING))
croak("can only call write in streaming mode");
trace("write_array fd=%d c=%p, abody=%p\n", c->fd, c, abody);
_poll_cb (feer_conn_handle *hdl, SV *cb)
PROTOTYPE: $$
ALIAS:
Feersum::Connection::Reader::poll_cb = 1
Feersum::Connection::Writer::poll_cb = 2
PPCODE:
{
if (unlikely(ix < 1 || ix > 2))
croak("can't call _poll_cb directly");
else if (unlikely(ix == 1))
croak("poll_cb for reading not yet supported"); // TODO poll_read_cb
void
force_http10 (struct feer_conn *c)
PROTOTYPE: $
ALIAS:
force_http11 = 1
PPCODE:
c->is_http11 = ix;
SV *
env (struct feer_conn *c)
PROTOTYPE: $
OUTPUT:
RETVAL
void
DESTROY (struct feer_conn *c)
PPCODE:
{
int i;
trace("DESTROY connection fd=%d c=%p\n", c->fd, c);
if (likely(c->rbuf)) SvREFCNT_dec(c->rbuf);
view all matches for this distribution
view release on metacpan or search on metacpan
xs/future.xs view on Meta::CPAN
void
get(self)
SV *self
ALIAS:
result = 1
PPCODE:
{
IV st;
PERL_UNUSED_VAR(ix);
hmf_await(aTHX_ self);
st = hmf_state(aTHX_ self);
xs/future.xs view on Meta::CPAN
}
void
failure(self)
SV *self
PPCODE:
{
hmf_await(aTHX_ self);
if (hmf_state(aTHX_ self) != HMF_FAILED) XSRETURN_EMPTY;
{
AV *fav = hmf_values_av(aTHX_ self);
xs/future.xs view on Meta::CPAN
}
void
_values(self)
SV *self
PPCODE:
{
AV *rav = hmf_values_av(aTHX_ self);
SSize_t i, n = rav ? av_len(rav) + 1 : 0;
EXTEND(SP, n);
for (i = 0; i < n; i++) {
view all matches for this distribution
view release on metacpan or search on metacpan
glob_t pglob;
int i;
int retval;
int flags = 0;
SV *tmp;
PPCODE:
/* allow for optional flags argument */
if (items > 1) {
flags = (int) SvIV(ST(1));
}
view all matches for this distribution
view release on metacpan or search on metacpan
lib/File/Copy/clonefile.xs view on Meta::CPAN
PROTOTYPES: DISABLE
void
clonefile(...)
PPCODE:
{
if (items != 2 && items != 3) {
croak("clonefile: the length of arguments must be 2 or 3");
}
const char* src = SvPV_nolen(ST(0));
view all matches for this distribution
view release on metacpan or search on metacpan
PREINIT:
ssize_t size, ret;
char *namebuf = NULL;
char *nameptr;
PPCODE:
if(fd == -1)
size = portable_listxattr(path, NULL, 0, flags);
else
size = portable_flistxattr(fd, NULL, 0, flags);
PREINIT:
ssize_t size, ret;
char *namebuf = NULL;
char *nameptr;
PPCODE:
if(fd == -1)
size = portable_listxattrns(path, NULL, 0, flags);
else
size = portable_flistxattrns(fd, NULL, 0, flags);
view all matches for this distribution
view release on metacpan or search on metacpan
Extractor.xs view on Meta::CPAN
void
EXTRACTOR_getDefaultLibraries (class)
PREINIT:
const char *libraries;
char *copy, *pos, *token;
PPCODE:
libraries = EXTRACTOR_getDefaultLibraries ();
if (!libraries) {
XSRETURN_EMPTY;
}
Extractor.xs view on Meta::CPAN
SV *data
PREINIT:
STRLEN len;
char *buf;
EXTRACTOR_KeywordList *list, *i;
PPCODE:
if (SvROK (data) && (SvTYPE (SvRV (data)) == SVt_PVGV)) {
buf = perl_extractor_slurp_from_handle (data, &len);
}
else {
buf = SvPVbyte (data, len);
view all matches for this distribution
view release on metacpan or search on metacpan
LibMagic.xs view on Meta::CPAN
const char *mime;
const char *encoding;
SV *d;
SV *m;
SV *e;
PPCODE:
if (SvROK(buffer)) {
content = SvRV(buffer);
}
else {
content = buffer;
LibMagic.xs view on Meta::CPAN
const char *mime;
const char *encoding;
SV *d;
SV *m;
SV *e;
PPCODE:
if ( ! SvPOK(filename) ) {
croak("info_from_filename requires a scalar as its argument");
}
file = SvPV_nolen(filename);
LibMagic.xs view on Meta::CPAN
const char *mime;
const char *encoding;
SV *d;
SV *m;
SV *e;
PPCODE:
if ( ! SvOK(handle) ) {
croak("info_from_handle requires a scalar filehandle as its argument");
}
io = IoIFP(sv_2io(handle));
view all matches for this distribution
view release on metacpan or search on metacpan
regex_t *preg = NULL;
char errbuf[1024];
regmatch_t pmatch[32];
STRLEN n_a;
register int i;
PPCODE:
for (i = 1; i < items; i++) {
if (SvROK(ST(i)) && SvTYPE((SV*)SvRV(ST(i))) == SVt_PVCV) {
coderef = newSVsv(ST(i));
}
boolean prev_fast_match = false; /* true if we found a fast match
(of patend) on the previous
path. */
register int i;
PPCODE:
{
for (i = 1; i < items; i++) {
if (SvROK(ST(i)) && SvTYPE((SV*)SvRV(ST(i))) == SVt_PVCV) {
coderef = newSVsv(ST(i));
}
view all matches for this distribution
view release on metacpan or search on metacpan
FILE * file
mode_int mode
int offset
int whence
int length
PPCODE:
{
# ifdef FDEBUG
fprintf(stderr,"Entering fcntl(%d,%s,%d,%d,%d)\n",fileno(file),mode_name[mode],offset,whence,length);
# endif
# if defined(HAS_FCNTL)
void
flock(file, mode=Lock_exclusive|Lock_nonblock)
FILE * file
mode_int mode
PPCODE:
{
# ifdef FDEBUG
fprintf(stderr,"Entering flock(%d,%s)\n",fileno(file),mode_name[mode]);
# endif
# if defined(HAS_FLOCK)
FILE * file
mode_int mode
int offset
int whence
int length
PPCODE:
{
# ifdef FDEBUG
fprintf(stderr,"Entering lockf(%d,%s,%d,%d,%d)\n",fileno(file),mode_name[mode],offset,whence,length);
# endif
# if defined(HAS_LOCKF)
RETVAL
void
_mode(mode)
mode_int mode
PPCODE:
{
ReturnResult(mode & Lock_modemask,Lock_test);
}
FILE * file
mode_int mode
int offset
int whence
int length
PPCODE:
{
# ifdef FDEBUG
fprintf(stderr,"Entering new File::Lock(%d,%s,%d,%d,%d)\n",fileno(file),mode_name[mode],offset,whence,length);
# endif
if(((mode & Lock_modemask)== Lock_test) || ((mode & Lock_modemask)==Lock_unlock)) {
view all matches for this distribution
view release on metacpan or search on metacpan
# helper cleanly closes the fd and frees the cursor.
# ====================================================================
void
list(...)
PPCODE:
{
if (items < 2)
croak("Usage: \\$class->list(\\$path, %%opts)");
if ((items - 2) % 2 != 0)
croak("File::Raw::Archive::list: odd number of options");
XSRETURN(1);
}
IV
extract(...)
PPCODE:
{
if (items < 4)
croak("Usage: \\$class->extract(\\$path, \\$name, \\$dest, %%opts)");
if ((items - 4) % 2 != 0)
croak("File::Raw::Archive::extract: odd number of options");
XSRETURN(1);
}
IV
extract_all(...)
PPCODE:
{
if (items < 3)
croak("Usage: \\$class->extract_all(\\$path, \\$dest, %%opts)");
if ((items - 3) % 2 != 0)
croak("File::Raw::Archive::extract_all: odd number of options");
XSRETURN(1);
}
void
each(...)
PPCODE:
{
if (items < 3)
croak("Usage: \\$class->each(\\$path, %%opts, sub { ... })");
SV *cb_sv = ST(items - 1);
if (!SvROK(cb_sv) || SvTYPE(SvRV(cb_sv)) != SVt_PVCV)
XSRETURN_EMPTY;
}
SV *
open(...)
PPCODE:
{
if (items < 2)
croak("Usage: \\$class->open(\\$path, %%opts)");
if ((items - 2) % 2 != 0)
croak("File::Raw::Archive::open: odd number of options");
XSRETURN(1);
}
SV *
create(...)
PPCODE:
{
if (items < 2)
croak("Usage: \\$class->create(\\$path, %%opts)");
if ((items - 2) % 2 != 0)
croak("File::Raw::Archive::create: odd number of options");
MODULE = File::Raw::Archive PACKAGE = File::Raw::Archive::Writer
# ====================================================================
void
add(...)
PPCODE:
{
if (items < 1)
croak("Usage: \\$writer->add(name => ..., content => ..., ...)");
SV *self_sv = ST(0);
if (!SvROK(self_sv) || SvTYPE(SvRV(self_sv)) != SVt_PVAV)
# Same semantics as the matching class methods minus the leading
# `$class` arg. Imported into the caller's package via `import` below.
SV *
file_archive_open(...)
PPCODE:
{
if (items < 1)
croak("Usage: file_archive_open(\\$path, %%opts)");
if ((items - 1) % 2 != 0)
croak("file_archive_open: odd number of options");
XSRETURN(1);
}
SV *
file_archive_create(...)
PPCODE:
{
if (items < 1)
croak("Usage: file_archive_create(\\$path, %%opts)");
if ((items - 1) % 2 != 0)
croak("file_archive_create: odd number of options");
XSRETURN(1);
}
SV *
file_archive_list(...)
PPCODE:
{
if (items < 1)
croak("Usage: file_archive_list(\\$path, %%opts)");
if ((items - 1) % 2 != 0)
croak("file_archive_list: odd number of options");
XSRETURN(1);
}
IV
file_archive_extract(...)
PPCODE:
{
if (items < 3)
croak("Usage: file_archive_extract(\\$path, \\$name, \\$dest, %%opts)");
if ((items - 3) % 2 != 0)
croak("file_archive_extract: odd number of options");
XSRETURN(1);
}
IV
file_archive_extract_all(...)
PPCODE:
{
if (items < 2)
croak("Usage: file_archive_extract_all(\\$path, \\$dest, %%opts)");
if ((items - 2) % 2 != 0)
croak("file_archive_extract_all: odd number of options");
XSRETURN(1);
}
void
file_archive_each(...)
PPCODE:
{
if (items < 2)
croak("Usage: file_archive_each(\\$path, %%opts, sub { ... })");
SV *cb_sv = ST(items - 1);
if (!SvROK(cb_sv) || SvTYPE(SvRV(cb_sv)) != SVt_PVCV)
# Walks the requested name list and aliases each into the caller's
# stash as `file_archive_<name>`.
void
import(...)
PPCODE:
{
/* ST(0) is the class. The rest are export-tag style names. */
static const char * const known_names[] = {
"open", "create", "list", "each", "extract", "extract_all", NULL
};
view all matches for this distribution
view release on metacpan or search on metacpan
void
import(...)
PREINIT:
const char *pkg;
I32 i;
PPCODE:
pkg = CopSTASHPV(PL_curcop);
if (items <= 1) XSRETURN_EMPTY;
for (i = 1; i < items; i++) {
STRLEN len;
PROTOTYPES: DISABLE
void
TRUE(...)
PPCODE:
PERL_UNUSED_VAR(items);
if (!g_frj_true_sv) init_boolean_singletons(aTHX);
SvREFCNT_inc_simple_void(g_frj_true_sv);
XPUSHs(sv_2mortal(g_frj_true_sv));
XSRETURN(1);
void
FALSE(...)
PPCODE:
PERL_UNUSED_VAR(items);
if (!g_frj_false_sv) init_boolean_singletons(aTHX);
SvREFCNT_inc_simple_void(g_frj_false_sv);
XPUSHs(sv_2mortal(g_frj_false_sv));
XSRETURN(1);
view all matches for this distribution
view release on metacpan or search on metacpan
Separated.xs view on Meta::CPAN
void
parse_buf_each(input, code, opts = NULL)
SV *input
SV *code
SV *opts
PPCODE:
do_parse_buf_each(aTHX_ "parse_buf_each", input, code, opts, DIALECT_AUTO);
XSRETURN_EMPTY;
void
csv_parse_buf_each(input, code, opts = NULL)
SV *input
SV *code
SV *opts
PPCODE:
do_parse_buf_each(aTHX_ "csv_parse_buf_each", input, code, opts, DIALECT_CSV);
XSRETURN_EMPTY;
void
tsv_parse_buf_each(input, code, opts = NULL)
SV *input
SV *code
SV *opts
PPCODE:
do_parse_buf_each(aTHX_ "tsv_parse_buf_each", input, code, opts, DIALECT_TSV);
XSRETURN_EMPTY;
void
parse_stream(path, code, opts = NULL)
SV *path
SV *code
SV *opts
PPCODE:
do_parse_stream(aTHX_ "parse_stream", path, code, opts, DIALECT_AUTO);
XSRETURN_EMPTY;
void
csv_parse_stream(path, code, opts = NULL)
SV *path
SV *code
SV *opts
PPCODE:
do_parse_stream(aTHX_ "csv_parse_stream", path, code, opts, DIALECT_CSV);
XSRETURN_EMPTY;
void
tsv_parse_stream(path, code, opts = NULL)
SV *path
SV *code
SV *opts
PPCODE:
do_parse_stream(aTHX_ "tsv_parse_stream", path, code, opts, DIALECT_TSV);
XSRETURN_EMPTY;
view all matches for this distribution
view release on metacpan or search on metacpan
_stat2 (path)
const char * path
INIT:
struct stat st;
char ino[128];
PPCODE:
if (stat (path, &st) == 0)
{
sprintf (ino, "%llu", (unsigned long long)st.st_ino);
XPUSHs (sv_2mortal (newSViv (st.st_dev )));
XPUSHs (sv_2mortal (newSVpv (ino , 0)));
view all matches for this distribution
view release on metacpan or search on metacpan
void
_df(dir)
char *dir
PREINIT:
Statfs st;
PPCODE:
EXTEND(sp, 7);
#ifdef DF_SOLARIS
if(statfs(dir, &st, 0, 0) == 0) {
#else
if(statfs(dir, &st) == 0) {
void
_df_fh(fd)
int fd
PREINIT:
Statfs st;
PPCODE:
EXTEND(sp, 7);
#ifdef DF_SOLARIS
if(fstatfs(fd, &st, 0, 0) == 0) {
#else
if(fstatfs(fd, &st) == 0) {
view all matches for this distribution