您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ zend_hash_index_update函数代码示例

51自学网 2021-06-03 11:56:47
  C++
这篇教程C++ zend_hash_index_update函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中zend_hash_index_update函数的典型用法代码示例。如果您正苦于以下问题:C++ zend_hash_index_update函数的具体用法?C++ zend_hash_index_update怎么用?C++ zend_hash_index_update使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了zend_hash_index_update函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: spl_fixedarray_object_get_properties

static HashTable* spl_fixedarray_object_get_properties(zval *obj) /* {{{{ */{	spl_fixedarray_object *intern  = Z_SPLFIXEDARRAY_P(obj);	HashTable *ht = zend_std_get_properties(obj);	zend_long  i = 0;	if (intern->array) {		zend_long j = zend_hash_num_elements(ht);		for (i = 0; i < intern->array->size; i++) {			if (!Z_ISUNDEF(intern->array->elements[i])) {				zend_hash_index_update(ht, i, &intern->array->elements[i]);				if (Z_REFCOUNTED(intern->array->elements[i])){					Z_ADDREF(intern->array->elements[i]);				}			} else {				zend_hash_index_update(ht, i, &EG(uninitialized_zval));			}		}		if (j > intern->array->size) {			for (i = intern->array->size; i < j; ++i) {				zend_hash_index_del(ht, i);			}		}	}	return ht;}
开发者ID:20uf,项目名称:php-src,代码行数:28,


示例2: zephir_array_update_zval

/** * @brief Updates value in @a arr at position @a index with @a value * @param[in,out] arr Array * @param index Index * @param[in,out] value Value * @param flags Flags * @return Whether the operation succeeded * @retval @c FAILURE Failure, @a arr is not an array or @a index is of not supported type * @retval @c SUCCESS Success * @note @c index will be handled as follows: @c NULL is treated as an empty string, @c double values are cast to @c integer, @c bool or @c resource are treated as @c integer * @throw @c E_WARNING if @a offset is not a scalar or @c arr is not an array * * Equivalent to <tt>$arr[$index] = $value</tt> in PHP. * Flags may be a bitwise OR of the following values: * @arg @c PH_CTOR: create a copy of @a value and work with that copy; @c *value will be updated with the newly constructed value * @arg @c PH_SEPARATE: separate @a arr if its reference count is greater than 1; @c *arr will contain the separated version * @arg @c PH_COPY: increment the reference count on @c **value */int zephir_array_update_zval(zval **arr, zval *index, zval **value, int flags) {    HashTable *ht;    if (Z_TYPE_PP(arr) != IS_ARRAY) {        zend_error(E_WARNING, "Cannot use a scalar value as an array (2)");        return FAILURE;    }    if ((flags & PH_CTOR) == PH_CTOR) {        zval *new_zv;        Z_DELREF_PP(value);        ALLOC_ZVAL(new_zv);        INIT_PZVAL_COPY(new_zv, *value);        *value = new_zv;        zval_copy_ctor(new_zv);    }    if ((flags & PH_SEPARATE) == PH_SEPARATE) {        SEPARATE_ZVAL_IF_NOT_REF(arr);    }    if ((flags & PH_COPY) == PH_COPY) {        Z_ADDREF_PP(value);    }    ht = Z_ARRVAL_PP(arr);    switch (Z_TYPE_P(index)) {    case IS_NULL:        return zend_symtable_update(ht, "", 1, value, sizeof(zval*), NULL);    case IS_DOUBLE:        return zend_hash_index_update(ht, (ulong)Z_DVAL_P(index), value, sizeof(zval*), NULL);    case IS_LONG:    case IS_BOOL:    case IS_RESOURCE:        return zend_hash_index_update(ht, Z_LVAL_P(index), value, sizeof(zval*), NULL);    case IS_STRING:        return zend_symtable_update(ht, Z_STRVAL_P(index), Z_STRLEN_P(index)+1, value, sizeof(zval*), NULL);    default:        zend_error(E_WARNING, "Illegal offset type");        return FAILURE;    }}
开发者ID:golovanov,项目名称:php-ext-zendxml,代码行数:66,


示例3: process_nested_data

static inline int process_nested_data(UNSERIALIZE_PARAMETER, HashTable *ht, long elements, int objprops){	while (elements-- > 0) {		zval *key, *data, **old_data;		ALLOC_INIT_ZVAL(key);		if (!php_var_unserialize2(&key, p, max, NULL TSRMLS_CC)) {			zval_dtor(key);			FREE_ZVAL(key);			return 0;		}		if (Z_TYPE_P(key) != IS_LONG && Z_TYPE_P(key) != IS_STRING) {			zval_dtor(key);			FREE_ZVAL(key);			return 0;		}		ALLOC_INIT_ZVAL(data);		if (!php_var_unserialize2(&data, p, max, var_hash TSRMLS_CC)) {			zval_dtor(key);			FREE_ZVAL(key);			zval_dtor(data);			FREE_ZVAL(data);			return 0;		}		switch (Z_TYPE_P(key)) {		case IS_LONG:            if (objprops) {                /* show a warning for not compatible */                php_error_docref(NULL TSRMLS_CC, E_WARNING, "got integer prop. %d", Z_LVAL_P(key));            }			if (zend_hash_index_find(ht, Z_LVAL_P(key), (void **)&old_data)==SUCCESS) {				var_push_dtor(var_hash, old_data);			}			zend_hash_index_update(ht, Z_LVAL_P(key), &data, sizeof(data), NULL);			break;		case IS_STRING:			if (zend_symtable_find(ht, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, (void **)&old_data)==SUCCESS) {				var_push_dtor(var_hash, old_data);			}			zend_symtable_update(ht, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, &data, sizeof(data), NULL);			break;		}						zval_dtor(key);		FREE_ZVAL(key);		if (elements && *(*p-1) != ';' && *(*p-1) != '}') {			(*p)--;			return 0;		}	}	return 1;}
开发者ID:qiaolun,项目名称:unserialize,代码行数:60,


