Deep-Encode
view release on metacpan or search on metacpan
if ( pf->fastinit != 1){
ret_list_size = call_method(pf->method, G_SCALAR);
}
else {
ret_list_size = call_sv( (SV*) pf->meth1, G_SCALAR );
}
SPAGAIN;
if (ret_list_size != 1){
croak( "A big trouble");
}
sv_setsv( data, POPs );
PUTBACK;
FREETMPS;
LEAVE;
};
break;
case DEEP_CALL_INPLACE:
{
dSP;
ENTER;
SAVETMPS;
PUSHMARK(SP);
for ( argc = 1; argc < pf->argc; ++argc ){
if ( argc == pf->str_pos ){
XPUSHs( data );
}
else {
XPUSHs( pf->argv[argc] );
}
};
/* ARGUMENTS */
PUTBACK;
call_sv( pf->argv[0], G_DISCARD );
FREETMPS;
LEAVE;
};
break;
case 1: /* print str */
default:
fprintf( stderr, "'%.*s'\n", (int) plen, pstr);
break;
}
if (SvMAGICAL(data)){
mg_set(data);
}
}
}
}
}
MODULE = Deep::Encode PACKAGE = Deep::Encode
void
deep_utf8_decode( SV *data )
PROTOTYPE: $
PPCODE:
struct pp_args a_args;
a_args.noskip = 0;
a_args.type = DEEP_CALL_INPLACE ;
a_args.str_pos = 1;
a_args.argc = 2;
a_args.argv[0] = (SV *) get_cv( "utf8::decode", 0);
if ( ! a_args.argv[0] )
croak ("Fail locate &utf8::decode");
deep_walk_imp( data, & a_args );
void
deep_utf8_encode( SV *data )
PROTOTYPE: $
PPCODE:
struct pp_args a_args;
a_args.noskip = 0;
a_args.type = DEEP_CALL_INPLACE ;
a_args.str_pos = 1;
a_args.argc = 2;
a_args.argv[0] = (SV *) get_cv( "utf8::encode", 0);
if ( ! a_args.argv[0] )
croak ("Fail locate &utf8::encode");
deep_walk_imp( data, & a_args );
void
deep_from_to_00( SV *data, SV *from, SV* to )
PROTOTYPE: $$$
PPCODE:
struct pp_args a_args;
a_args.noskip = 0;
a_args.type = DEEP_FUNCTION;
a_args.callback = from_to_cb_00;
a_args.argv[0] = find_encoding( &a_args, from );
a_args.argv[1] = find_encoding( &a_args, to );
deep_walk_imp( data, & a_args );
void
deep_from_to( SV *data, SV *from, SV* to )
PROTOTYPE: $$$
PPCODE:
struct pp_args a_args;
a_args.noskip = 0;
a_args.type = DEEP_FUNCTION;
a_args.fastinit = 0;
a_args.callback = from_to_cb;
a_args.argv[0] = find_encoding( &a_args, from );
a_args.argv[1] = find_encoding( &a_args, to );
deep_walk_imp( data, & a_args );
void
deep_encode_00( SV *data, SV* encoding )
PROTOTYPE: $$
PPCODE:
struct pp_args a_args;
a_args.type = DEEP_METHOD_TEMP;
a_args.fastinit = -1;
a_args.method = "encode";
a_args.noskip = 0;
a_args.str_pos = 1;
a_args.argc = 2;
a_args.argv[0] = find_encoding( & a_args, encoding );
a_args.argv[1] = 0;
deep_walk_imp( data, & a_args );
void
deep_decode_00( SV *data, SV* encoding )
PROTOTYPE: $$
PPCODE:
struct pp_args a_args;
a_args.type = DEEP_METHOD_TEMP;
a_args.fastinit = -1;
a_args.method = "decode";
a_args.noskip = 0;
a_args.str_pos = 1;
a_args.argc = 2;
a_args.argv[0] = find_encoding( & a_args, encoding );
a_args.argv[1] = 0;
deep_walk_imp( data, & a_args );
void
deep_encode( SV *data, SV* encoding )
PROTOTYPE: $$
PPCODE:
struct pp_args a_args;
a_args.type = DEEP_METHOD_TEMP;
a_args.method = "encode";
a_args.noskip = 0;
a_args.str_pos = 1;
a_args.fastinit = 0;
a_args.argc = 2;
a_args.argv[0] = find_encoding( & a_args, encoding );
a_args.argv[1] = 0;
deep_walk_imp( data, & a_args );
void
deep_decode( SV *data, SV* encoding )
PROTOTYPE: $$
PPCODE:
struct pp_args a_args;
a_args.type = DEEP_METHOD_TEMP;
a_args.method = "decode";
a_args.noskip = 0;
a_args.str_pos = 1;
a_args.argc = 2;
a_args.fastinit = 0;
a_args.argv[0] = find_encoding( & a_args, encoding );
a_args.argv[1] = 0;
deep_walk_imp( data, & a_args );
void
deep_utf8_off( SV *data)
PROTOTYPE: $
PPCODE:
struct pp_args a_args;
a_args.noskip = 1;
a_args.type = DEEP_FUNCTION;
a_args.callback = utf8_off_cb;
a_args.counter = 0;
deep_walk_imp( data, & a_args );
mXPUSHi( a_args.counter );
void
deep_utf8_on( SV *data)
PROTOTYPE: $
PPCODE:
struct pp_args a_args;
a_args.noskip = 1;
a_args.type = DEEP_FUNCTION;
a_args.callback = utf8_on_cb;
a_args.counter = 0;
deep_walk_imp( data, & a_args );
mXPUSHi( a_args.counter );
void
deep_utf8_downgrade( SV *data)
PROTOTYPE: $
PPCODE:
struct pp_args a_args;
a_args.noskip = 1;
a_args.type = DEEP_FUNCTION;
a_args.callback = utf8_downgrade_cb;
a_args.counter = 0;
deep_walk_imp( data, & a_args );
mXPUSHi( a_args.counter );
void
deep_utf8_upgrade( SV *data)
PROTOTYPE: $
PPCODE:
struct pp_args a_args;
a_args.noskip = 1;
a_args.type = DEEP_FUNCTION;
a_args.callback = utf8_upgrade_cb;
a_args.counter = 0;
deep_walk_imp( data, & a_args );
mXPUSHi( a_args.counter );
void
deep_utf8_check( SV *data)
PROTOTYPE: $
PPCODE:
struct pp_args a_args;
a_args.noskip = 1;
a_args.type = DEEP_FUNCTION;
a_args.callback = utf8_check_encoding_cb;
a_args.counter = 1;
deep_walk_imp( data, &a_args );
mXPUSHi( a_args.counter );
void
deep_str_clone( SV *data )
PROTOTYPE: $
PPCODE:
struct pp_args a_args;
SV * R;
a_args.noskip = 0;
R = deep_clone_imp( data, &a_args );
if ( R ){
sv_2mortal( R );
XPUSHs( R );
}
else {
XPUSHs( data );
}
( run in 1.984 second using v1.01-cache-2.11-cpan-5511b514fd6 )