@@ -746,35 +746,37 @@ PHP_FUNCTION(com_event_sink)
746746/* {{{ Print out a PHP class definition for a dispatchable interface */
747747PHP_FUNCTION (com_print_typeinfo )
748748{
749- zval * arg1 ;
749+ zend_object * object_zpp ;
750+ zend_string * typelib_name_zpp = NULL ;
750751 char * ifacename = NULL ;
751752 char * typelibname = NULL ;
752753 size_t ifacelen ;
753754 zend_bool wantsink = 0 ;
754755 php_com_dotnet_object * obj = NULL ;
755756 ITypeInfo * typeinfo ;
756757
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 ();
761764
762765 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 ;
765768 } else {
766- convert_to_string (arg1 );
767- typelibname = Z_STRVAL_P (arg1 );
769+ typelibname = ZSTR_VAL (typelib_name_zpp );
768770 }
769771
770772 typeinfo = php_com_locate_typeinfo (typelibname , obj , ifacename , wantsink ? 1 : 0 );
771773 if (typeinfo ) {
772774 php_com_process_typeinfo (typeinfo , NULL , 1 , NULL , obj ? obj -> code_page : COMG (code_page ));
773775 ITypeInfo_Release (typeinfo );
774776 RETURN_TRUE ;
775- } else {
776- zend_error (E_WARNING , "Unable to find typeinfo using the parameters supplied" );
777777 }
778+
779+ php_error_docref (NULL , E_WARNING , "Unable to find typeinfo using the parameters supplied" );
778780 RETURN_FALSE ;
779781}
780782/* }}} */
0 commit comments