@@ -746,35 +746,37 @@ PHP_FUNCTION(com_event_sink)
746
746
/* {{{ Print out a PHP class definition for a dispatchable interface */
747
747
PHP_FUNCTION (com_print_typeinfo )
748
748
{
749
- zval * arg1 ;
749
+ zend_object * object_zpp ;
750
+ zend_string * typelib_name_zpp = NULL ;
750
751
char * ifacename = NULL ;
751
752
char * typelibname = NULL ;
752
753
size_t ifacelen ;
753
754
zend_bool wantsink = 0 ;
754
755
php_com_dotnet_object * obj = NULL ;
755
756
ITypeInfo * typeinfo ;
756
757
757
- if (FAILURE == zend_parse_parameters (ZEND_NUM_ARGS (), "z/|s!b" , & arg1 , & ifacename ,
758
- & ifacelen , & wantsink )) {
759
- RETURN_THROWS ();
760
- }
758
+ ZEND_PARSE_PARAMETERS_START (1 , 3 )
759
+ Z_PARAM_OBJ_OF_CLASS_OR_STR (object_zpp , php_com_variant_class_entry , typelib_name_zpp )
760
+ Z_PARAM_OPTIONAL
761
+ Z_PARAM_STRING_OR_NULL (ifacename , ifacelen )
762
+ Z_PARAM_BOOL (wantsink )
763
+ ZEND_PARSE_PARAMETERS_END ();
761
764
762
765
php_com_initialize ();
763
- if (Z_TYPE_P ( arg1 ) == IS_OBJECT ) {
764
- CDNO_FETCH_VERIFY ( obj , arg1 ) ;
766
+ if (object_zpp ) {
767
+ obj = ( php_com_dotnet_object * ) object_zpp ;
765
768
} else {
766
- convert_to_string (arg1 );
767
- typelibname = Z_STRVAL_P (arg1 );
769
+ typelibname = ZSTR_VAL (typelib_name_zpp );
768
770
}
769
771
770
772
typeinfo = php_com_locate_typeinfo (typelibname , obj , ifacename , wantsink ? 1 : 0 );
771
773
if (typeinfo ) {
772
774
php_com_process_typeinfo (typeinfo , NULL , 1 , NULL , obj ? obj -> code_page : COMG (code_page ));
773
775
ITypeInfo_Release (typeinfo );
774
776
RETURN_TRUE ;
775
- } else {
776
- zend_error (E_WARNING , "Unable to find typeinfo using the parameters supplied" );
777
777
}
778
+
779
+ php_error_docref (NULL , E_WARNING , "Unable to find typeinfo using the parameters supplied" );
778
780
RETURN_FALSE ;
779
781
}
780
782
/* }}} */
0 commit comments