Source

perl-XML-LibXML / typemap

Diff from to
 TYPEMAP
 const char *                T_PV
-xmlDocPtr                   PROXY_OBJECT
-xmlNodePtr                  PROXY_OBJECT
-xmlNsPtr                    O_OBJECT
 xmlParserCtxtPtr            O_OBJECT
-xmlDtdPtr                   PROXY_OBJECT
 xmlNodeSetPtr               O_OBJECT
-ProxyObject *               O_OBJECT
 perlxmlParserObjectPtr      O_OBJECT
-
+xmlDocPtr                   O_DOC_OBJECT
+xmlNodePtr                  O_NODE_OBJECT
 
 INPUT
 O_OBJECT
             XSRETURN_UNDEF;
     }
 
-PROXY_OBJECT
-    if( sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVMG) )
-            $var = ($type)(((ProxyObject *)SvIV((SV*)SvRV( $arg )))->object);
+O_DOC_OBJECT
+    if( sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVMG) ) {
+            $var = ($type)PmmSvNode($arg);
+            if ( $var == NULL ) {
+               croak( \"${Package}::$func_name() -- $var contains no data\" );
+               XSRETURN_UNDEF;
+            }
+    }
     else{
-            warn( \"${Package}::$func_name() -- $var is not a blessed SV reference\" );
+            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 = ($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;
+    }
+
+
 OUTPUT
 
 # The Perl object is blessed into 'CLASS', which should be a
 O_OBJECT
         sv_setref_pv( $arg, (char *)CLASS, (void*)$var );
 
-PROXY_OBJECT
-        sv_setref_pv( $arg, (char *)CLASS, (void*)$var );