示例4: process_nested_data

static inline int process_nested_data(UNSERIALIZE_PARAMETER, HashTable *ht, long elements, int objprops){	while (elements-- > 0) {		zval *key, *data, **old_data;		ALLOC_INIT_ZVAL(key);		if (!php_var_unserialize(&key, p, max, NULL TSRMLS_CC)) {            var_push_dtor_no_addref(var_hash, &key);			return 0;		}		if (Z_TYPE_P(key) != IS_LONG && Z_TYPE_P(key) != IS_STRING) {            var_push_dtor_no_addref(var_hash, &key);			return 0;		}		ALLOC_INIT_ZVAL(data);		if (!php_var_unserialize(&data, p, max, var_hash TSRMLS_CC)) {            var_push_dtor_no_addref(var_hash, &key);            var_push_dtor_no_addref(var_hash, &data);			return 0;		}		if (!objprops) {			switch (Z_TYPE_P(key)) {			case IS_LONG:				if (zend_hash_index_find(ht, Z_LVAL_P(key), (void **)&old_data)==SUCCESS) {					var_push_dtor(var_hash, old_data);				}				zend_hash_index_update(ht, Z_LVAL_P(key), &data, sizeof(data), NULL);				break;			case IS_STRING:				if (zend_symtable_find(ht, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, (void **)&old_data)==SUCCESS) {					var_push_dtor(var_hash, old_data);				}				zend_symtable_update(ht, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, &data, sizeof(data), NULL);				break;			}		} else {			/* object properties should include no integers */			convert_to_string(key);			if (zend_hash_find(ht, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, (void **)&old_data)==SUCCESS) {				var_push_dtor(var_hash, old_data);			}			zend_hash_update(ht, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, &data,					sizeof data, NULL);		}		var_push_dtor(var_hash, &data);        var_push_dtor_no_addref(var_hash, &key);		if (elements && *(*p-1) != ';' && *(*p-1) != '}') {			(*p)--;			return 0;		}	}	return 1;}
开发者ID:AzerTyQsdF,项目名称:osx,代码行数:60,


示例5: phalcon_array_update_long

