Lines Matching refs:disp

51 static void disp_destructor(php_dispatchex *disp);
55 php_dispatchex *disp = (php_dispatchex *)rsrc->ptr; in dispatch_dtor() local
56 disp_destructor(disp); in dispatch_dtor()
86 php_dispatchex *disp = (php_dispatchex*)This; \
88 trace(" PHP Object:%p (name:unknown) %s\n", Z_OBJ(disp->object), methname); \
90 …trace(" PHP Object:%p (name:%s) %s\n", Z_OBJ(disp->object), Z_OBJCE(disp->object)->name->val, meth…
92 if (GetCurrentThreadId() != disp->engine_thread) { \
106 IsEqualGUID(&disp->sinkid, riid)) { in disp_queryinterface()
108 InterlockedIncrement(&disp->refcount); in disp_queryinterface()
120 return InterlockedIncrement(&disp->refcount); in disp_addref()
128 ret = InterlockedDecrement(&disp->refcount); in disp_release()
132 if (disp->res) in disp_release()
133 zend_list_delete(disp->res); in disp_release()
179 if ((tmp = zend_hash_find(disp->name_to_dispid, name)) == NULL) { in disp_getidsofnames()
222 trace("Looking for %s, namelen=%d in %p\n", ZSTR_VAL(name), ZSTR_LEN(name), disp->name_to_dispid); in disp_getdispid()
225 if ((tmp = zend_hash_find(disp->name_to_dispid, name)) != NULL) { in disp_getdispid()
253 if (NULL != (name = zend_hash_index_find(disp->dispid_to_name, id))) { in disp_invokeex()
279 …retval = zend_read_property(Z_OBJCE(disp->object), Z_OBJ(disp->object), Z_STRVAL_P(name), Z_STRLEN… in disp_invokeex()
281 …zend_update_property(Z_OBJCE(disp->object), Z_OBJ(disp->object), Z_STRVAL_P(name), Z_STRLEN_P(name… in disp_invokeex()
285 if (SUCCESS == call_user_function(NULL, &disp->object, name, in disp_invokeex()
380 if (NULL != (name = zend_hash_index_find(disp->dispid_to_name, id))) { in disp_getmembername()
399 while(!zend_hash_index_exists(disp->dispid_to_name, next)) in disp_getnextdispid()
402 if (zend_hash_index_exists(disp->dispid_to_name, next)) { in disp_getnextdispid()
440 static void generate_dispids(php_dispatchex *disp) in generate_dispids() argument
448 if (disp->dispid_to_name == NULL) { in generate_dispids()
449 ALLOC_HASHTABLE(disp->dispid_to_name); in generate_dispids()
450 ALLOC_HASHTABLE(disp->name_to_dispid); in generate_dispids()
451 zend_hash_init(disp->name_to_dispid, 0, NULL, ZVAL_PTR_DTOR, 0); in generate_dispids()
452 zend_hash_init(disp->dispid_to_name, 0, NULL, ZVAL_PTR_DTOR, 0); in generate_dispids()
456 if (Z_OBJPROP(disp->object)) { in generate_dispids()
457 zend_hash_internal_pointer_reset_ex(Z_OBJPROP(disp->object), &pos); in generate_dispids()
459 zend_hash_get_current_key_ex(Z_OBJPROP(disp->object), &name, in generate_dispids()
469 zend_hash_move_forward_ex(Z_OBJPROP(disp->object), &pos); in generate_dispids()
472 if ((tmp = zend_hash_find(disp->name_to_dispid, name)) != NULL) { in generate_dispids()
479 pid = zend_hash_next_free_element(disp->dispid_to_name); in generate_dispids()
480 zend_hash_index_update(disp->dispid_to_name, pid, &tmp2); in generate_dispids()
483 zend_hash_update(disp->name_to_dispid, name, &tmp2); in generate_dispids()
490 if (Z_OBJCE(disp->object)) { in generate_dispids()
491 zend_hash_internal_pointer_reset_ex(&Z_OBJCE(disp->object)->function_table, &pos); in generate_dispids()
493 zend_hash_get_current_key_ex(&Z_OBJCE(disp->object)->function_table, in generate_dispids()
504 zend_hash_move_forward_ex(&Z_OBJCE(disp->object)->function_table, &pos); in generate_dispids()
507 if ((tmp = zend_hash_find(disp->name_to_dispid, name)) != NULL) { in generate_dispids()
514 pid = zend_hash_next_free_element(disp->dispid_to_name); in generate_dispids()
515 zend_hash_index_update(disp->dispid_to_name, pid, &tmp2); in generate_dispids()
518 zend_hash_update(disp->name_to_dispid, name, &tmp2); in generate_dispids()
527 php_dispatchex *disp = (php_dispatchex*)CoTaskMemAlloc(sizeof(php_dispatchex)); in disp_constructor() local
532 if (disp == NULL) in disp_constructor()
535 memset(disp, 0, sizeof(php_dispatchex)); in disp_constructor()
537 disp->engine_thread = GetCurrentThreadId(); in disp_constructor()
538 disp->lpVtbl = &php_dispatch_vtbl; in disp_constructor()
539 disp->refcount = 1; in disp_constructor()
543 ZVAL_COPY(&disp->object, object); in disp_constructor()
545 ZVAL_UNDEF(&disp->object); in disp_constructor()
548 tmp = zend_list_insert(disp, le_dispatch); in disp_constructor()
549 disp->res = Z_RES_P(tmp); in disp_constructor()
551 return disp; in disp_constructor()
554 static void disp_destructor(php_dispatchex *disp) in disp_destructor() argument
558 trace("destroying COM wrapper for PHP object %p (name:unknown)\n", Z_OBJ(disp->object)); in disp_destructor()
560 …trace("destroying COM wrapper for PHP object %p (name:%s)\n", Z_OBJ(disp->object), Z_OBJCE(disp->o… in disp_destructor()
563 disp->res = NULL; in disp_destructor()
565 if (disp->refcount > 0) in disp_destructor()
566 CoDisconnectObject((IUnknown*)disp, 0); in disp_destructor()
568 zend_hash_destroy(disp->dispid_to_name); in disp_destructor()
569 zend_hash_destroy(disp->name_to_dispid); in disp_destructor()
570 FREE_HASHTABLE(disp->dispid_to_name); in disp_destructor()
571 FREE_HASHTABLE(disp->name_to_dispid); in disp_destructor()
573 zval_ptr_dtor(&disp->object); in disp_destructor()
575 CoTaskMemFree(disp); in disp_destructor()
581 php_dispatchex *disp = disp_constructor(val); in php_com_wrapper_export_as_sink() local
588 disp->dispid_to_name = id_to_name; in php_com_wrapper_export_as_sink()
590 memcpy(&disp->sinkid, sinkid, sizeof(disp->sinkid)); in php_com_wrapper_export_as_sink()
593 ALLOC_HASHTABLE(disp->name_to_dispid); in php_com_wrapper_export_as_sink()
594 zend_hash_init(disp->name_to_dispid, 0, NULL, ZVAL_PTR_DTOR, 0); in php_com_wrapper_export_as_sink()
605 zend_hash_update(disp->name_to_dispid, Z_STR_P(ntmp), &tmp); in php_com_wrapper_export_as_sink()
611 return (IDispatch*)disp; in php_com_wrapper_export_as_sink()
616 php_dispatchex *disp = NULL; in php_com_wrapper_export() local
637 disp = disp_constructor(val); in php_com_wrapper_export()
638 generate_dispids(disp); in php_com_wrapper_export()
640 return (IDispatch*)disp; in php_com_wrapper_export()