Lines Matching refs:disp

55 static void disp_destructor(php_dispatchex *disp TSRMLS_DC);
59 php_dispatchex *disp = (php_dispatchex *)rsrc->ptr; in dispatch_dtor() local
60 disp_destructor(disp TSRMLS_CC); in dispatch_dtor()
90 php_dispatchex *disp = (php_dispatchex*)This; \
93 trace(" PHP Object:%p (name:unknown) %s\n", disp->object, methname); \
95 trace(" PHP Object:%p (name:%s) %s\n", disp->object, Z_OBJCE_P(disp->object)->name, methname); \
97 if (GetCurrentThreadId() != disp->engine_thread) { \
111 IsEqualGUID(&disp->sinkid, riid)) { in disp_queryinterface()
113 InterlockedIncrement(&disp->refcount); in disp_queryinterface()
125 return InterlockedIncrement(&disp->refcount); in disp_addref()
133 ret = InterlockedDecrement(&disp->refcount); in disp_release()
137 if (disp->id) in disp_release()
138 zend_list_delete(disp->id); in disp_release()
185 if (zend_hash_find(disp->name_to_dispid, name, namelen+1, (void**)&tmp) == FAILURE) { in disp_getidsofnames()
229 trace("Looking for %s, namelen=%d in %p\n", name, namelen, disp->name_to_dispid); in disp_getdispid()
232 if (zend_hash_find(disp->name_to_dispid, name, namelen+1, (void**)&tmp) == SUCCESS) { in disp_getdispid()
260 if (SUCCESS == zend_hash_index_find(disp->dispid_to_name, id, (void**)&name)) { in disp_invokeex()
290 …retval = zend_read_property(Z_OBJCE_P(disp->object), disp->object, Z_STRVAL_PP(name), Z_STRLEN_PP(… in disp_invokeex()
292 …zend_update_property(Z_OBJCE_P(disp->object), disp->object, Z_STRVAL_PP(name), Z_STRLEN_PP(name)+1… in disp_invokeex()
295 if (SUCCESS == call_user_function_ex(EG(function_table), &disp->object, *name, in disp_invokeex()
391 if (SUCCESS == zend_hash_index_find(disp->dispid_to_name, id, (void**)&name)) { in disp_getmembername()
410 while(!zend_hash_index_exists(disp->dispid_to_name, next)) in disp_getnextdispid()
413 if (zend_hash_index_exists(disp->dispid_to_name, next)) { in disp_getnextdispid()
451 static void generate_dispids(php_dispatchex *disp TSRMLS_DC) in generate_dispids()
460 if (disp->dispid_to_name == NULL) { in generate_dispids()
461 ALLOC_HASHTABLE(disp->dispid_to_name); in generate_dispids()
462 ALLOC_HASHTABLE(disp->name_to_dispid); in generate_dispids()
463 zend_hash_init(disp->name_to_dispid, 0, NULL, ZVAL_PTR_DTOR, 0); in generate_dispids()
464 zend_hash_init(disp->dispid_to_name, 0, NULL, ZVAL_PTR_DTOR, 0); in generate_dispids()
468 if (Z_OBJPROP_P(disp->object)) { in generate_dispids()
469 zend_hash_internal_pointer_reset_ex(Z_OBJPROP_P(disp->object), &pos); in generate_dispids()
471 zend_hash_get_current_key_ex(Z_OBJPROP_P(disp->object), &name, in generate_dispids()
480 zend_hash_move_forward_ex(Z_OBJPROP_P(disp->object), &pos); in generate_dispids()
483 if (zend_hash_find(disp->name_to_dispid, name, namelen, (void**)&tmp) == SUCCESS) in generate_dispids()
489 pid = zend_hash_next_free_element(disp->dispid_to_name); in generate_dispids()
490 zend_hash_index_update(disp->dispid_to_name, pid, (void*)&tmp, sizeof(zval *), NULL); in generate_dispids()
494 zend_hash_update(disp->name_to_dispid, name, namelen, (void*)&tmp, sizeof(zval *), NULL); in generate_dispids()
499 if (Z_OBJCE_P(disp->object)) { in generate_dispids()
500 zend_hash_internal_pointer_reset_ex(&Z_OBJCE_P(disp->object)->function_table, &pos); in generate_dispids()
502 zend_hash_get_current_key_ex(&Z_OBJCE_P(disp->object)->function_table, in generate_dispids()
512 zend_hash_move_forward_ex(Z_OBJPROP_P(disp->object), &pos); in generate_dispids()
515 if (zend_hash_find(disp->name_to_dispid, name, namelen, (void**)&tmp) == SUCCESS) in generate_dispids()
521 pid = zend_hash_next_free_element(disp->dispid_to_name); in generate_dispids()
522 zend_hash_index_update(disp->dispid_to_name, pid, (void*)&tmp, sizeof(zval *), NULL); in generate_dispids()
526 zend_hash_update(disp->name_to_dispid, name, namelen, (void*)&tmp, sizeof(zval *), NULL); in generate_dispids()
533 php_dispatchex *disp = (php_dispatchex*)CoTaskMemAlloc(sizeof(php_dispatchex)); in disp_constructor() local
537 if (disp == NULL) in disp_constructor()
540 memset(disp, 0, sizeof(php_dispatchex)); in disp_constructor()
542 disp->engine_thread = GetCurrentThreadId(); in disp_constructor()
543 disp->lpVtbl = &php_dispatch_vtbl; in disp_constructor()
544 disp->refcount = 1; in disp_constructor()
549 disp->object = object; in disp_constructor()
551 disp->id = zend_list_insert(disp, le_dispatch TSRMLS_CC); in disp_constructor()
553 return disp; in disp_constructor()
556 static void disp_destructor(php_dispatchex *disp TSRMLS_DC) in disp_destructor()
560 trace("destroying COM wrapper for PHP object %p (name:unknown)\n", disp->object); in disp_destructor()
562 …trace("destroying COM wrapper for PHP object %p (name:%s)\n", disp->object, Z_OBJCE_P(disp->object… in disp_destructor()
565 disp->id = 0; in disp_destructor()
567 if (disp->refcount > 0) in disp_destructor()
568 CoDisconnectObject((IUnknown*)disp, 0); in disp_destructor()
570 zend_hash_destroy(disp->dispid_to_name); in disp_destructor()
571 zend_hash_destroy(disp->name_to_dispid); in disp_destructor()
572 FREE_HASHTABLE(disp->dispid_to_name); in disp_destructor()
573 FREE_HASHTABLE(disp->name_to_dispid); in disp_destructor()
575 if (disp->object) in disp_destructor()
576 zval_ptr_dtor(&disp->object); in disp_destructor()
578 CoTaskMemFree(disp); in disp_destructor()
584 php_dispatchex *disp = disp_constructor(val TSRMLS_CC); in php_com_wrapper_export_as_sink() local
592 disp->dispid_to_name = id_to_name; in php_com_wrapper_export_as_sink()
594 memcpy(&disp->sinkid, sinkid, sizeof(disp->sinkid)); in php_com_wrapper_export_as_sink()
597 ALLOC_HASHTABLE(disp->name_to_dispid); in php_com_wrapper_export_as_sink()
598 zend_hash_init(disp->name_to_dispid, 0, NULL, ZVAL_PTR_DTOR, 0); in php_com_wrapper_export_as_sink()
610 zend_hash_update(disp->name_to_dispid, Z_STRVAL_PP(ntmp), in php_com_wrapper_export_as_sink()
617 return (IDispatch*)disp; in php_com_wrapper_export_as_sink()
622 php_dispatchex *disp = NULL; in php_com_wrapper_export() local
643 disp = disp_constructor(val TSRMLS_CC); in php_com_wrapper_export()
644 generate_dispids(disp TSRMLS_CC); in php_com_wrapper_export()
646 return (IDispatch*)disp; in php_com_wrapper_export()