/** * Updates values on arrays by long indexes only */int phalcon_array_update_long(zval **arr, ulong index, zval **value, int flags TSRMLS_DC){	if (Z_TYPE_PP(arr) != IS_ARRAY) {		php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Cannot use a scalar value as an array");		return FAILURE;	}	if ((flags & PH_CTOR) == PH_CTOR) {		zval *new_zv;		Z_DELREF_PP(value);		ALLOC_ZVAL(new_zv);		INIT_PZVAL_COPY(new_zv, *value);		*value = new_zv;		zval_copy_ctor(new_zv);	}	if ((flags & PH_SEPARATE) == PH_SEPARATE) {		if (Z_REFCOUNT_PP(arr) > 1) {			zval *new_zv;			Z_DELREF_PP(arr);			ALLOC_ZVAL(new_zv);			INIT_PZVAL_COPY(new_zv, *arr);			*arr = new_zv;			zval_copy_ctor(new_zv);	    }	}	if ((flags & PH_COPY) == PH_COPY) {		Z_ADDREF_PP(value);	}	return zend_hash_index_update(Z_ARRVAL_PP(arr), index, value, sizeof(zval *), NULL);}
开发者ID:fatihzkaratana,项目名称:cphalcon,代码行数:36,


示例6: xc_coverager_clean

/* }}} */static void xc_coverager_clean(TSRMLS_D) /* {{{ */{	if (XG(coverages)) {		HashPosition pos;		coverager_t *pcov;		zend_hash_internal_pointer_reset_ex(XG(coverages), &pos);		while (zend_hash_get_current_data_ex(XG(coverages), (void **) &pcov, &pos) == SUCCESS) {			long *phits;			coverager_t cov;			HashPosition pos2;			cov = *pcov;			zend_hash_internal_pointer_reset_ex(cov, &pos2);			while (zend_hash_get_current_data_ex(cov, (void**)&phits, &pos2) == SUCCESS) {				long hits = *phits;				if (hits != -1) {					hits = -1;					zend_hash_index_update(cov, pos2->h, &hits, sizeof(hits), NULL);				}				zend_hash_move_forward_ex(cov, &pos2);			}			zend_hash_move_forward_ex(XG(coverages), &pos);		}	}}
开发者ID:alepharchives,项目名称:xcache,代码行数:30,


示例7: php_autoglobal_merge

/* {{{ php_autoglobal_merge */static void php_autoglobal_merge(HashTable *dest, HashTable *src){	zval *src_entry, *dest_entry;	zend_string *string_key;	zend_ulong num_key;	int globals_check = (dest == (&EG(symbol_table)));	ZEND_HASH_FOREACH_KEY_VAL(src, num_key, string_key, src_entry) {		if (Z_TYPE_P(src_entry) != IS_ARRAY			|| (string_key && (dest_entry = zend_hash_find(dest, string_key)) == NULL)			|| (string_key == NULL && (dest_entry = zend_hash_index_find(dest, num_key)) == NULL)			|| Z_TYPE_P(dest_entry) != IS_ARRAY) {			if (Z_REFCOUNTED_P(src_entry)) {				Z_ADDREF_P(src_entry);			}			if (string_key) {				if (!globals_check || string_key->len != sizeof("GLOBALS") - 1						|| memcmp(string_key->val, "GLOBALS", sizeof("GLOBALS") - 1)) {					zend_hash_update(dest, string_key, src_entry);				} else if (Z_REFCOUNTED_P(src_entry)) {					Z_DELREF_P(src_entry);				}			} else {				zend_hash_index_update(dest, num_key, src_entry);			}		} else {			SEPARATE_ZVAL(dest_entry);			php_autoglobal_merge(Z_ARRVAL_P(dest_entry), Z_ARRVAL_P(src_entry));		}	} ZEND_HASH_FOREACH_END();}
开发者ID:Crell,项目名称:php-src,代码行数:33,


示例8: _php_import_environment_variables

void _php_import_environment_variables(zval *array_ptr){	char **env, *p;	size_t name_len, len;	zval val;	zend_ulong idx;	for (env = environ; env != NULL && *env != NULL; env++) {		p = strchr(*env, '=');		if (!p		 || p == *env		 || !valid_environment_name(*env, p)) {			/* malformed entry? */			continue;		}		name_len = p - *env;		p++;		len = strlen(p);		if (len == 0) {			ZVAL_EMPTY_STRING(&val);		} else if (len == 1) {			ZVAL_INTERNED_STR(&val, ZSTR_CHAR((zend_uchar)*p));		} else {			ZVAL_NEW_STR(&val, zend_string_init(p, len, 0));		}		if (ZEND_HANDLE_NUMERIC_STR(*env, name_len, idx)) {			zend_hash_index_update(Z_ARRVAL_P(array_ptr), idx, &val);		} else {			php_register_variable_quick(*env, name_len, &val, Z_ARRVAL_P(array_ptr));		}	}}
开发者ID:IMSoP,项目名称:php-src,代码行数:32,


示例9: orbit_save_data

/* * save a corba object to a php object */void orbit_save_data(zval * php_object, int type, void * data){    pval * orbit_data_handle = NULL;    long id = zend_list_insert(                  data, 										/* data */                  type								/* type */              );    /*     * do it like they do in php_COM_call_function_handler     * (insert into some magic hash index)     */    ALLOC_ZVAL(orbit_data_handle);	/* allocate memory for value */    orbit_data_handle->type = IS_LONG;    orbit_data_handle->value.lval = id;    pval_copy_constructor(orbit_data_handle);	/* why? */    INIT_PZVAL(orbit_data_handle);	/* set reference count */    zend_hash_index_update(        php_object->value.obj.properties, /* hashtable */        0, 																/* hash??? */        &orbit_data_handle,								/* data */        sizeof(pval *),										/* data size */        NULL															/* destination */    );}
开发者ID:jehurodrig,项目名称:PHP-4.0.6-16-07-2009,代码行数:33,


示例10: zephir_array_update_long

/** * @brief Updates value in @a arr at position @a index with @a value * @param[in,out] arr Array * @param index Index * @param[in,out] value Value * @param flags Flags * @return Whether the operation succeeded * @retval @c FAILURE Failure, @a arr is not an array * @retval @c SUCCESS Success * @throw @c E_WARNING if @c arr is not an array * * Equivalent to <tt>$arr[$index] = $value</tt> in PHP where @c $index is an integer. * Flags may be a bitwise OR of the following values: * @arg @c PH_CTOR: create a copy of @a value and work with that copy; @c *value will be updated with the newly constructed value * @arg @c PH_SEPARATE: separate @a arr if its reference count is greater than 1; @c *arr will contain the separated version * @arg @c PH_COPY: increment the reference count on @c **value */int zephir_array_update_long(zval **arr, unsigned long index, zval **value, int flags ZEPHIR_DEBUG_PARAMS) {    if (Z_TYPE_PP(arr) != IS_ARRAY) {        zend_error(E_WARNING, "Cannot use a scalar value as an array in %s on line %d", file, line);        return FAILURE;    }    if ((flags & PH_CTOR) == PH_CTOR) {        zval *new_zv;        Z_DELREF_PP(value);        ALLOC_ZVAL(new_zv);        INIT_PZVAL_COPY(new_zv, *value);        *value = new_zv;        zval_copy_ctor(new_zv);    }    if ((flags & PH_SEPARATE) == PH_SEPARATE) {        SEPARATE_ZVAL_IF_NOT_REF(arr);    }    if ((flags & PH_COPY) == PH_COPY) {        Z_ADDREF_PP(value);    }    return zend_hash_index_update(Z_ARRVAL_PP(arr), index, value, sizeof(zval *), NULL);}
开发者ID:golovanov,项目名称:php-ext-zendxml,代码行数:43,


示例11: full_user_list

static int full_user_list(struct user_info *uentp, struct fulluserlistarg* arg,int count){    struct user_info userinfo=*uentp;    struct userec *lookupuser;    zval* element;    if (!userinfo.active || !userinfo.pid) {        return 0;    }    if (!HAS_PERM(getCurrentUser(), PERM_SEECLOAK) && userinfo.invisible && strcmp(userinfo.userid, getCurrentUser()->userid)) {        /*Haohmaru.99.4.24.让隐身者能看见自己 */        return 0;    }    if (count+1<arg->start)        return COUNT;    if (count+1-arg->start>=arg->num)        return QUIT;    MAKE_STD_ZVAL ( element );    array_init ( element );    add_assoc_bool ( element, "invisible", userinfo.invisible );    add_assoc_long ( element, "pid", userinfo.pid );    add_assoc_bool ( element, "isfriend", isfriend(userinfo.userid) );    add_assoc_string ( element, "userid", userinfo.userid, 1 );    add_assoc_string ( element, "username", userinfo.username, 1 );    if( getuser(userinfo.userid, &lookupuser) == 0 ) lookupuser=NULL;    add_assoc_string ( element, "userfrom", HAS_PERM(getCurrentUser(), PERM_SYSOP)? userinfo.from: SHOW_USERIP(lookupuser, userinfo.from), 1 );    add_assoc_string ( element, "mode", ModeType(userinfo.mode), 1 );    add_assoc_long ( element, "idle", (long)(time(0) - userinfo.freshtime)/60 );        zend_hash_index_update(Z_ARRVAL_P(arg->return_value), count+1-arg->start, (void *) &element, sizeof(zval *), NULL);    return COUNT;}
开发者ID:marvelliu,项目名称:lilacsrc,代码行数:32,


示例12: switch

/* {{{ php_oci_lob_create() Create LOB descriptor and allocate all the resources needed */php_oci_descriptor *php_oci_lob_create (php_oci_connection *connection, long type TSRMLS_DC){	php_oci_descriptor *descriptor;	switch (type) {		case OCI_DTYPE_FILE:		case OCI_DTYPE_LOB:		case OCI_DTYPE_ROWID:			/* these three are allowed */			break;		default:			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown descriptor type %ld", type);			return NULL;			break;	}	descriptor = ecalloc(1, sizeof(php_oci_descriptor));	descriptor->type = type;	descriptor->connection = connection;	zend_list_addref(descriptor->connection->rsrc_id);	PHP_OCI_CALL_RETURN(OCI_G(errcode), OCIDescriptorAlloc, (connection->env, (dvoid*)&(descriptor->descriptor), descriptor->type, (size_t) 0, (dvoid **) 0));	if (OCI_G(errcode) != OCI_SUCCESS) {		OCI_G(errcode) = php_oci_error(OCI_G(err), OCI_G(errcode) TSRMLS_CC);		PHP_OCI_HANDLE_ERROR(connection, OCI_G(errcode));		efree(descriptor);		return NULL;	}	PHP_OCI_REGISTER_RESOURCE(descriptor, le_descriptor);		descriptor->lob_current_position = 0;	descriptor->lob_size = -1;				/* we should set it to -1 to know, that it's just not initialized */	descriptor->buffering = PHP_OCI_LOB_BUFFER_DISABLED;				/* buffering is off by default */	descriptor->charset_form = SQLCS_IMPLICIT;	/* default value */	descriptor->charset_id = connection->charset;	descriptor->is_open = 0;	if (descriptor->type == OCI_DTYPE_LOB || descriptor->type == OCI_DTYPE_FILE) {		/* add Lobs & Files to hash. we'll flush them at the end */		if (!connection->descriptors) {			ALLOC_HASHTABLE(connection->descriptors);			zend_hash_init(connection->descriptors, 0, NULL, php_oci_descriptor_flush_hash_dtor, 0);			connection->descriptor_count = 0;		}				descriptor->index = (connection->descriptor_count)++;		if (connection->descriptor_count == LONG_MAX) {			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Internal descriptor counter has reached limit");			php_oci_connection_descriptors_free(connection TSRMLS_CC);			return NULL;		}		zend_hash_index_update(connection->descriptors,descriptor->index,&descriptor,sizeof(php_oci_descriptor *),NULL);	}	return descriptor;} /* }}} */
开发者ID:NobleGaz,项目名称:PHP,代码行数:61,


