/* {{{ proto array SplDoublyLinkedList::__serialize() */ SPL_METHOD(SplDoublyLinkedList, __serialize) { spl_dllist_object *intern = Z_SPLDLLIST_P(ZEND_THIS); spl_ptr_llist_element *current = intern->llist->head; zval tmp; if (zend_parse_parameters_none_throw() == FAILURE) { return; } array_init(return_value); /* flags */ ZVAL_LONG(&tmp, intern->flags); zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &tmp); /* elements */ array_init_size(&tmp, intern->llist->count); while (current) { zend_hash_next_index_insert(Z_ARRVAL(tmp), ¤t->data); current = current->next; } zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &tmp); /* members */ ZVAL_ARR(&tmp, zend_std_get_properties(&intern->std)); Z_TRY_ADDREF(tmp); zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &tmp); } /* }}} */
/* {{{ proto DOMDocumentFragment::__construct() */ PHP_METHOD(domdocumentfragment, __construct) { zval *id = getThis(); xmlNodePtr nodep = NULL, oldnode = NULL; dom_object *intern; if (zend_parse_parameters_none_throw() == FAILURE) { return; } nodep = xmlNewDocFragment(NULL); if (!nodep) { php_dom_throw_error(INVALID_STATE_ERR, 1); RETURN_FALSE; } intern = Z_DOMOBJ_P(id); oldnode = dom_object_get_node(intern); if (oldnode != NULL) { php_libxml_node_free_resource(oldnode ); } /* php_dom_set_object(intern, nodep); */ php_libxml_increment_node_ptr((php_libxml_node_object *)intern, nodep, (void *)intern); }
/* {{{ proto int \Glib\Source->getPriority() sets the priority of a source */ PHP_METHOD(GlibSource, getPriority) { glib_source_object *source_object; if (zend_parse_parameters_none_throw() == FAILURE) { return; } source_object = Z_GLIB_SOURCE_P(getThis()); GLIB_CHECK_INITIALIZED(source_object->source, Glib\\Source) RETURN_LONG(g_source_get_priority(source_object->source)); }
/* {{{ proto bool \Glib\Source->isDestroyed() removes a source from a main context and marks it as destroyed */ PHP_METHOD(GlibSource, isDestroyed) { glib_source_object *source_object; if (zend_parse_parameters_none_throw() == FAILURE) { return; } source_object = Z_GLIB_SOURCE_P(getThis()); GLIB_CHECK_INITIALIZED(source_object->source, Glib\\Source) RETURN_BOOL(g_source_is_destroyed(source_object->source)); }
/* {{{ proto void \Glib\Source->__construct() Creates a new source and implicitly calls start on it, so you don't have to call start */ PHP_METHOD(GlibSource, __construct) { if (zend_parse_parameters_none_throw() == FAILURE) { return; } // we put the zval in the php_glib_source and shake it all up glib_source_object * source_object = Z_GLIB_SOURCE_P(getThis()); source_object->source = g_source_new(&php_glib_source_funcs, sizeof(GPhpSource)); source_object->source = g_source_ref(source_object->source); source_object->is_php_source = TRUE; GPhpSource *gsource = (GPhpSource *)source_object->source; // copy our zval into our internal struct, return with getContext ZVAL_COPY(&gsource->source_zval, getThis()); zval_add_ref(&gsource->source_zval); zval_add_ref(&gsource->source_zval); }
/* {{{ proto Spoofchecker::__construct() * Spoofchecker object constructor. */ PHP_METHOD(Spoofchecker, __construct) { #if U_ICU_VERSION_MAJOR_NUM < 58 int checks; #endif zend_error_handling error_handling; SPOOFCHECKER_METHOD_INIT_VARS; if (zend_parse_parameters_none_throw() == FAILURE) { return; } zend_replace_error_handling(EH_THROW, IntlException_ce_ptr, &error_handling); SPOOFCHECKER_METHOD_FETCH_OBJECT_NO_CHECK; co->uspoof = uspoof_open(SPOOFCHECKER_ERROR_CODE_P(co)); INTL_METHOD_CHECK_STATUS(co, "spoofchecker: unable to open ICU Spoof Checker"); #if U_ICU_VERSION_MAJOR_NUM >= 58 /* TODO save it into the object for further suspiction check comparison. */ /* ICU 58 removes WSC and MSC handling. However there are restriction levels as defined in http://www.unicode.org/reports/tr39/tr39-15.html#Restriction_Level_Detection and the default is high restrictive. In further, we might want to utilize uspoof_check2 APIs when it became stable, to use extended check result APIs. Subsequent changes in the unicode security algos are to be watched.*/ uspoof_setRestrictionLevel(co->uspoof, SPOOFCHECKER_DEFAULT_RESTRICTION_LEVEL); #else /* Single-script enforcement is on by default. This fails for languages like Japanese that legally use multiple scripts within a single word, so we turn it off. */ checks = uspoof_getChecks(co->uspoof, SPOOFCHECKER_ERROR_CODE_P(co)); uspoof_setChecks(co->uspoof, checks & ~USPOOF_SINGLE_SCRIPT, SPOOFCHECKER_ERROR_CODE_P(co)); #endif zend_restore_error_handling(&error_handling); }