libxml-libxml-perl/typemap

109 lines
3.6 KiB
Plaintext
Raw Normal View History

2022-09-27 15:00:17 +08:00
TYPEMAP
const char * T_PV
xmlParserCtxtPtr O_PARSER_OBJECT
xmlRelaxNGPtr O_OBJECT
xmlPatternPtr O_PATTERN_OBJECT
xmlRegexpPtr O_REGEXP_OBJECT
xmlSchemaPtr O_OBJECT
xmlNodeSetPtr O_OBJECT
perlxmlParserObjectPtr O_OBJECT
xmlDocPtr O_DOC_OBJECT
xmlNodePtr O_NODE_OBJECT
xmlDtdPtr O_NODE_OBJECT
xmlTextReaderPtr O_OBJECT
xmlErrorPtr O_OBJECT
xmlHashTablePtr O_OBJECT
xmlXPathCompExprPtr O_XPATH_OBJECT
INPUT
O_OBJECT
if( sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVMG) )
$var = INT2PTR($type,SvIV((SV*)SvRV( $arg )));
else{
warn( \"${Package}::$func_name() -- $var is not a blessed SV reference\" );
XSRETURN_UNDEF;
}
O_DOC_OBJECT
if( sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVMG) ) {
$var = INT2PTR($type,PmmSvNode($arg));
if ( $var == NULL ) {
croak( \"${Package}::$func_name() -- $var contains no data\" );
XSRETURN_UNDEF;
}
}
else{
croak( \"${Package}::$func_name() -- $var is not a blessed SV reference\" );
XSRETURN_UNDEF;
}
O_NODE_OBJECT
if( sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVMG) ) {
$var = INT2PTR($type,PmmSvNode($arg));
if ( $var == NULL ) {
croak( \"${Package}::$func_name() -- $var contains no data\" );
XSRETURN_UNDEF;
}
}
else {
croak( \"${Package}::$func_name() -- $var is not a blessed SV reference\" );
XSRETURN_UNDEF;
}
O_PARSER_OBJECT
if( sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVMG) ) {
$var = PmmSvContext($arg);
if ( $var == NULL ) {
croak( \"${Package}::$func_name() -- $var contains no parse context\" );
XSRETURN_UNDEF;
}
}
else {
croak( \"${Package}::$func_name() -- $var is not a blessed SV reference\" );
XSRETURN_UNDEF;
}
O_XPATH_OBJECT
if( sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVMG) && sv_isa($arg,\"XML::LibXML::XPathExpression\"))
$var = INT2PTR($type,SvIV((SV*)SvRV( $arg )));
else{
warn( \"${Package}::$func_name() -- $var is not a XML::LibXML::XPathExpression\" );
XSRETURN_UNDEF;
}
O_PATTERN_OBJECT
if( sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVMG) && sv_isa($arg,\"XML::LibXML::Pattern\"))
$var = INT2PTR($type,SvIV((SV*)SvRV( $arg )));
else{
warn( \"${Package}::$func_name() -- $var is not a XML::LibXML::Pattern\" );
XSRETURN_UNDEF;
}
O_REGEXP_OBJECT
if( sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVMG) && sv_isa($arg,\"XML::LibXML::RegExp\"))
$var = INT2PTR($type,SvIV((SV*)SvRV( $arg )));
else{
warn( \"${Package}::$func_name() -- $var is not a XML::LibXML::RegExp\" );
XSRETURN_UNDEF;
}
OUTPUT
# The Perl object is blessed into 'CLASS', which should be a
# char* having the name of the package for the blessing.
O_OBJECT
sv_setref_pv( $arg, (char *)CLASS, (void*)$var );
O_PATTERN_OBJECT
sv_setref_pv( $arg, (char *)\"XML::LibXML::Pattern\", (void*)$var );
O_REGEXP_OBJECT
sv_setref_pv( $arg, (char *)\"XML::LibXML::RegExp\", (void*)$var );
O_XPATH_OBJECT
sv_setref_pv( $arg, (char *)\"XML::LibXML::XPathExpression\", (void*)$var );
O_PARSER_OBJECT
$arg = PmmContextSv( $var );