示例13: buession_hash_index_add_null

BUESSION_API int buession_hash_index_add_null(HashTable *ht, ulong index TSRMLS_DC){	zval *value;	MAKE_STD_ZVAL(value);	ZVAL_NULL(value);	return zend_hash_index_update(ht, index, (void *) &value, sizeof(zval *), NULL);}
开发者ID:eduosi,项目名称:buession,代码行数:8,


示例14: hash_to_zval

static int hash_to_zval(VALUE key, VALUE value, VALUE zval_array) {    zval *v;    zval *ary;    if (key == Qundef) {        return ST_CONTINUE;    }    ary = (zval *)zval_array;    v = value_to_zval(value);    if (key == Qtrue) {        zend_hash_index_update(Z_ARRVAL_P(ary), 1, &v, sizeof(zval *), NULL);        return ST_CONTINUE;    }    if (key == Qfalse || key == Qnil) {        zend_hash_index_update(Z_ARRVAL_P(ary), 0, &v, sizeof(zval *), NULL);        return ST_CONTINUE;    }    if (TYPE(key) == T_FIXNUM) {        int idx = FIX2INT(key);        zend_hash_index_update(Z_ARRVAL_P(ary), idx, &v, sizeof(zval *), NULL);        return ST_CONTINUE;    }    switch (TYPE(key)) {        case T_BIGNUM:            key = rb_big2str(key, 10);            break;        case T_SYMBOL:            key = rb_sym_to_s(key);            break;        case T_STRING:            key = rb_string_value(&key);            break;        default:            rb_raise(rb_eRuntimeError, "invalid key (%d)", TYPE(key));    }    //ZEND_HANDLE_NUMERIC(RSTRING_PTR(key), RSTRING_LEN(key), zend_hash_index_update(Z_ARRVAL_P(ary), idx, &v, sizeof(zval *), NULL));    zend_symtable_update(Z_ARRVAL_P(ary), RSTRING_PTR(key), RSTRING_LEN(key) + 1, &v, sizeof(zval *), NULL);    return ST_CONTINUE;}
开发者ID:Epictetus,项目名称:php_embed,代码行数:46,


示例15: dbx_odbc_getrow

int dbx_odbc_getrow(zval ** rv, zval ** result_handle, long row_number, INTERNAL_FUNCTION_PARAMETERS) {    /*/ returns array[0..columncount-1] as strings on success or 0 as long on failure /*/    int number_of_arguments;    zval ** arguments[2];    zval * num_fields_zval=NULL;    zval * fetch_row_result_zval=NULL;    zval * field_result_zval=NULL;    zval * field_index_zval;    zval * returned_zval=NULL;    long field_index;    long field_count=-1;    /*/ get # fields /*/    MAKE_STD_ZVAL(num_fields_zval);    ZVAL_LONG(num_fields_zval, 0);    if (!dbx_odbc_getcolumncount(&num_fields_zval, result_handle, INTERNAL_FUNCTION_PARAM_PASSTHRU)) {        return 0;        }    field_count=num_fields_zval->value.lval;    FREE_ZVAL(num_fields_zval);    /*/ fetch row /*/    number_of_arguments=1;    arguments[0]=result_handle;    dbx_call_any_function(INTERNAL_FUNCTION_PARAM_PASSTHRU, "odbc_fetch_row", &fetch_row_result_zval, number_of_arguments, arguments);    if (!fetch_row_result_zval || fetch_row_result_zval->type!=IS_BOOL) {        if (fetch_row_result_zval) zval_ptr_dtor(&fetch_row_result_zval);        return 0;        }    if (fetch_row_result_zval->value.lval==0) {        (*rv)->type=IS_LONG;        (*rv)->value.lval=0; /*/ ok, no more rows /*/        zval_ptr_dtor(&fetch_row_result_zval);        return 0;        }    zval_ptr_dtor(&fetch_row_result_zval);    /*/ fill array with field results... /*/    MAKE_STD_ZVAL(returned_zval);    if (array_init(returned_zval) != SUCCESS) {        zend_error(E_ERROR, "dbx_odbc_getrow: unable to create result-array...");        FREE_ZVAL(returned_zval);        return 0;        }    MAKE_STD_ZVAL(field_index_zval);    ZVAL_LONG(field_index_zval, 0);    number_of_arguments=2;    for (field_index=0; field_index<field_count; ++field_index) {        ZVAL_LONG(field_index_zval, field_index+1);        arguments[0]=result_handle;        arguments[1]=&field_index_zval;        dbx_call_any_function(INTERNAL_FUNCTION_PARAM_PASSTHRU, "odbc_result", &field_result_zval, number_of_arguments, arguments);        zend_hash_index_update(returned_zval->value.ht, field_index, (void *)&(field_result_zval), sizeof(zval *), NULL);        }    FREE_ZVAL(field_index_zval);    MOVE_RETURNED_TO_RV(rv, returned_zval);    return 1;    }
开发者ID:jehurodrig,项目名称:PHP-4.0.6-16-07-2009,代码行数:57,


示例16: zephir_update_property_array

/** * Updates an array property */int zephir_update_property_array(zval *object, const char *property, zend_uint property_length, const zval *index, zval *value){	zval tmp;	int separated = 0;	if (Z_TYPE_P(object) == IS_OBJECT) {		zephir_read_property(&tmp, object, property, property_length, PH_NOISY | PH_READONLY);		/** Separation only when refcount > 1 */		if (Z_REFCOUNTED(tmp)) {			if (Z_REFCOUNT(tmp) > 1) {				if (!Z_ISREF(tmp)) {					zval new_zv;					ZVAL_DUP(&new_zv, &tmp);					ZVAL_COPY_VALUE(&tmp, &new_zv);					Z_TRY_DELREF(new_zv);					separated = 1;				}			}		} else {			zval new_zv;			ZVAL_DUP(&new_zv, &tmp);			ZVAL_COPY_VALUE(&tmp, &new_zv);			Z_TRY_DELREF(new_zv);			separated = 1;		}		/** Convert the value to array if not is an array */		if (Z_TYPE(tmp) != IS_ARRAY) {			if (separated) {				convert_to_array(&tmp);			} else {				array_init(&tmp);				separated = 1;			}			Z_DELREF(tmp);		}		Z_TRY_ADDREF_P(value);		if (Z_TYPE_P(index) == IS_STRING) {			zend_symtable_str_update(Z_ARRVAL(tmp), Z_STRVAL_P(index), Z_STRLEN_P(index), value);		} else if (Z_TYPE_P(index) == IS_LONG) {			zend_hash_index_update(Z_ARRVAL(tmp), Z_LVAL_P(index), value);		} else if (Z_TYPE_P(index) == IS_NULL) {			zend_hash_next_index_insert(Z_ARRVAL(tmp), value);		}		if (separated) {			zephir_update_property_zval(object, property, property_length, &tmp);		}	}	return SUCCESS;}
开发者ID:phalcon,项目名称:zephir,代码行数:57,


示例17: phalcon_array_update_zval

/** * Updates values on arrays by string or long indexes */int phalcon_array_update_zval(zval **arr, zval *index, zval **value, int flags TSRMLS_DC){	if (Z_TYPE_PP(arr) != IS_ARRAY) {		php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Cannot use a scalar value as an array");		return FAILURE;	}	if (Z_TYPE_P(index) == IS_NULL) {		convert_to_string(index);	} else {		if (Z_TYPE_P(index) == IS_BOOL || Z_TYPE_P(index) == IS_DOUBLE) {			convert_to_long(index);		}	}	if ((flags & PH_CTOR) == PH_CTOR) {		zval *new_zv;		Z_DELREF_PP(value);		ALLOC_ZVAL(new_zv);		INIT_PZVAL_COPY(new_zv, *value);		*value = new_zv;		zval_copy_ctor(new_zv);	}	if ((flags & PH_SEPARATE) == PH_SEPARATE) {		if (Z_REFCOUNT_PP(arr) > 1) {			zval *new_zv;			Z_DELREF_PP(arr);			ALLOC_ZVAL(new_zv);			INIT_PZVAL_COPY(new_zv, *arr);			*arr = new_zv;			zval_copy_ctor(new_zv);	    }	}	if ((flags & PH_COPY) == PH_COPY) {		Z_ADDREF_PP(value);	} 	if(Z_TYPE_P(index) == IS_STRING){		return zend_hash_update(Z_ARRVAL_PP(arr), Z_STRVAL_P(index), Z_STRLEN_P(index)+1, value, sizeof(zval *), NULL);	} else {		if (Z_TYPE_P(index) == IS_LONG) {			return zend_hash_index_update(Z_ARRVAL_PP(arr), Z_LVAL_P(index), value, sizeof(zval *), NULL);		} else {			php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Illegal offset type");		}	}	return FAILURE;}
开发者ID:fatihzkaratana,项目名称:cphalcon,代码行数:54,


