⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hwapi.cpp

📁 php-4.4.7学习linux时下载的源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	if(0 == (count = zend_hash_num_elements(lht))) {		return NULL;	}	in = new HW_API_hwStat_In();	zend_hash_internal_pointer_reset(lht);	for(i=0; i<count; i++) {		ulong ind;		char *key;		zval **keydata;		zend_hash_get_current_data(lht, (void **) &keydata);		zend_hash_get_current_key(lht, &key, &ind, 0);		switch((*keydata)->type) {			case IS_ARRAY: {				HW_API_StringArray *sarr;				if(!strcmp(key, "attributeSelector")) {					sarr = make_HW_API_StringArray((*keydata)->value.ht);					in->setAttributeSelector(*sarr);					/* FIXME: sarr can be propperly be freed now */				}				break;			}		}		zend_hash_move_forward(lht);	}	return(in);}static HW_API_dcStat_In *make_HW_API_dcStat_In(zval *arg1) {	int count, i;	HashTable *lht;	HW_API_dcStat_In *in;	lht = arg1->value.ht;	if(0 == (count = zend_hash_num_elements(lht))) {		return NULL;	}	in = new HW_API_dcStat_In();	zend_hash_internal_pointer_reset(lht);	for(i=0; i<count; i++) {		ulong ind;		char *key;		zval **keydata;		zend_hash_get_current_data(lht, (void **) &keydata);		zend_hash_get_current_key(lht, &key, &ind, 0);		switch((*keydata)->type) {			case IS_ARRAY: {				HW_API_StringArray *sarr;				if(!strcmp(key, "attributeSelector")) {					sarr = make_HW_API_StringArray((*keydata)->value.ht);					in->setAttributeSelector(*sarr);					/* FIXME: sarr can be propperly be freed now */				}				break;			}		}		zend_hash_move_forward(lht);	}	return(in);}static HW_API_dbStat_In *make_HW_API_dbStat_In(zval *arg1) {	int count, i;	HashTable *lht;	HW_API_dbStat_In *in;	lht = arg1->value.ht;	if(0 == (count = zend_hash_num_elements(lht))) {		return NULL;	}	in = new HW_API_dbStat_In();	zend_hash_internal_pointer_reset(lht);	for(i=0; i<count; i++) {		ulong ind;		char *key;		zval **keydata;		zend_hash_get_current_data(lht, (void **) &keydata);		zend_hash_get_current_key(lht, &key, &ind, 0);		switch((*keydata)->type) {			case IS_ARRAY: {				HW_API_StringArray *sarr;				if(!strcmp(key, "attributeSelector")) {					sarr = make_HW_API_StringArray((*keydata)->value.ht);					in->setAttributeSelector(*sarr);					/* FIXME: sarr can be propperly be freed now */				}				break;			}		}		zend_hash_move_forward(lht);	}	return(in);}static HW_API_ftStat_In *make_HW_API_ftStat_In(zval *arg1) {	int count, i;	HashTable *lht;	HW_API_ftStat_In *in;	lht = arg1->value.ht;	if(0 == (count = zend_hash_num_elements(lht))) {		return NULL;	}	in = new HW_API_ftStat_In();	zend_hash_internal_pointer_reset(lht);	for(i=0; i<count; i++) {		ulong ind;		char *key;		zval **keydata;		zend_hash_get_current_data(lht, (void **) &keydata);		zend_hash_get_current_key(lht, &key, &ind, 0);		switch((*keydata)->type) {			case IS_ARRAY: {				HW_API_StringArray *sarr;				if(!strcmp(key, "attributeSelector")) {					sarr = make_HW_API_StringArray((*keydata)->value.ht);					in->setAttributeSelector(*sarr);					/* FIXME: sarr can be propperly be freed now */				}				break;			}		}		zend_hash_move_forward(lht);	}	return(in);}static HW_API_info_In *make_HW_API_info_In(zval *arg1) {	int count, i;	HashTable *lht;	HW_API_info_In *in;	lht = arg1->value.ht;	if(0 == (count = zend_hash_num_elements(lht))) {		return NULL;	}	in = new HW_API_info_In();	zend_hash_internal_pointer_reset(lht);	for(i=0; i<count; i++) {		ulong ind;		char *key;		zval **keydata;		zend_hash_get_current_data(lht, (void **) &keydata);		zend_hash_get_current_key(lht, &key, &ind, 0);		switch((*keydata)->type) {			case IS_ARRAY: {				HW_API_StringArray *sarr;				if(!strcmp(key, "attributeSelector")) {					sarr = make_HW_API_StringArray((*keydata)->value.ht);					in->setAttributeSelector(*sarr);					/* FIXME: sarr can be propperly be freed now */				}				break;			}		}		zend_hash_move_forward(lht);	}	return(in);}PHP_INI_BEGIN()//	STD_PHP_INI_ENTRY("hwapi.allow_persistent", "0", PHP_INI_SYSTEM, OnUpdateInt, allow_persistent, zend_hwapi_globals, hwapi_globals)PHP_INI_END()PHP_MINIT_FUNCTION(hwapi) {	ZEND_INIT_MODULE_GLOBALS(hwapi, php_hwapi_init_globals, NULL);	le_hwapip = zend_register_list_destructors_ex(php_free_hwapi, NULL, "hw_api", module_number);	le_hwapi_attributep = zend_register_list_destructors_ex(php_free_hwapi_attribute, NULL, "hw_api_attribute", module_number);	le_hwapi_objectp = zend_register_list_destructors_ex(php_free_hwapi_object, NULL, "hw_api_object", module_number);	le_hwapi_errorp = zend_register_list_destructors_ex(php_free_hwapi_error, NULL, "hw_api_error", module_number);	le_hwapi_contentp = zend_register_list_destructors_ex(php_free_hwapi_content, NULL, "hw_api_content", module_number);	le_hwapi_reasonp = zend_register_list_destructors_ex(php_free_hwapi_reason, NULL, "hw_api_reason", module_number);	hw_api_class_startup();	hw_api_object_class_startup();	hw_api_attribute_class_startup();	hw_api_error_class_startup();	hw_api_content_class_startup();	hw_api_reason_class_startup();	REGISTER_LONG_CONSTANT("HW_API_REMOVE_NORMAL", HW_API_remove_In::NORMAL, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("HW_API_REMOVE_PHYSICAL", HW_API_remove_In::PHYSICAL, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("HW_API_REMOVE_REMOVELINKS", HW_API_remove_In::REMOVELINKS, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("HW_API_REMOVE_NONRECURSIVE", HW_API_remove_In::NONRECURSIVE, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("HW_API_REPLACE_NORMAL", HW_API_replace_In::NORMAL, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("HW_API_REPLACE_FORCE_VERSION_CONTROL", HW_API_replace_In::FORCE_VERSION_CONTROL, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("HW_API_REPLACE_AUTOMATIC_CHECKOUT", HW_API_replace_In::AUTOMATIC_CHECKOUT, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("HW_API_REPLACE_AUTOMATIC_CHECKIN", HW_API_replace_In::AUTOMATIC_CHECKIN, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("HW_API_REPLACE_PLAIN", HW_API_replace_In::PLAIN, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("HW_API_REPLACE_REVERT_IF_NOT_CHANGED", HW_API_replace_In::REVERT_IF_NOT_CHANGED, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("HW_API_REPLACE_KEEP_TIME_MODIFIED", HW_API_replace_In::KEEP_TIME_MODIFIED, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("HW_API_INSERT_NORMAL", HW_API_insert_In::NORMAL, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("HW_API_INSERT_FORCE_VERSION_CONTROL", HW_API_insert_In::FORCE_VERSION_CONTROL, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("HW_API_INSERT_AUTOMATIC_CHECKOUT", HW_API_insert_In::AUTOMATIC_CHECKOUT, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("HW_API_INSERT_PLAIN", HW_API_insert_In::PLAIN, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("HW_API_INSERT_KEEP_TIME_MODIFIED", HW_API_insert_In::KEEP_TIME_MODIFIED, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("HW_API_INSERT_DELAY_INDEXING", HW_API_insert_In::DELAY_INDEXING, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("HW_API_LOCK_NORMAL", HW_API_lock_In::NORMAL, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("HW_API_LOCK_RECURSIVE", HW_API_lock_In::RECURSIVE, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("HW_API_LOCK_SESSION", HW_API_lock_In::SESSION, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("HW_API_CONTENT_ALLLINKS", HW_API_content_In::ALLLINKS, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("HW_API_CONTENT_REACHABLELINKS", HW_API_content_In::REACHABLELINKS, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("HW_API_CONTENT_PLAIN", HW_API_content_In::PLAIN, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("HW_API_REASON_ERROR", HW_API_Reason::HW_API_ERROR, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("HW_API_REASON_WARNING", HW_API_Reason::HW_API_WARNING, CONST_CS | CONST_PERSISTENT);	REGISTER_LONG_CONSTANT("HW_API_REASON_MESSAGE", HW_API_Reason::HW_API_MESSAGE, CONST_CS | CONST_PERSISTENT);	/* Make sure there are at least default values, though the MessageFilePath	 * is bogus. If it isn't set at all the web server dies.	 */	HW_API_init_In initargs;	initargs.setArgv0("PHP HWAPI");	initargs.setMessageFilePath("");	HW_API::init(initargs);	return SUCCESS;}PHP_MSHUTDOWN_FUNCTION(hwapi) {	return SUCCESS;}PHP_RINIT_FUNCTION(hwapi) {	return SUCCESS;}PHP_MINFO_FUNCTION(hwapi) {	php_info_print_table_start();	php_info_print_table_row(2, "Hyperwave API Support", "enabled");	php_info_print_table_end();}/* {{{ proto string hwapi_dummy(int link, int id, int msgid)   Hyperwave dummy function */PHP_FUNCTION(hwapi_dummy) {	pval **arg1, **arg2, **arg3;	int link, id, type, msgid;	RETURN_TRUE;}/* }}} *//* {{{ proto void hwapi_init(string hostname, int port)   Hyperwave initialisation */PHP_FUNCTION(hwapi_init) {	zval **argv[2], *id;	HW_API_init_In initargs;	HW_API_init_Out out;	int ret;	HW_API_HGCSP *db;	zval *rv;	int argc = ZEND_NUM_ARGS();	if (((argc < 1) || (argc > 2)) || zend_get_parameters_array_ex(argc, argv) == FAILURE) {		WRONG_PARAM_COUNT;	}	id = getThis();	convert_to_string_ex(argv[0]);	initargs.setArgv0("PHP HWAPI");	initargs.setMessageFilePath(Z_STRVAL_PP(argv[0]));	if(argc == 2) {		convert_to_string_ex(argv[1]);		initargs.setWhatString(Z_STRVAL_PP(argv[1])) ;	}	if(id) {		db = (HW_API_HGCSP *) php_hwapi_get_object(id, le_hwapip);		if(!db) {			RETURN_FALSE;		}		out = db->init(initargs);	} else {		out = HW_API::init(initargs);	}	if (out.error().error()) {		HW_API_Error *err = new HW_API_Error(out.error());		rv = php_hwapi_object_new((HW_API_Error *) err, le_hwapi_errorp);		SEPARATE_ZVAL(&rv);		*return_value = *rv;		FREE_ZVAL(rv);		return;	}	RETURN_TRUE;}/* }}} *//* {{{ proto string hwapi_hgcsp(string hostname, int port)   Hyperwave dummy function */PHP_FUNCTION(hwapi_hgcsp) {	zval **argv[2];	HW_API_HGCSP *db;	zval *rv;	int argc = ZEND_NUM_ARGS();	if (((argc < 1) || (argc > 2)) || zend_get_parameters_array_ex(argc, argv) == FAILURE) {		WRONG_PARAM_COUNT;	}	convert_to_string_ex(argv[0]);	if(argc == 2) {		convert_to_long_ex(argv[1]);		db = new HW_API_HGCSP(Z_STRVAL_PP(argv[0]), Z_LVAL_PP(argv[1]));	} else {		db = new HW_API_HGCSP(Z_STRVAL_PP(argv[0]));	}	rv = php_hwapi_object_new((HW_API_HGCSP *) db, le_hwapip);	SEPARATE_ZVAL(&rv);	*return_value = *rv;	FREE_ZVAL(rv);//	ret = zend_list_insert(db, le_hwapip);	/* construct an object with some methods *///	object_init_ex(return_value, hw_api_class_entry_ptr);//	add_property_resource(return_value, "this", ret);}/* }}} *//* {{{ proto object hwapi_object(array object_in)   Hyperwave dummy function */PHP_FUNCTION(hwapi_object) {	pval **arg1, *rv, *id;	HW_API_Object *newobj;	HW_API_object_In *in;	HW_API_object_Out out;	HW_API_HGCSP *db;	if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg1) == FAILURE) {		WRONG_PARAM_COUNT;	}	convert_to_array_ex(arg1);	id = getThis();	db = (HW_API_HGCSP *) php_hwapi_get_object(id, le_hwapip);	if(!db) {		RETURN_FALSE;	}	in = make_HW_API_object_In(*arg1);	out = db->object(*in);	delete in;	if (out.error().error()) {		HW_API_Error *err = new HW_API_Error(out.error());		rv = php_hwapi_object_new((HW_API_Error *) err, le_hwapi_errorp);		SEPARATE_ZVAL(&rv);		*return_value = *rv;		FREE_ZVAL(rv);		return;	}	//Frage: Diese Zeile erzeugt erst mit dem Konstruktor von HW_API_Object	//eine Kopie und danach durch das assign. Wie kann man das verhindern.	newobj = new HW_API_Object();	*newobj = out.object();//	newobj = new HW_API_Object(out.object());	rv = php_hwapi_object_new(newobj, le_hwapi_objectp);	SEPARATE_ZVAL(&rv);	*return_value = *rv;	FREE_ZVAL(rv);}/* }}} *//* {{{ proto string hwapi_mychildren(array parameters)   Hyperwave dummy function */PHP_FUNCTION(hwapi_mychildren) {	zval **arg1, *id, *rv;	HW_API_ObjectArray objarr;	HW_API_children_In *in;	HW_API_children_Out out;	HW_API_HGCSP *db;	int i;	if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg1) == FAILURE) {		WRONG_PARAM_COUNT;	}	convert_to_string_ex(arg1);	id = getThis();	db = (HW_API_HGCSP *) php_hwapi_get_object(id, le_hwapip);	if(!db) {		RETURN_FALSE;	}	in = new HW_API_children_In();	in->setObjectIdentifier(Z_STRVAL_PP(arg1));	out = db->children(*in);	delete in;	if (out.error().error()) {		HW_API_Error *err = new HW_API_Error(out.error());		rv = php_hwapi_object_new((HW_API_Error *) err, le_hwapi_errorp);		SEPARATE_ZVAL(&rv);		*return_value = *rv;		FREE_ZVAL(rv);		return;	} else {		objarr = (HW_API_ObjectArray) out.objects();	}	if (array_init(return_value) == FAILURE) {		RETURN_FALSE;	}	for(i=0; i<objarr.count(); i++) {		zval *child;		HW_API_Object obj, *objp;		objarr.object(i, obj);		objp = new HW_API_Object(obj);		child = php_hwapi_object_new(objp, le_hwapi_objectp);		add_next_index_zval(return_value, child);	}	return;	for(i=0; i<objarr.count(); i++) {		HW_API_Object obj;		HW_API_Attribute attr;		objarr.object(i, obj);		obj.attribute("GOid", attr);		add_next_index_string(return_value, (char *) attr.value().string(), 1);	}}/* }}} *//* {{{ proto string hwapi_children(array parameters)   Hyperwave dummy function */PHP_FUNCTION(hwapi_children) {	zval **arg1, *id, *rv;	HW_API_ObjectArray objarr;	HW_API_children_In *in;	HW_API_children_Out out;	HW_API_HGCSP *db;	int i;	if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg1) == FAILURE) {		WRONG_PARAM_COUNT;	}	convert_to_array_ex(arg1);	id = getThis();	db = (HW_API_HGCSP *) php_hwapi_get_object(id, le_hwapip);	if(!db) {		RETURN_FALSE;	}	in = make_HW_API_children_In(*arg1);	out = db->children(*in);	delete in;	if (out.error().error()) {		HW_API_Error *err = new HW_API_Error(out.error());		rv = php_hwapi_object_new((HW_API_Error *) err, le_hwapi_errorp);		SEPARATE_ZVAL(&rv);		*return_value = *rv;		FREE_ZVAL(rv);		return;	} else {		objarr = (HW_API_ObjectArray) out.objects();	}	objectArray2ind

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -