view release on metacpan or search on metacpan
Connection.xs view on Meta::CPAN
OUTPUT:
RETVAL
=item my ($ret, $result) = $con->query('select * from foo');
Send query to server.
=cut
void
query(SV*self, SV*query_sv)
PPCODE:
dTARGET;
net_con * con = XS_STATE(net_con*, self);
STRLEN query_len;
const char * query_c = SvPV_const(query_sv, query_len);
drizzle_return_t ret;
drizzle_result_st *result = drizzle_query(con->con, NULL, query_c, query_len, &ret);
XPUSHi(ret);
mXPUSHs(_create_result(self, NULL, result));
XSRETURN(2);
Connection.xs view on Meta::CPAN
OUTPUT:
RETVAL
=item $con->command_buffer()
Read command and buffer it.
=cut
void
command_buffer(net_con *con)
PPCODE:
/* my ($data, $command, $total, $ret) = $con->command_buffer(); */
drizzle_command_t command;
size_t total;
drizzle_return_t ret;
uint8_t *data = NULL;
data = drizzle_command_buffer(con->con, &command, &total, &ret);
mXPUSHp((const char *)data, data ? strlen((char*)data) : 0);
mXPUSHi(command);
Connection.xs.tt view on Meta::CPAN
OUTPUT:
RETVAL
=item my ($ret, $result) = $con->query('select * from foo');
Send query to server.
=cut
void
query(SV*self, SV*query_sv)
PPCODE:
dTARGET;
net_con * con = XS_STATE(net_con*, self);
STRLEN query_len;
const char * query_c = SvPV_const(query_sv, query_len);
drizzle_return_t ret;
drizzle_result_st *result = drizzle_query(con->con, NULL, query_c, query_len, &ret);
XPUSHi(ret);
mXPUSHs(_create_result(self, NULL, result));
XSRETURN(2);
Connection.xs.tt view on Meta::CPAN
OUTPUT:
RETVAL
=item $con->command_buffer()
Read command and buffer it.
=cut
void
command_buffer(net_con *con)
PPCODE:
/* my ($data, $command, $total, $ret) = $con->command_buffer(); */
drizzle_command_t command;
size_t total;
drizzle_return_t ret;
uint8_t *data = NULL;
data = drizzle_command_buffer(con->con, &command, &total, &ret);
mXPUSHp((const char *)data, data ? strlen((char*)data) : 0);
mXPUSHi(command);
con_wait(SV* self)
CODE:
drizzle_st * drizzle = GET_DRIZZLE(self);
drizzle_return_t ret = drizzle_con_wait(drizzle);
if (ret != DRIZZLE_RETURN_OK) {
// Perl_croak(aTHX_ "drizzle_con_wait:%s\n", drizzle_error(drizzle));
}
void
con_ready(SV* self)
PPCODE:
drizzle_st * drizzle = GET_DRIZZLE(self);
drizzle_con_st * con_raw = drizzle_con_ready(drizzle);
if (con_raw) {
ST(0) = _create_con(self, con_raw);
XSRETURN(1);
} else {
ST(0) = &PL_sv_undef;
XSRETURN(1);
}
int
error_code(SV* self)
CODE:
drizzle_st* drizzle = GET_DRIZZLE(self);
RETVAL=drizzle_error_code(drizzle);
OUTPUT:
RETVAL
void
query_run(SV* self)
PPCODE:
dTARGET;
drizzle_st *drizzle = GET_DRIZZLE(self);
drizzle_return_t ret = 0;
drizzle_query_st * query = drizzle_query_run(drizzle, &ret);
if (query) {
SV * q = _create_query(self, NULL, query);
XPUSHi(ret);
mXPUSHs(q);
XSRETURN(2);
} else {
Drizzle.xs.tt view on Meta::CPAN
con_wait(SV* self)
CODE:
drizzle_st * drizzle = GET_DRIZZLE(self);
drizzle_return_t ret = drizzle_con_wait(drizzle);
if (ret != DRIZZLE_RETURN_OK) {
// Perl_croak(aTHX_ "drizzle_con_wait:%s\n", drizzle_error(drizzle));
}
void
con_ready(SV* self)
PPCODE:
drizzle_st * drizzle = GET_DRIZZLE(self);
drizzle_con_st * con_raw = drizzle_con_ready(drizzle);
if (con_raw) {
ST(0) = _create_con(self, con_raw);
XSRETURN(1);
} else {
ST(0) = &PL_sv_undef;
XSRETURN(1);
}
Drizzle.xs.tt view on Meta::CPAN
int
error_code(SV* self)
CODE:
drizzle_st* drizzle = GET_DRIZZLE(self);
RETVAL=drizzle_error_code(drizzle);
OUTPUT:
RETVAL
void
query_run(SV* self)
PPCODE:
dTARGET;
drizzle_st *drizzle = GET_DRIZZLE(self);
drizzle_return_t ret = 0;
drizzle_query_st * query = drizzle_query_run(drizzle, &ret);
if (query) {
SV * q = _create_query(self, NULL, query);
XPUSHi(ret);
mXPUSHs(q);
XSRETURN(2);
} else {
OUTPUT:
RETVAL
=item string
Get the string for a query.
=cut
void
string(SV*self)
PPCODE:
net_query *query = XS_STATE(net_query*, self);
size_t size;
const char * str = drizzle_query_string(query->query, &size);
mXPUSHs(newSVpvn(str, size));
XSRETURN(1);
=item result
Get the result for a query.
OUTPUT:
RETVAL
=item my ($ret, $field) = $res->field_buffer();
Buffer one field.
=cut
void
field_buffer(net_result *result)
PPCODE:
/* my ($ret, $field) = $res->field_buffer(); */
drizzle_return_t ret;
size_t total;
drizzle_field_t field = drizzle_field_buffer(result->result, &total, &ret);
mXPUSHi(ret);
mXPUSHs(field != NULL ? newSVpv(field, total) : newSV(0));
XSRETURN(2);
=back
Result.xs.mt view on Meta::CPAN
OUTPUT:
RETVAL
=item my ($ret, $field) = $res->field_buffer();
Buffer one field.
=cut
void
field_buffer(net_result *result)
PPCODE:
/* my ($ret, $field) = $res->field_buffer(); */
drizzle_return_t ret;
size_t total;
drizzle_field_t field = drizzle_field_buffer(result->result, &total, &ret);
mXPUSHi(ret);
mXPUSHs(field != NULL ? newSVpv(field, total) : newSV(0));
XSRETURN(2);
=back
inc/ExtUtils/ParseXS.pm view on Meta::CPAN
( (??{ $size }) )? # Possible sizeof set-from
\) \s* ; \s* $
]x);
$targetable{$key} = [$t, $with_size, $arg, $sarg] if $t;
}
my $END = "!End!\n\n"; # "impossible" keyword (multiple newline)
# Match an XS keyword
$BLOCK_re= '\s*(' . join('|', qw(
REQUIRE BOOT CASE PREINIT INPUT INIT CODE PPCODE OUTPUT
CLEANUP ALIAS ATTRS PROTOTYPES PROTOTYPE VERSIONCHECK INCLUDE
SCOPE INTERFACE INTERFACE_MACRO C_ARGS POSTCALL OVERLOAD FALLBACK
)) . "|$END)\\s*:";
our ($C_group_rex, $C_arg);
# Group in C (no support for comments or literals)
$C_group_rex = qr/ [({\[]
(?: (?> [^()\[\]{}]+ ) | (??{ $C_group_rex }) )*
[)}\]] /x ;
inc/ExtUtils/ParseXS.pm view on Meta::CPAN
$report_args =~ s/^,\s+//;
my @func_args = @args;
shift @func_args if defined($class);
for (@func_args) {
s/^/&/ if $in_out{$_};
}
$func_args = join(", ", @func_args);
@args_match{@args} = @args_num;
$PPCODE = grep(/^\s*PPCODE\s*:/, @line);
$CODE = grep(/^\s*CODE\s*:/, @line);
# Detect CODE: blocks which use ST(n)= or XST_m*(n,v)
# to set explicit return values.
$EXPLICIT_RETURN = ($CODE &&
("@line" =~ /(\bST\s*\([^;]*=) | (\bXST_m\w+\s*\()/x ));
$ALIAS = grep(/^\s*ALIAS\s*:/, @line);
$INTERFACE = grep(/^\s*INTERFACE\s*:/, @line);
$xsreturn = 1 if $EXPLICIT_RETURN;
inc/ExtUtils/ParseXS.pm view on Meta::CPAN
# if ($cond)
# croak_xs_usage(cv, "$report_args");
EOF
} else {
# cv likely to be unused
print Q(<<"EOF");
# PERL_UNUSED_VAR(cv); /* -W */
EOF
}
#gcc -Wall: if an xsub has PPCODE is used
#it is possible none of ST, XSRETURN or XSprePUSH macros are used
#hence `ax' (setup by dXSARGS) is unused
#XXX: could breakup the dXSARGS; into dSP;dMARK;dITEMS
#but such a move could break third-party extensions
print Q(<<"EOF") if $PPCODE;
# PERL_UNUSED_VAR(ax); /* -Wall */
EOF
print Q(<<"EOF") if $PPCODE;
# SP -= items;
EOF
# Now do a block of some sort.
$condnum = 0;
$cond = ''; # last CASE: condidional
push(@line, "$END:");
push(@line_no, $line_no[-1]);
$_ = '';
inc/ExtUtils/ParseXS.pm view on Meta::CPAN
if (@fake_INPUT or @fake_INPUT_pre) {
unshift @line, @fake_INPUT_pre, @fake_INPUT, $_;
$_ = "";
$processing_arg_with_types = 1;
INPUT_handler() ;
}
print $deferred;
process_keyword("INIT|ALIAS|ATTRS|PROTOTYPE|INTERFACE_MACRO|INTERFACE|C_ARGS|OVERLOAD") ;
if (check_keyword("PPCODE")) {
print_section();
death ("PPCODE must be last thing") if @line;
print "\tLEAVE;\n" if $ScopeThisXSUB;
print "\tPUTBACK;\n\treturn;\n";
} elsif (check_keyword("CODE")) {
print_section() ;
} elsif (defined($class) and $func_name eq "DESTROY") {
print "\n\t";
print "delete THIS;\n";
} else {
print "\n\t";
if ($ret_type ne "void") {
inc/ExtUtils/ParseXS.pm view on Meta::CPAN
print "\tEXTEND(SP,$c);\n" if $c;
$xsreturn += $c;
generate_output($var_types{$_}, $num++, $_, 0, 1) for @outlist;
# do cleanup
process_keyword("CLEANUP|ALIAS|ATTRS|PROTOTYPE|OVERLOAD") ;
print Q(<<"EOF") if $ScopeThisXSUB;
# ]]
EOF
print Q(<<"EOF") if $ScopeThisXSUB and not $PPCODE;
# LEAVE;
EOF
# print function trailer
print Q(<<"EOF");
# ]]
EOF
print Q(<<"EOF") if $except;
# BEGHANDLERS
# CATCHALL
inc/ExtUtils/ParseXS.pm view on Meta::CPAN
last if $_ eq "$END:";
death(/^$BLOCK_re/o ? "Misplaced `$1:'" : "Junk at end of function");
}
print Q(<<"EOF") if $except;
# if (errbuf[0])
# Perl_croak(aTHX_ errbuf);
EOF
if ($xsreturn) {
print Q(<<"EOF") unless $PPCODE;
# XSRETURN($xsreturn);
EOF
} else {
print Q(<<"EOF") unless $PPCODE;
# XSRETURN_EMPTY;
EOF
}
print Q(<<"EOF");
#]]
#
EOF
my $newXS = "newXS" ;