示例18: zend_list_insert

ZEND_API int zend_list_insert(void *ptr, int type TSRMLS_DC){	int index;	zend_rsrc_list_entry le;	le.ptr=ptr;	le.type=type;	le.refcount=1;	index = zend_hash_next_free_element(&EG(regular_list));	zend_hash_index_update(&EG(regular_list), index, (void *) &le, sizeof(zend_rsrc_list_entry), NULL);	return index;}
开发者ID:19Berny90,项目名称:php-src,代码行数:14,


示例19: PHP_METHOD

PHP_METHOD(SolrCollapseFunction, __construct){    long int index = SOLR_UNIQUE_FUNCTION_INDEX();    uint nSize = SOLR_INITIAL_HASH_TABLE_SIZE;    solr_function_t *solr_function_dest = NULL;    solr_function_t solr_function;    zval *index_prop, *zvfield = NULL;    solr_char_t *param_name = (solr_char_t *)"field";    int param_name_len = sizeof("field");    solr_string_t field_str;    solr_char_t *field_name = NULL;    int field_name_len = 0;    memset(&solr_function, 0, sizeof(solr_function_t));    if (zend_hash_index_update(SOLR_GLOBAL(functions),index,(void *) &solr_function, sizeof(solr_function_t), (void **) &solr_function_dest) == FAILURE)    {        php_error_docref(NULL TSRMLS_CC, E_ERROR, "Error while registering query parameters in HashTable");        return ;    }    index_prop = zend_read_property(Z_OBJCE_P(getThis()), getThis(), SOLR_INDEX_PROPERTY_NAME, sizeof(SOLR_INDEX_PROPERTY_NAME) - 1, 1 TSRMLS_CC);    Z_LVAL_P(index_prop) = index;    solr_function_dest->function_index = index;    solr_function_dest->name = (solr_char_t *)"collapse";    solr_function_dest->name_length = sizeof(solr_function_dest->name);    /* Allocated memory for the params HashTable using fast cache for HashTables */    ALLOC_HASHTABLE(solr_function_dest->params);    zend_hash_init(solr_function_dest->params, nSize, NULL, (dtor_func_t) solr_string_free_ex, SOLR_FUNCTIONS_PERSISTENT);    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s", &field_name, &field_name_len) == FAILURE)    {        php_error_docref(NULL TSRMLS_CC, E_ERROR, "Error Parsing Parameters");        return;    }    if (field_name_len > 0 ) {        memset(&field_str, 0, sizeof(solr_string_t));        solr_string_set(&field_str, (solr_char_t *)field_name, field_name_len);        if(zend_hash_update(solr_function_dest->params, param_name, param_name_len, (void **)&field_str, sizeof(solr_string_t), NULL) == FAILURE)        {            php_error_docref(NULL TSRMLS_CC, E_ERROR, "Error assigning field");        }    }}
开发者ID:marcosptf,项目名称:pecl-search_engine-solr,代码行数:50,


示例20: php_functional_append_array_value

void php_functional_append_array_value(int hash_key_type, zval **return_value, zval **value, char *string_key, uint string_key_len, int int_key){	zval_add_ref(return_value);	zval_add_ref(value);	switch (hash_key_type) {		case HASH_KEY_IS_LONG:			zend_hash_index_update(Z_ARRVAL_PP(return_value), int_key, (void *)value, sizeof(zval *), NULL);			break;		case HASH_KEY_IS_STRING:			zend_hash_update(Z_ARRVAL_PP(return_value), string_key, string_key_len, (void *)value, sizeof(zval *), NULL);			break;	}}
开发者ID:pierrejoye,项目名称:functional-php,代码行数:14,


示例21: add_zval

static void add_zval(zval* list, const char* id, zval* val){	if (list && val) {		if (id) {			int id_len = strlen(id);			if (!(id_len > 1 && id[0] == '0') && is_numeric_string((char *)id, id_len, NULL, NULL, 0) == IS_LONG) {				long index = strtol(id, NULL, 0);				zend_hash_index_update(Z_ARRVAL_P(list), index, val);			} else {				zend_hash_str_update(Z_ARRVAL_P(list), (char*)id, strlen(id), val);			}		} else {			zend_hash_next_index_insert(Z_ARRVAL_P(list), val);		}	}}
开发者ID:AllenJB,项目名称:php-src,代码行数:16,


示例22: PHP_METHOD

/* {{{ proto void SolrInputDocument::__construct()	SolrInputDocument constructor */PHP_METHOD(SolrInputDocument, __construct){	zval *objptr = getThis();	uint nSize = SOLR_INITIAL_HASH_TABLE_SIZE;	ulong document_index = SOLR_UNIQUE_DOCUMENT_INDEX();	auto solr_document_t solr_doc;	solr_document_t *doc_entry = NULL, *doc_ptr = NULL;	memset(&solr_doc, 0, sizeof(solr_document_t));	doc_entry = &solr_doc;	doc_entry->document_index  = document_index;	doc_entry->field_count     = 0L;	doc_entry->document_boost  = 0.0f;	/* Allocated memory for the fields HashTable using fast cache for HashTables */	ALLOC_HASHTABLE(doc_entry->fields);	ALLOC_HASHTABLE(doc_entry->children);	/* Initializing the hash table used for storing fields in this SolrDocument */	zend_hash_init(doc_entry->fields, nSize, NULL, (dtor_func_t) solr_destroy_field_list, SOLR_DOCUMENT_FIELD_PERSISTENT);	zend_hash_init(doc_entry->children, nSize, NULL, ZVAL_PTR_DTOR, SOLR_DOCUMENT_FIELD_PERSISTENT);	/* Let's check one more time before insert into the HashTable */	if (zend_hash_index_exists(SOLR_GLOBAL(documents), document_index)) {		pefree(doc_entry->fields, SOLR_DOCUMENT_FIELD_PERSISTENT);		pefree(doc_entry->children, SOLR_DOCUMENT_FIELD_PERSISTENT);		return;	}	/* Add the document entry to the directory of documents */	zend_hash_index_update(SOLR_GLOBAL(documents), document_index, (void *) doc_entry, sizeof(solr_document_t), (void **) &doc_ptr);	/* Set the value of the internal id property */	zend_update_property_long(solr_ce_SolrInputDocument, objptr, SOLR_INDEX_PROPERTY_NAME, sizeof(SOLR_INDEX_PROPERTY_NAME) - 1, document_index TSRMLS_CC);	/* Keep track of how many SolrDocument instances we currently have */	SOLR_GLOBAL(document_count)++;	/* Overriding the default object handlers */	Z_OBJ_HT_P(objptr) = &solr_input_document_object_handlers;}
开发者ID:cfgxy,项目名称:php-solr,代码行数:47,


示例23: php_functional_prepare_array_key

void php_functional_prepare_array_key(int hash_key_type, zval **key, zval ***value, char *string_key, uint string_key_len, int int_key, zval **return_value, int collect){	switch (hash_key_type) {		case HASH_KEY_IS_LONG:			Z_TYPE_PP(key) = IS_LONG;			Z_LVAL_PP(key) = int_key;			if (collect) {				zend_hash_index_update(Z_ARRVAL_PP(return_value), int_key, *value, sizeof(zval *), NULL);			}			break;		case HASH_KEY_IS_STRING:			ZVAL_STRINGL(*key, string_key, string_key_len - 1, 1);			if (collect) {				zend_hash_update(Z_ARRVAL_PP(return_value), string_key, string_key_len, *value, sizeof(zval *), NULL);			}			break;	}}
开发者ID:kasn,项目名称:Functional-PHP,代码行数:19,


示例24: PHP_METHOD

PHP_METHOD(Type, of) {	long ztype = 0;	zval *zcache = NULL;	php_jit_type_t *ptype;		if (php_jit_parameters("l", &ztype) != SUCCESS || !ztype) {		php_jit_exception("unexpected parameters, expected (int type)");		return;	}		if (!(zcache = zend_hash_index_find(&JG(types), ztype))) {	 	object_init_ex(return_value, jit_type_ce);	 	ptype = PHP_JIT_FETCH_TYPE(return_value);	 	ptype->id = ztype;	 	ptype->type = php_jit_type(ztype);	 	zend_hash_index_update(	 		&JG(types), ztype, return_value);	 	Z_ADDREF_P(return_value);	 } else ZVAL_COPY(return_value, zcache);}
开发者ID:krakjoe,项目名称:jitfu,代码行数:20,


示例25: PHP

/* {{{ pip_pyobject_to_zobject(PyObject *obj)   Convert Python object to a PHP (Zend) object */zval *pip_pyobject_to_zobject(PyObject *obj){	pval *ret;	zval *handle;	TSRMLS_FETCH();	/* Create a PHP Python object */	MAKE_STD_ZVAL(ret);	object_init_ex(ret, &python_class_entry);	ret->is_ref = 1;	ret->refcount = 1;	/* Assign the current PyObject to the new PHP Python object */	ALLOC_ZVAL(handle);	ZVAL_RESOURCE(handle, zend_list_insert(obj, le_pyobject));	zval_copy_ctor(handle);	INIT_PZVAL(handle);	zend_hash_index_update(Z_OBJPROP_P(ret), 0, &handle, sizeof(zval *), NULL);	return ret;}
开发者ID:demos,项目名称:Motif,代码行数:24,


示例26: msgpack_convert_long_to_properties

inline int msgpack_convert_long_to_properties(    HashTable *ht, HashTable **properties, HashPosition *prop_pos,    uint key_index, zval *val, HashTable *var){    if (*properties != NULL)    {        char *prop_key;        uint prop_key_len;        ulong prop_key_index;        for (;; zend_hash_move_forward_ex(*properties, prop_pos))        {            if (zend_hash_get_current_key_ex(                    *properties, &prop_key, &prop_key_len,                    &prop_key_index, 0, prop_pos) == HASH_KEY_IS_STRING)            {                if (var == NULL ||                    !zend_hash_exists(var, prop_key, prop_key_len))                {                    zend_hash_move_forward_ex(*properties, prop_pos);                    return zend_symtable_update(                        ht, prop_key, prop_key_len,                        &val, sizeof(val), NULL);                }            }            else            {                break;            }        }        *properties = NULL;    }    return zend_hash_index_update(ht, key_index, &val, sizeof(val), NULL);}
开发者ID:seporaitis,项目名称:msgpack,代码行数:36,


示例27: tw_span_create

long tw_span_create(char *category, size_t category_len TSRMLS_DC){	zval span, starts, stops, annotations;	int idx;	long parent = 0;	if (TWG(spans) == NULL) {		return -1;	}	idx = zend_hash_num_elements(Z_ARRVAL_P(TWG(spans)));	// Hardcode a limit of 1500 spans for now, Daemon will re-filter again to 1000.	// We assume web-requests and non-spammy worker/crons here, need a way to support	// very long running scripts at some point.	if (idx >= 1500) {		return -1;	}	array_init(&span);	array_init(&starts);	array_init(&stops);	array_init(&annotations);	add_assoc_stringl(&span, "n", category, category_len);	add_assoc_zval(&span, "b", &starts);	add_assoc_zval(&span, "e", &stops);	if (parent > 0) {		add_assoc_long(&span, "p", parent);	}	zend_hash_index_update(Z_ARRVAL_P(TWG(spans)), idx, &span);	return idx;}
开发者ID:ChrisWesterfield,项目名称:MJR.ONE-CP,代码行数:36,


示例28: process_nested_data

static zend_always_inline int process_nested_data(UNSERIALIZE_PARAMETER, HashTable *ht, zend_long elements, int objprops){	while (elements-- > 0) {		zval key, *data, d, *old_data;		zend_ulong idx;		ZVAL_UNDEF(&key);		if (!php_var_unserialize_ex(&key, p, max, NULL, classes)) {			zval_dtor(&key);			return 0;		}		data = NULL;		ZVAL_UNDEF(&d);		if (!objprops) {			if (Z_TYPE(key) == IS_LONG) {				idx = Z_LVAL(key);numeric_key:				if (UNEXPECTED((old_data = zend_hash_index_find(ht, idx)) != NULL)) {					//??? update hash					var_push_dtor(var_hash, old_data);					data = zend_hash_index_update(ht, idx, &d);				} else {					data = zend_hash_index_add_new(ht, idx, &d);				}			} else if (Z_TYPE(key) == IS_STRING) {				if (UNEXPECTED(ZEND_HANDLE_NUMERIC(Z_STR(key), idx))) {					goto numeric_key;				}				if (UNEXPECTED((old_data = zend_hash_find(ht, Z_STR(key))) != NULL)) {					//??? update hash					var_push_dtor(var_hash, old_data);					data = zend_hash_update(ht, Z_STR(key), &d);				} else {					data = zend_hash_add_new(ht, Z_STR(key), &d);				}			} else {				zval_dtor(&key);				return 0;			}		} else {			if (EXPECTED(Z_TYPE(key) == IS_STRING)) {string_key:				if ((old_data = zend_hash_find(ht, Z_STR(key))) != NULL) {					if (Z_TYPE_P(old_data) == IS_INDIRECT) {						old_data = Z_INDIRECT_P(old_data);					}					var_push_dtor(var_hash, old_data);					data = zend_hash_update_ind(ht, Z_STR(key), &d);				} else {					data = zend_hash_add_new(ht, Z_STR(key), &d);				}			} else if (Z_TYPE(key) == IS_LONG) {				/* object properties should include no integers */				convert_to_string(&key);				goto string_key;			} else {				zval_dtor(&key);				return 0;			}		}		if (!php_var_unserialize_ex(data, p, max, var_hash, classes)) {			zval_dtor(&key);			return 0;		}		if (UNEXPECTED(Z_ISUNDEF_P(data))) {			if (Z_TYPE(key) == IS_LONG) {				zend_hash_index_del(ht, Z_LVAL(key));			} else {				zend_hash_del_ind(ht, Z_STR(key));			}		} else {			var_push_dtor(var_hash, data);		}		zval_dtor(&key);		if (elements && *(*p-1) != ';' && *(*p-1) != '}') {			(*p)--;			return 0;		}	}	return 1;}
开发者ID:Freeaqingme,项目名称:php-src,代码行数:89,


示例29: _zend_hash_quick_add_or_update

ZEND_API int _zend_hash_quick_add_or_update(HashTable *ht, const char *arKey, uint nKeyLength, ulong h, void *pData, uint nDataSize, void **pDest, int flag ZEND_FILE_LINE_DC){    uint nIndex;    Bucket *p;#ifdef ZEND_SIGNALS    TSRMLS_FETCH();#endif    IS_CONSISTENT(ht);    if (nKeyLength == 0) {        return zend_hash_index_update(ht, h, pData, nDataSize, pDest);    }    CHECK_INIT(ht);    nIndex = h & ht->nTableMask;    p = ht->arBuckets[nIndex];    while (p != NULL) {        if (p->arKey == arKey ||                ((p->h == h) && (p->nKeyLength == nKeyLength) && !memcmp(p->arKey, arKey, nKeyLength))) {            if (flag & HASH_ADD) {                return FAILURE;            }            HANDLE_BLOCK_INTERRUPTIONS();#if ZEND_DEBUG            if (p->pData == pData) {                ZEND_PUTS("Fatal error in zend_hash_update: p->pData == pData/n");                HANDLE_UNBLOCK_INTERRUPTIONS();                return FAILURE;            }#endif            if (ht->pDestructor) {                ht->pDestructor(p->pData);            }            UPDATE_DATA(ht, p, pData, nDataSize);            if (pDest) {                *pDest = p->pData;            }            HANDLE_UNBLOCK_INTERRUPTIONS();            return SUCCESS;        }        p = p->pNext;    }    if (IS_INTERNED(arKey)) {        p = (Bucket *) pemalloc(sizeof(Bucket), ht->persistent);        if (!p) {            return FAILURE;        }        p->arKey = arKey;    } else {        p = (Bucket *) pemalloc(sizeof(Bucket) + nKeyLength, ht->persistent);        if (!p) {            return FAILURE;        }        p->arKey = (const char*)(p + 1);        memcpy((char*)p->arKey, arKey, nKeyLength);    }    p->nKeyLength = nKeyLength;    INIT_DATA(ht, p, pData, nDataSize);    p->h = h;    CONNECT_TO_BUCKET_DLLIST(p, ht->arBuckets[nIndex]);    if (pDest) {        *pDest = p->pData;    }    HANDLE_BLOCK_INTERRUPTIONS();    ht->arBuckets[nIndex] = p;    CONNECT_TO_GLOBAL_DLLIST(p, ht);    HANDLE_UNBLOCK_INTERRUPTIONS();    ht->nNumOfElements++;    ZEND_HASH_IF_FULL_DO_RESIZE(ht);		/* If the Hash table is full, resize it */    return SUCCESS;}
开发者ID:rogerhu,项目名称:dd-wrt,代码行数:79,



注:本文中的zend_hash_index_update函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ zend_hash_init函数代码示例
C++ zend_hash_get_current_key_ex函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。