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

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

51自学网 2021-06-01 20:16:55
  C++
这篇教程C++ D2I函数代码示例写得很实用,希望能帮到您。

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

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

示例1: get_keymap_dir

/* * GH * Called from cmd4.c and a few other places. Just extracts * a direction from the keymap for ch (the last direction, * in fact) byte or char here? I'm thinking that keymaps should * generally only apply to single keys, which makes it no more * than 128, so a char should suffice... but keymap_act is 256... */int get_keymap_dir(char ch){	cptr act, s;	int d = 0;	if (isdigit(ch))	{		d = D2I(ch);	}	else	{		if (rogue_like_commands)		{			act = keymap_act[KEYMAP_MODE_ROGUE][(byte)ch];		}		else		{			act = keymap_act[KEYMAP_MODE_ORIG][(byte)ch];		}		if (act)		{			/* Convert to a direction */			for (s = act; *s; ++s)			{				/* Use any digits in keymap */				if (isdigit(*s)) d = D2I(*s);			}		}	}	return d;}
开发者ID:jcheatham,项目名称:Zangband,代码行数:40,


示例2: target_dir

/* * Extract a direction (or zero) from a character */int target_dir(struct keypress ch){	int d = 0;	/* Already a direction? */	if (isdigit((unsigned char) ch.code)) {		d = D2I(ch.code);	} else if (isarrow(ch.code)) {		switch (ch.code) {		case ARROW_DOWN:			d = 2;			break;		case ARROW_LEFT:			d = 4;			break;		case ARROW_RIGHT:			d = 6;			break;		case ARROW_UP:			d = 8;			break;		}	} else {		int mode;		const struct keypress *act;		if (OPT(rogue_like_commands))			mode = KEYMAP_MODE_ROGUE;		else			mode = KEYMAP_MODE_ORIG;		/* XXX see if this key has a digit in the keymap we can use */		act = keymap_find(mode, ch);		if (act) {			const struct keypress *cur;			for (cur = act; cur->type == EVT_KBRD; cur++) {				if (isdigit((unsigned char) cur->code))					d = D2I(cur->code);			}		}	}	/* Paranoia */	if (d == 5)		d = 0;	/* Return direction */	return (d);}
开发者ID:NickMcConnell,项目名称:FAangband,代码行数:53,


示例3: F820121

int F820121(TRUSERID *handle,int iRequest,ST_PACK *in_pack,int *pRetCode,char *szMsg){	T_t_pif_phydevice aphydev;	double dUniqNo=0;	int ret=0;		memset(&aphydev,0,sizeof(aphydev));		//从cpack中取得相应字符串	Strncpy_t(aphydev.dname,in_pack->sphone,sizeof(aphydev.dname));	Strncpy_t(aphydev.dtype,in_pack->spager,sizeof(aphydev.dtype));	Strncpy_t(aphydev.factory,in_pack->scert_no,sizeof(aphydev.factory));	Strncpy_t(aphydev.comments,(char*)in_pack->usset1,sizeof(aphydev.comments));	//设备标志从系统键值表中取得	ret=getNewUniqNo(KEYTYPE_PHYDEVICE,&dUniqNo);	if(ret)	{		*pRetCode=E_DB_SYSKEY_R;		goto L_RETU;	}	aphydev.phytype =D2I(dUniqNo);	ret=DB_t_pif_phydevice_add(&aphydev); 	if(ret)	{		*pRetCode=E_DB_PHYDEVICE_I;		goto L_RETU;			}	return 0;	L_RETU:		return -1;}
开发者ID:nykma,项目名称:ykt4sungard,代码行数:31,


示例4: D2I

void CDialogParamRegion::SetKeBe(DATA_IN::EnergyType energyType){	m_KE_BE = energyType;		m_ComboAnodeControl.EnableWindow(m_KE_BE == DATA_IN::EnergyType::BE);	m_AnodeTxtControl.EnableWindow(m_KE_BE == DATA_IN::EnergyType::BE);	int NewValue = D2I( ((int) 10* CRegion::h_nu_Info.Value_h_nu[m_Anode])/10.) - D2I(m_KE_Start);	m_KE_Start = I2D(NewValue);	NewValue = D2I( ((int) 10* CRegion::h_nu_Info.Value_h_nu[m_Anode])/10.) - D2I(m_KE_End);	m_KE_End = I2D(NewValue);		std::swap(m_KE_Start, m_KE_End);	UpdateData(FALSE);}
开发者ID:Alexepus,项目名称:Kratos,代码行数:17,


示例5: record_small_serial

static int record_small_serial(ST_PACK *in_pack,T_t_tif_tradeserial *tradeserial,ST_PACK *out_pack){	int ret =0;	double dUniqno = 0;	 T_t_tif_tradeserial  tPacketSerial;	//保存充值流水	memset(&tPacketSerial, 0, sizeof tPacketSerial);	memcpy(&tPacketSerial, tradeserial, sizeof tPacketSerial);	ret = getNewUniqNo(KEYTYPE_TRADESERIAL,&dUniqno);  						//获得最大流水号	if(ret)	{		writelog(LOG_ERR,"ret [%d]",ret);		return ret;	}	tPacketSerial.serial_no = D2I(dUniqno);	tPacketSerial.serial_state = SERISTAT_NONEEDDEBT;	tPacketSerial.serial_type = TXCODE_SAVING_SMALL_PACKET;	tPacketSerial.purse_id = 33;//33扇区钱包	tPacketSerial.in_balance = in_pack->damt2;	tPacketSerial.trade_fee = in_pack->damt1;	tPacketSerial.out_balance = tPacketSerial.in_balance + tPacketSerial.trade_fee;	ret = DB_t_tif_tradeserial_add(&tPacketSerial);	if (ret)	{		writelog(LOG_ERR,"ret[%d]",ret);		if(DB_REPEAT==ret)			ret = E_DB_TRADESERIAL_E;		else			ret = E_DB_TRADESERIAL_I;		return ret;	}	out_pack->damt2=tPacketSerial.out_balance;	out_pack->lvol1= D2I(dUniqno);			//流水号	return 0;	}	
开发者ID:nykma,项目名称:ykt4sungard,代码行数:40,


示例6: textui_get_count

/** * Get a command count, with the '0' key. */static int textui_get_count(void){	int count = 0;	while (1)	{		ui_event_data ke;		prt(format("Count: %d", count), 0, 0);		ke = inkey_ex();		if (ke.type != EVT_KBRD)			continue;		if (ke.key == ESCAPE)			return -1;		/* Simple editing (delete or backspace) */		else if (ke.key == 0x7F || ke.key == KTRL('H'))			count = count / 10;		/* Actual numeric data */		else if (isdigit((unsigned char) ke.key))		{			count = count * 10 + D2I(ke.key);			if (count >= 9999)			{				bell("Invalid repeat count!");				count = 9999;			}		}		/* Anything non-numeric passes straight to command input */		else		{			/* XXX nasty hardcoding of action menu key */			if (ke.key != '/n' && ke.key != '/r')				Term_event_push(&ke);			break;		}	}	return count;}
开发者ID:NickMcConnell,项目名称:RePosBand,代码行数:49,


示例7: textui_get_count

/** * Get a command count, with the '0' key. */static int textui_get_count(void){	int count = 0;	while (1)	{		struct keypress ke;		prt(format("Repeat: %d", count), 0, 0);		ke = inkey();		if (ke.code == ESCAPE)			return -1;		/* Simple editing (delete or backspace) */		else if (ke.code == KC_DELETE || ke.code == KC_BACKSPACE)			count = count / 10;		/* Actual numeric data */		else if (isdigit((unsigned char) ke.code))		{			count = count * 10 + D2I(ke.code);			if (count >= 9999)			{				bell("Invalid repeat count!");				count = 9999;			}		}		/* Anything non-numeric passes straight to command input */		else		{			/* XXX nasty hardcoding of action menu key */			if (ke.code != KC_ENTER)				Term_keypress(ke.code, ke.mods);			break;		}	}	return count;}
开发者ID:KertaLosataure,项目名称:angband,代码行数:46,


示例8: record_serial

 int record_serial(ST_PACK *in_pack,T_t_tif_tradeserial *tradeserial,ST_PACK *out_pack){	int ret =0;	double dUniqno = 0;	char sMsg[256]="";	//	准备数据插入交易流水表	ret = getNewUniqNo(KEYTYPE_TRADESERIAL,&dUniqno);  					//获得最大流水号	if(ret)	{		writelog(LOG_ERR,"getNewUniqNo error,errcode=[%d]",ret);		return ret;	}							tradeserial->serial_no = D2I(dUniqno);			//流水号	out_pack->damt1=tradeserial->trade_fee;		//充值金额	out_pack->damt0=tradeserial->out_balance;	//出卡值	out_pack->lvol0=tradeserial->serial_no;//流水号		sprintf(sMsg,"交易前卡余额:%.2lf元 卡当前余额:%.2lf元",tradeserial->in_balance,tradeserial->out_balance);	strcat(out_pack->vsmess,sMsg);	writelog(LOG_DEBUG,out_pack->vsmess);	ret = DB_t_tif_tradeserial_add(tradeserial);	if (ret)	{		writelog(LOG_ERR,"ret[%d]",ret);		if(DB_REPEAT==ret)			ret = E_DB_TRADESERIAL_E;		else			ret = E_DB_TRADESERIAL_I;		return ret;	}	ret=db_commit();	if(ret)	{		writelog(LOG_ERR,"db_commit error,errcode=[%d]",ret);		return E_DB_COMMIT;	}	return 0;	}	
开发者ID:nykma,项目名称:ykt4sungard,代码行数:41,


示例9: packege_send_data

static int packege_send_data(ST_PACK *in_pack,int flag,char *send_data){	int ret =0;	//char cellphone[31]="";	//充值手机号	double money=0;			//充值金额	char sysdate[11]="";	char systime[9]="";	char sysdatetime[20]="";	char serialno[20]="";	char sMoney[20]="";	T_t_pif_card	tCard;//	ext_phone_trans_t phone_trans_struct;	ext_phone_trans_t* phone_trans_struct;	phone_trans_struct=(ext_phone_trans_t*)send_data;		memset(&tCard,0,sizeof(tCard));	memset(phone_trans_struct,0,sizeof(ext_phone_trans_t));		phone_trans_struct->prix[0]=0x31;	memcpy(phone_trans_struct->length,"0067",4);	if(1==flag)	{		memcpy(phone_trans_struct->type,"0100",4);	}	else if(2==flag)	{		memcpy(phone_trans_struct->type,"0200",4);			}	//memcpy(phone_trans_struct->bitery,"0000000000000000",16);	memset(phone_trans_struct->bitery,'0',sizeof(phone_trans_struct->bitery));	ret=DB_t_pif_card_read_by_card_id(in_pack->lvol0, &tCard);	if(ret)	{		if(DB_NOTFOUND==ret)			ret=E_CARDNO_NOT_EXIST;		else			ret=E_DB_CARD_R;		return ret;	}	sprintf(phone_trans_struct->cutid,"%-22d",tCard.cosumer_id);		money = in_pack->damt1;	int i_money=D2I(D4U5(money*100,0));	sprintf(sMoney,"%07d",i_money);	memcpy(phone_trans_struct->money,sMoney,sizeof(phone_trans_struct->money));	ret=get_datetime_from_db(sysdate,systime);	if(ret)	{		writelog(LOG_ERR,"get_datetime_from_db error,error code=[%d]",ret);		getsysdate(sysdate);		getsystime(systime);	}	strcpy(sysdatetime,sysdate+4);	strcat(sysdatetime,systime);	memcpy(phone_trans_struct->datetime,sysdatetime,10);	memcpy(phone_trans_struct->tracenum,sysdate,8);	sprintf(serialno,"%06d",in_pack->lvol6%1000000);	memcpy(phone_trans_struct->tracenum+8,serialno,6);	memcpy(phone_trans_struct->phone,in_pack->sphone,strlen(in_pack->sphone));	memcpy(phone_trans_struct->retnum,"00",2);	memset(phone_trans_struct->plugdata,0x20,sizeof(phone_trans_struct->plugdata));	/*	memcpy(send_data,phone_trans_struct->prix,1);	memcpy(send_data+1,phone_trans_struct->length,4);	memcpy(send_data+5,phone_trans_struct->type,4);	memcpy(send_data+9,phone_trans_struct->bitery,16);	memcpy(send_data+25,phone_trans_struct->cutid,22);	memcpy(send_data+47,phone_trans_struct->money,7);	memcpy(send_data+54,phone_trans_struct->datetime,10);	memcpy(send_data+64,phone_trans_struct->tracenum,14);	memcpy(send_data+78,phone_trans_struct->phone,11);	memcpy(send_data+89,phone_trans_struct->retnum,2);	memcpy(send_data+91,phone_trans_struct->plugdata,36);	*/	writelog(LOG_ERR,"package send data=[%s]",send_data);	return 0;	}
开发者ID:nykma,项目名称:ykt4sungard,代码行数:77,


示例10: target_dir

/* * Extract a direction (or zero) from a character */int target_dir(char ch){    int d = 0;    int mode;    cptr act;    cptr s;    /* Already a direction? */    if (isdigit((unsigned char) ch)) {	d = D2I(ch);    } else if (isarrow(ch)) {	switch (ch) {	case ARROW_DOWN:	    d = 2;	    break;	case ARROW_LEFT:	    d = 4;	    break;	case ARROW_RIGHT:	    d = 6;	    break;	case ARROW_UP:	    d = 8;	    break;	}    } else {	/* Roguelike */	if (OPT(rogue_like_commands)) {	    mode = KEYMAP_MODE_ROGUE;	}	/* Original */	else {	    mode = KEYMAP_MODE_ORIG;	}	/* Extract the action (if any) */	act = keymap_act[mode][(byte) (ch)];	/* Analyze */	if (act) {	    /* Convert to a direction */	    for (s = act; *s; ++s) {		/* Use any digits in keymap */		if (isdigit((unsigned char) *s))		    d = D2I(*s);	    }	}    }    /* Paranoia */    if (d == 5)	d = 0;    /* Return direction */    return (d);}
开发者ID:artes-liberales,项目名称:FAangband,代码行数:64,


示例11: packege_elec_request

static int packege_elec_request(ST_PACK *in_pack,int flag,char *send_data){	int ret;	ext_elect_req_t* elect_req_t;	elect_req_t=(ext_elect_req_t*)send_data;	double money=0;			//充值金额	char serialno[10]="";	char sysdate[11]="";	char systime[9]="";	char sysdatetime[20]="";	unsigned char buf[106]="";	unsigned char soutmd5[16]="";	char outmd5[32]="";	T_t_pif_card	tCard;	memset(&tCard,0,sizeof(tCard));	if(flag==1){//房间查询不加密		memcpy(elect_req_t->prix,"0",1);	}else{		memcpy(elect_req_t->prix,"1",1);	}		memcpy(elect_req_t->length,"0141",4);			if(flag==1){		memcpy(elect_req_t->type,"0001",4);			}else if(flag==2){		memcpy(elect_req_t->type,"0002",4);	}	memset(elect_req_t->bitery,'0',sizeof(elect_req_t->bitery));	sprintf(elect_req_t->room,"%-20s",in_pack->saddr);	ret=DB_t_pif_card_read_by_card_id(in_pack->lvol0, &tCard);	if(ret)	{		if(DB_NOTFOUND==ret)			ret=E_CARDNO_NOT_EXIST;		else			ret=E_DB_CARD_R;		return ret;	}	sprintf(elect_req_t->cutid,"%-22d",tCard.cosumer_id);		money = in_pack->damt1;	int i_money=D2I(D4U5(money*100,0));	sprintf(elect_req_t->money,"%07d",i_money);	ret=get_datetime_from_db(sysdate,systime);	if(ret)	{		writelog(LOG_ERR,"get_datetime_from_db error,error code=[%d]",ret);		getsysdate(sysdate);		getsystime(systime);	}	strcpy(sysdatetime,sysdate+4);	strcat(sysdatetime,systime);	memcpy(elect_req_t->datetime,sysdatetime,10);	memcpy(elect_req_t->tracenum,sysdate,8);	sprintf(serialno,"%010d",in_pack->lvol6);	memcpy(elect_req_t->tracenum+8,serialno,10);	memcpy(elect_req_t->retnum,"0000",4);	memcpy(elect_req_t->clientid,"0001",4);	memset(outmd5,'0',32);	if(flag==1){		sprintf(elect_req_t->signcheck,"%s",outmd5);	}else if(flag==2){		memcpy(buf,elect_req_t->type,105);			writelog(LOG_ERR,"buf data=[%s]",buf);		CalcMD5(buf,105,soutmd5);		dec2hex(soutmd5,16,outmd5);		writelog(LOG_ERR,"outmd5 data=[%s]",outmd5);		sprintf(elect_req_t->signcheck,"%s",outmd5);	}				return 0;	}
开发者ID:nykma,项目名称:ykt4sungard,代码行数:75,


示例12: tend_to_enter_account

//.........这里部分代码省略.........		else		{			tCustomer.fee_type=tSpeFee.fee_type;		}		//更新客户表的收费类别字段		ret=DB_t_cif_customer_update_lock_by_cur(&tCustomer);		if(ret)		{			if(DB_NOTFOUND==ret)				ret= E_CUSTOMER_NOT_EXIST;			else				ret= E_DB_CUSTOMER_U;			return ret;		}	}	DB_t_cif_customer_free_lock_cur();	des2src(Operator,in_pack->scust_no);												//操作员号								//采集设备标识	//	准备数据插入交易流水表	ret = getNewUniqNo(KEYTYPE_TRADESERIAL,&dUniqno);  					//获得最大流水号	if(ret)	{		writelog(LOG_ERR,"getNewUniqNo error,errcode=[%d]",ret);		return ret;	}		strncpy(tradeserial->operate_date,sysdate,sizeof(sysdate)-1);				//发生日期	strncpy(tradeserial->operate_time,systime,sizeof(systime)-1);	des2src(tradeserial->collect_date,tradeserial->operate_date);								//采集日期	des2src(tradeserial->collect_time,tradeserial->operate_time);								//采集时间	des2src(tradeserial->enteract_date,logicdate);							//处理日期	des2src(tradeserial->enteract_time,tradeserial->operate_time);							//处理时间	tradeserial->serial_no = D2I(dUniqno);									//流水号	tradeserial->serial_type = trade_code;						//流水类型	tradeserial->purse_id = PURSE_NO_ONE;					//钱包号	tradeserial->serial_state = SERISTAT_NODEBT;								//流水状态	tradeserial->maindevice_id = maindevice_id;						//上传工作站标识	tradeserial->device_id = device_id;										//采集设备标识	tradeserial->card_id = card_id;										//交易卡号	tradeserial->customer_id=tCard.cosumer_id;								//客户号	des2src(tradeserial->oper_code,Operator);	tradeserial->trade_count=in_pack->lvol1+1;		//交易次数	tradeserial->in_balance=in_pack->damt0;			//入卡值	tradeserial->trade_fee=in_pack->damt1;				//交易金额	strncpy(tradeserial->reserve_2,in_pack->vsmess,sizeof(tradeserial->reserve_2)-1);	IA->iCardNo=tCard.card_id;	IA->iFeeType=tCustomer.fee_type;	IA->dArrInAmt[0]=tradeserial->trade_fee;	IA->iMainDevId=tradeserial->maindevice_id;				//工作站标识	IA->iDevId=tradeserial->device_id;						//设备ID	IA->iSerialNo=tradeserial->serial_no;					//流水号	IA->iTradeNo=tradeserial->serial_type;					//交易码	strcpy(IA->sTxDate,tradeserial->operate_date);			//交易日期	strcpy(IA->sTxTime,tradeserial->operate_time);			//交易时间	strcpy(IA->sTxCollectDate,tradeserial->collect_date);		//采集日期	strcpy(IA->sTxCollectTime,tradeserial->collect_time);		//采集时间	strcpy(IA->sTxAccDate,tradeserial->enteract_date);		//记账日期	strcpy(IA->sTxAccTime,tradeserial->enteract_time);		//记账时间	strcpy(IA->sMdeOper,tradeserial->oper_code);			//操作员	strcpy(IA->sChkOper,tradeserial->reserve_1);			//复核操作员	IA->iUseCardFlag=USE_CARD_TYPE_ONLINE;		//联机交易	IA->iTxCnt=tradeserial->trade_count;					//交易次数	IA->dInCardBala=tradeserial->in_balance;				//入卡值
开发者ID:nykma,项目名称:ykt4sungard,代码行数:67,


示例13: F847102

//.........这里部分代码省略.........		goto L_RETU;	}	DB_t_pif_card_free_lock_by_cur();	//	插入卡挂失有效期限表/*	ret=GetLostCardValiddate(sysdate,enddate);											//获得挂失有效期限	if (ret)	{		*pRetCode = ret;		goto L_RETU;	}	cardlossinfo.card_id = card_id;													//卡号	des2src(cardlossinfo.begin_date,sysdate);											//起始日期	des2src(cardlossinfo.end_date,enddate);											//截至日期	des2src(cardlossinfo.operate_date,sysdate);										//操作日期	des2src(cardlossinfo.operate_time,systime);										//操作时间	cardlossinfo.state_id=STATE_VALID;												//有效	ret = DB_t_pif_cardlossinfo_add(&cardlossinfo);	if (ret)	{		*pRetCode = E_DB_CARDLOSSINFO_I;		writelog(LOG_ERR,"errcode[%d] ",ret);		goto L_RETU;	}*/	//如果该卡号被冻结,则挂失时对黑名单不处理	if(STATE_FALSE==tCard.state_id[CARDSTAT_TYPE_FREEZE])	{		//	插入黑名单表		ret=DB_t_tif_black_sheet_del_by_card_id_and_is_ad(tCard.card_id,DELETE_BLACKLIST);		if(ret)		{			if(ret!=DB_NOTFOUND)			{				*pRetCode=ret;				goto L_RETU;			}		}		ret=InsertToBlkList(tCard.card_id,ADD_BLACKLIST);		if(ret)		{			*pRetCode=ret;			writelog(LOG_ERR,"InsertToBlkList err[%d]",ret);			goto L_RETU;		}		//广播黑名单		AddXmlItemInt(tMesList.incontent, XML_KEY_CARDID,card_id);		AddXmlItemInt(tMesList.incontent, XML_KEY_ADDDELSIGN,ADD_BLACKLIST);	//增删标志		tMesList.funid = 930005;		tMesList.pfunid = 930003;		tMesList.max_send_cnt = 10;		tMesList.level = MESLIST_PRIORITY_REALTIME;		tMesList.msgtype = MESLIST_TYPE_ORDER;		ret=AddMsgLst(&tMesList);		if(ret)		{			*pRetCode=ret;			writelog(LOG_ERR,"AddMsgLst err[%d]",ret);			goto L_RETU;		}	}	//	准备数据插入交易流水表	ret = getNewUniqNo(KEYTYPE_TRADESERIAL,&dUniqno);  					//获得最大流水号	if(ret)	{		*pRetCode = ret;		writelog(LOG_ERR,"ERRCODE = [%d]",ret);		goto L_RETU;	}	des2src(tradeserial.operate_date,sysdate);											//发生日期	des2src(tradeserial.operate_time,systime);											//发生时间	des2src(tradeserial.collect_date,sysdate);												//采集日期	des2src(tradeserial.collect_time,systime);												//采集时间	des2src(tradeserial.enteract_date,logicdate);											//处理日期	des2src(tradeserial.enteract_time,systime);											//处理时间	tradeserial.serial_no = D2I(dUniqno);										//流水号	tradeserial.serial_type = TXCODE_CARD_LOSS;								//挂失	tradeserial.serial_state = SERISTAT_NONEEDDEBT;							//流水状态	tradeserial.maindevice_id = maindevice_id;									//上传工作站标识	tradeserial.device_id = device_id;											//采集设备标识	tradeserial.card_id = card_id;											//交易卡号	tradeserial.customer_id=tCard.cosumer_id;									//客户号	des2src(tradeserial.oper_code,Operator);	ret = DB_t_tif_tradeserial_add(&tradeserial);	if (ret)	{		writelog(LOG_ERR,"ret[%d]",ret);		if(DB_REPEAT==ret)			*pRetCode = E_DB_TRADESERIAL_E;		else			*pRetCode = E_DB_TRADESERIAL_I;		goto L_RETU;	}	return 0;L_RETU:	return -1;}
开发者ID:nykma,项目名称:ykt4sungard,代码行数:101,


示例14: F950041

int F950041(TRUSERID *handle,int iRequest,ST_PACK *rPack,int *pRetCode,char *szMsg){	int ret;	T_t_pif_device tDevice;	T_t_cif_shop_pos tShopPos;	T_t_cif_shop tShop;	T_t_tif_meslist tMsg;	T_t_pif_feetype tFeeType;	int rate = 0;	int retries = 0;	int msgid;	unsigned char buf[32] = "";	char cardlist[100] = "";	int rows = 0;	int i,j;	memset(&tDevice,0,sizeof tDevice);	memset(&tFeeType,0,sizeof tFeeType);		ST_CPACK aPack;	ST_PACK *out_pack = &(aPack.pack);	memset(&aPack,0,sizeof aPack);	ResetNormalCPack(&aPack,0,1);	SetCol(handle,0);	SetCol(handle,F_VSVARSTR0,F_VSMESS,0);		if(rPack->lcert_code < 1)	{		*pRetCode = E_DEVICE_NOT_EXIST;	}	else if((ret = DB_t_pif_device_read_by_device_id(rPack->lcert_code,&tDevice)))	{		if(DB_NOTFOUND == ret)			*pRetCode = E_DB_DEVICE_N;		else			*pRetCode = E_DB_DEVICE_R;	}	else if(tDevice.state_id == DEVISTAT_LOGOUT)	{		*pRetCode = E_DEVICE_NOT_EXIST;	}	// 如果是 39 的充值机	else if(strcmp(tDevice.devtype,"0201") == 0 && tDevice.phytype == 1000)	{		des2src(rPack->sdate0,tDevice.devphy999_id);		ret = F930006(handle,iRequest,rPack,pRetCode,szMsg);		if(ret)			{			goto LRet;		}		return 0;	}	else if((ret = DB_t_cif_shop_pos_open_select_by_c0_and_device_id(rPack->lcert_code)))	{		*pRetCode = E_DB_SHOP_POS_R;	}	else	{				while(1)		{			memset(&tShopPos,0,sizeof tShopPos);			memset(&tShop,0,sizeof tShop);			if((ret = DB_t_cif_shop_pos_fetch_select_by_c0(&tShopPos)))			{				if(ret == DB_NOTFOUND)				{					writelog(LOG_DEBUG,"shop doesn't find [%d]!");					*pRetCode  = 0;				}				else					*pRetCode = E_DB_SHOP_POS_R;				break;			}			writelog(LOG_DEBUG,"find shop [%d]",tShopPos.shop_id);			if((ret = DB_t_cif_shop_read_by_shop_id(tShopPos.shop_id,&tShop)))			{				*pRetCode = ret;				break;			}			if('1' == tShop.is_leaf[0] && '1' == tShop.is_getfee[0]				&& amtcmp(tShop.ratio,0.00)>0 )			{				writelog(LOG_DEBUG,"shop rate [%.02f]",tShop.ratio);				int newrate = D2I(tShop.ratio * 100);				if(newrate > rate)					rate = newrate;			}		}			}	if(*pRetCode)		return -1;		ret = DB_t_pif_feetype_open_select_by_cur1();	if(ret)	{		if(DB_NOTFOUND == ret)//.........这里部分代码省略.........
开发者ID:nykma,项目名称:ykt4sungard,代码行数:101,


示例15: CONV_FUNC

//.........这里部分代码省略.........          k4 = pk[4]; k5 = pk[5]; k6 = pk[6];          pk += kw;          if (kw == 7) {            if (l < (n - 1) || off < m) {#ifdef __SUNPRO_C#pragma pipeloop(0)#endif /* __SUNPRO_C */              for (i = 0; i <= (wid - 2); i += 2) {                p0 = p2; p1 = p3; p2 = p4; p3 = p5; p4 = p6; p5 = p7;                p6 = buff[i + 6]; p7 = buff[i + 7];                buffd[i    ] += p0*k0 + p1*k1 + p2*k2 + p3*k3 + p4*k4 + p5*k5 + p6*k6;                buffd[i + 1] += p1*k0 + p2*k1 + p3*k2 + p4*k3 + p5*k4 + p6*k5 + p7*k6;              }            } else {#ifdef __SUNPRO_C#pragma pipeloop(0)#endif /* __SUNPRO_C */              for (i = 0; i <= (wid - 2); i += 2) {                p0 = p2; p1 = p3; p2 = p4; p3 = p5; p4 = p6; p5 = p7;                p6 = buff[i + 6]; p7 = buff[i + 7];                LOAD_BUFF(buffi);                dd.d64 = *(FTYPE   *)(buffi + i);                buffn[i    ] = (FTYPE)dd.i32s.i0;                buffn[i + 1] = (FTYPE)dd.i32s.i1;                d0 = D2I(p0*k0 + p1*k1 + p2*k2 + p3*k3 + p4*k4 + p5*k5 + p6*k6 + buffd[i    ]);                d1 = D2I(p1*k0 + p2*k1 + p3*k2 + p4*k3 + p5*k4 + p6*k5 + p7*k6 + buffd[i + 1]);                dp[0    ] = FROM_S32(d0);                dp[chan1] = FROM_S32(d1);                buffd[i    ] = 0.0;                buffd[i + 1] = 0.0;                sp += chan2;                dp += chan2;              }            }          } else if (kw == 6) {            if (l < (n - 1) || off < m) {#ifdef __SUNPRO_C#pragma pipeloop(0)#endif /* __SUNPRO_C */              for (i = 0; i <= (wid - 2); i += 2) {                p0 = p2; p1 = p3; p2 = p4; p3 = p5; p4 = p6;                p5 = buff[i + 5]; p6 = buff[i + 6];                buffd[i    ] += p0*k0 + p1*k1 + p2*k2 + p3*k3 + p4*k4 + p5*k5;                buffd[i + 1] += p1*k0 + p2*k1 + p3*k2 + p4*k3 + p5*k4 + p6*k5;              }            } else {#ifdef __SUNPRO_C#pragma pipeloop(0)#endif /* __SUNPRO_C */
开发者ID:lmsf,项目名称:jdk9-dev,代码行数:67,


示例16: elect_request_changzhou

static int elect_request_changzhou(ST_PACK *in_pack,char ext_msg[256]){	int ret = 0;		char c_drtbranch[10]="";	char c_bccbasefuncno[10]="";	int DRTP_BRANCH =0;	int BCC_BASEFUNCNO =0;	ST_PACK ArrayPack;			// 设置返回包	ST_CPACK aPack;				// 设置应答包	ST_CPACK sPack;			 	// 设置发送包	int card_id;	T_t_cif_customer 	tCustomer;	T_t_pif_spefee 	tSpeFee;	T_t_aif_account	tAccount;	T_t_pif_card	tCard;	memset(&tCustomer,0,sizeof(tCustomer));	memset(&tSpeFee,0,sizeof(tSpeFee));	memset(&tAccount,0,sizeof(tAccount));	memset(&tCard,0,sizeof(tCard));	card_id=in_pack->lvol0;	ret=DB_t_pif_card_read_by_card_id(card_id, &tCard);	if(ret)	{		if(DB_NOTFOUND==ret)			ret=E_CARDNO_NOT_EXIST;		else			ret=E_DB_CARD_R;		return ret;	}	ret=DB_t_cif_customer_read_lock_by_cur_and_cut_id(tCard.cosumer_id, &tCustomer);	if(ret)	{		writelog(LOG_ERR,"cut_id[%d]",tCard.cosumer_id);		if(DB_NOTFOUND==ret)			ret= E_CUSTOMER_NOT_EXIST;		else			ret= E_DB_CUSTOMER_R;		return ret;	}		ret=GetParameter(2501, c_drtbranch);	if(ret){		writelog(LOG_ERR,"get_parameter error,error code=[%d]",ret);		return ret;	}	ret=GetParameter(2502, c_bccbasefuncno);	if(ret){		writelog(LOG_ERR,"get_parameter error,error code=[%d]",ret);		return ret;	}		DRTP_BRANCH = atoi(c_drtbranch);	BCC_BASEFUNCNO = atoi(c_bccbasefuncno);	ResetNormalCPack(&aPack, 0, 1);	memset(&ArrayPack, 0, sizeof(ArrayPack));	ResetNormalCPack(&sPack, 0, 1);	SetHeadCol(&sPack, F_SSECTYPES,F_LVOL0,F_LVOL1,F_SORDER0,F_SCUST_AUTH,0);       // 设置发送windows BU的头部视图信息	sPack.head.RequestType = 847357;	sPack.pack.lvol0=in_pack->lvol10;//房间号	sPack.pack.lvol1=D2I(in_pack->damt1*100);//转账金额(分)	memcpy(sPack.pack.sorder0,tCustomer.cut_name,11);		ret = ExtCall(0, DRTP_BRANCH, BCC_BASEFUNCNO, 0, TIMEOUT, &sPack, &aPack, &ArrayPack);	if (ret < 0||aPack.head.retCode!=0)	{		if(ret<0)		{			writelog(LOG_ERR,"Call 847357 error,errcode=[%d],retCode=[%d]",ret,aPack.head.retCode);			return ret;		}		else		{			writelog(LOG_ERR,"Call 847357 error,errcode=[%d],retCode=[%d]",ret,aPack.head.retCode);			return aPack.head.retCode;		}	}	return 0;}
开发者ID:nykma,项目名称:ykt4sungard,代码行数:86,


示例17: F847101

//.........这里部分代码省略.........	else	{		ret=IsInvalidDateTime(rPack->sdate0,"YYYYMMDD");		if(ret)		{			*pRetCode = E_INPUT_DATE;			goto L_RETU;		}		if(strncmp(rPack->sdate0,sysdate,8)<=0)		{			*pRetCode=E_INPUT_DATE;			goto L_RETU;		}		des2src(card_endtime,rPack->sdate0);	}	//	默认密码, 初始取身份证的后6位, 没有身份证号用666666.	len=strlen(tCustomer.man_id) ;	if (len >= 6)	{		strncpy(h_password,&(tCustomer.man_id[len-6]),6);		if(h_password[5]>'9'||h_password[5]<'0')			h_password[5]='0';	}	else	{		strcpy(h_password,DEFAULT_CUST_PWD);	}	ret = getNewUniqNo(KEYTYPE_CARD_ID,&h_temp_Card_id);						//获取最大卡号	if(ret)	{		*pRetCode = ret;		goto L_RETU;	}	tCard.card_id = D2I(h_temp_Card_id);											//卡号	des2src(tCard.showid,h_showcardid);										//显示卡号	des2src(tCard.is_main,TYPE_YES);  											//是否为主卡	des2src(tCard.state_id,CARDSTAT_REG);										//卡状态	tCard.type_id = CT_NORMAL;													//卡类别	EncodePwd(seed_key,h_password,tCard.password,0);							//卡密码	tCard.cosumer_id = hi_cutid;													//客户标识	tCard.account_count = ACCOUNT_COUNT_ONE;									//卡对应帐户个数	des2src(tCard.begin_time,sysdate);											//注册时间	des2src(tCard.end_time, card_endtime);										//截至时间	tCard.phytype = PHYTYPE_NO_ONE;											//设备物理型号;默认为1	//	插入卡信息	ret = DB_t_pif_card_add(&tCard);	if (ret)	{		if(DB_REPEAT==ret)			*pRetCode = E_DB_CARD_E;		else			*pRetCode = E_DB_CARD_I;		goto L_RETU;	}	//	准备数据插入帐户信息表	ret = getNewActno(tAccount.account_id);  	    									//获得最大帐号	if (ret)	{		*pRetCode = ret;		goto L_RETU;	}	des2src(tAccount.open_date,sysdate);		   								//开户时间	des2src(tAccount.open_time,systime);	tAccount.current_state = ACCOUNTSTAT_REGIST;      							//当前状态	tAccount.act_type = ACCTYPE_PERMAIN;				        					//帐号类别
开发者ID:nykma,项目名称:ykt4sungard,代码行数:67,


示例18: F847103

//.........这里部分代码省略.........			}			DB_t_pif_card_free_lock_by_cur();			goto L_RETU;		}	}	tCard.state_id[CARDSTAT_TYPE_LOST]=STATE_FALSE;	ret=DB_t_pif_card_update_lock_by_cur(&tCard);	if(ret)	{		writelog(LOG_ERR,"card_id[%d]",hi_cardid);		if(DB_NOTFOUND==ret)			*pRetCode= E_CARDNO_NOT_EXIST;		else			*pRetCode= E_DB_CARD_U;		goto L_RETU;	}	DB_t_pif_card_free_lock_by_cur();		ret = getNewUniqNo(KEYTYPE_TRADESERIAL,&h_temp_Serial_no);  					//获得最大流水号	if(ret)	{		*pRetCode = ret;		writelog(LOG_ERR,"ERRCODE = [%d]",ret);		goto L_RETU;	}	des2src(tradeserial.operate_date,sysdate);											//发生日期	des2src(tradeserial.operate_time,systime);											//发生时间	des2src(tradeserial.collect_date,sysdate);												//采集日期	des2src(tradeserial.collect_time,systime);												//采集时间	des2src(tradeserial.enteract_date,logicdate);											//处理日期	des2src(tradeserial.enteract_time,systime);											//处理时间	tradeserial.serial_no = D2I(h_temp_Serial_no);											//流水号	tradeserial.serial_type = TXCODE_CARD_COMEBACK_LOSS;								//解挂	tradeserial.serial_state = SERISTAT_NONEEDDEBT;								//流水状态	tradeserial.maindevice_id = hi_maindevice_id;									//上传工作站标识	tradeserial.device_id = hi_device_id;											//采集设备标识	tradeserial.card_id = hi_cardid;													//交易卡号	tradeserial.customer_id = hi_Cut_id;	des2src(tradeserial.oper_code, hi_Operator);	/*	if(!card_is_lost)	{		//允许重复解挂		//再下传白名单		//	插入黑名单表		ret=InsertToBlkList(hi_cardid,DELETE_BLACKLIST);		if(ret)		{			*pRetCode=ret;			writelog(LOG_ERR,"InsertToBlkList err[%d]",ret);			goto L_RETU;		}							//广播黑名单		AddXmlItemInt(tMesList.incontent, XML_KEY_CARDID,hi_cardid);		AddXmlItemInt(tMesList.incontent, XML_KEY_ADDDELSIGN,DELETE_BLACKLIST);	//增删标志		tMesList.funid = 930005;		tMesList.pfunid = 930003;		tMesList.max_send_cnt = 10;		tMesList.level = MESLIST_PRIORITY_REALTIME;		tMesList.msgtype = MESLIST_TYPE_ORDER;		ret=AddMsgLst(&tMesList);
开发者ID:nykma,项目名称:ykt4sungard,代码行数:67,


示例19: F846336

//.........这里部分代码省略.........		if(tEAcc.stoppayflag[0] == '1')			return E_EACC_STOPPAY;		if(amtcmp(tEAcc.cur_freebala , rPack->damt0) <0)   //金额不足			return E_EACC_BALANCE_SHORTAGE;		ret=GetParameter(GLOBE_MAXCARDBALANCE,sMaxBalance);		if(ret)			return ret;		dMaxCardBalance=atof(sMaxBalance);		if(amtcmp(tCardAccount.cur_bala+tradeserial.trade_fee,dMaxCardBalance)>0)			return E_AMT_EXCEED_MAX;//		tradeserial.in_balance=rPack->damt1;			//卡上余额//		tradeserial.trade_count=rPack->lvol6+1;		//交易次数			}	else	{		tradeserial.serial_type = TXCODE_CARD2EACC;		strcpy(seedkey,STATIC_SEED_KEY);		des2src(inpwd_plain,rPack->scust_limit2);		EncodePwd(seedkey,inpwd_plain,inpwd_crypt,0);		if(strcmp(tCardAccount.password,inpwd_crypt)!=0)			return E_CARD_PWD_DIFFER;		if(amtcmp(tCardAccount.cur_freebala , rPack->damt0) <0)   //金额不足			return E_EACC_BALANCE_SHORTAGE;					ret=GetParameter(GLOBE_MAXEACCBALANCE,sMaxBalance);		if(ret)			return ret;		dMaxEACCBalance=atof(sMaxBalance);		if(amtcmp(tEAcc.cur_bala+tradeserial.trade_fee,dMaxEACCBalance)>0)			return E_AMT_EXCEED_MAX;		//		tradeserial.in_balance=tEAcc.cur_freebala;//		tradeserial.trade_count=tEAcc.consume_count+1;		//交易次数	}	ret=GetLogicDate(logicdate);							//业务日期	if(ret)		return ret;		double dSerialNo = 0;	ret = getNewUniqNo(KEYTYPE_TRADESERIAL,&dSerialNo);  					//获得最大流水号	if(ret)	{		writelog(LOG_ERR," getNewUniqNo ERRCODE = [%d]",ret);		return ret;	}	tradeserial.serial_no = D2I(dSerialNo);											//流水号	tradeserial.other_seri_no = 0;															//上传端流水号	tradeserial.serial_state = SERISTAT_DEBT;												//流水状态	des2src(tradeserial.operate_date,sysdate);											//发生日期	des2src(tradeserial.operate_time,systime);											//发生时间	des2src(tradeserial.collect_date,sysdate);												//采集日期	des2src(tradeserial.collect_time,systime);												//采集时间	des2src(tradeserial.enteract_date,logicdate);											//处理日期	des2src(tradeserial.enteract_time,systime);											//处理时间	des2src(tradeserial.oper_code, rPack->sname);	tradeserial.customer_id = tCustomer.cut_id;	tradeserial.sys_id = 0;																//外部系统标识	tradeserial.in_balance=rPack->lvol7/100.0;	tradeserial.trade_count=rPack->lvol6+1;		//交易次数	des2src(IA.sArrInActno[0],tCardAccount.account_id);						//卡帐户	des2src(IA.sArrInActno[5],tEAcc.account_id);						//电子钱包帐户	IA.iCardNo=tEAcc.card_id;	IA.dArrInAmt[0]=tradeserial.trade_fee;	ret=process(&IA,&tradeserial);	if(ret)	{		writelog(LOG_ERR,"process ret[%d]",ret);		return ret;	}		if(TXCODE_CARD2EACC==tradeserial.serial_type)		sprintf(outPack->vsmess,"卡转电子钱包:转帐前卡余额%.2lf元,转账金额%.2lf,当前卡余额%.2lf元",tradeserial.in_balance,tradeserial.trade_fee,tradeserial.out_balance);	else		sprintf(outPack->vsmess,"电子钱包转卡:转帐前卡余额%.2lf元,转账金额%.2lf,当前卡余额%.2lf元",tradeserial.in_balance,tradeserial.trade_fee,tradeserial.out_balance);	writelog(LOG_DEBUG,outPack->vsmess);	ret = DB_t_tif_tradeserial_add(&tradeserial);	if (ret)	{		writelog(LOG_ERR,"ret[%d]",ret);		if(DB_REPEAT==ret)			return E_DB_TRADESERIAL_E;		else			return E_DB_TRADESERIAL_I;	}	if(amtcmp(tradeserial.out_balance,0)<0)		return E_ENTER_ACCOUNT;	SetCol(handle,F_DAMT2,F_LSERIAL1,F_VSMESS,0);			outPack->damt2=tradeserial.out_balance;		//出卡值	outPack->lserial1=tradeserial.serial_no;			//流水号	PutRow(handle,outPack,pRetCode,szMsg);	return 0;}
开发者ID:nykma,项目名称:ykt4sungard,代码行数:101,


示例20: F847107

//.........这里部分代码省略.........			}			else			{				DB_t_customer_free_lock_cur();				*pRetCode=E_DB_SPEFEE_R;				goto L_RETU;			}		}		else		{			tCustomer.feetype=tSpeFee.feetype;		}		//更新客户表的收费类别字段		ret=DB_t_customer_update_lock_by_cur(&tCustomer);		if(ret)		{			if(DB_NOTFOUND==ret)				*pRetCode= E_CUSTOMER_NOT_EXIST;			else				*pRetCode= E_DB_CUSTOMER_U;			goto L_RETU;		}	}	DB_t_customer_free_lock_cur();	ret = getNewUniqNo(KEYTYPE_TRADESERIAL,&dSerialNo);  	//获得流水号	if(ret)	{		*pRetCode = ret;		writelog(LOG_ERR," ERRCODE = [%d]",ret);		goto L_RETU;	}	tradeserial.serial_no = D2I(dSerialNo);						//流水号	tradeserial.other_seri_no = 0;							//上传端流水号	tradeserial.serial_type = TXCODE_DRAW_DEPOSIT_LOG;		//交易代码	tradeserial.serial_state = SERISTAT_DEBT;					//流水状态	des2src(tradeserial.operate_date,sysdate);				//发生日期	des2src(tradeserial.operate_time,systime);				//发生时间	des2src(tradeserial.collect_date,sysdate);					//采集日期	des2src(tradeserial.collect_time,systime);					//采集时间	des2src(tradeserial.enteract_date,logicdate);				//处理日期	des2src(tradeserial.enteract_time,systime);				//处理时间	tradeserial.maindeviceid = rPack->lvol6;					//上传工作站标	tradeserial.deviceid = rPack->lvol7;						//采集设备标识	tradeserial.cardno = rPack->lvol0;						//卡号	tradeserial.purseno = rPack->lvol1;						//钱包号	tradeserial.custid = rPack->lvol2;					//客户标识	tradeserial.in_balance=rPack->damt1;					//入卡值	tradeserial.trade_count=rPack->lvol10+1;				//交易次数	des2src(tradeserial.opercode , rPack->scust_limit);		//操作员代码	tradeserial.sys_id = 0;									//外部系统标识	IA.iCardNo=tCard.cardno;	IA.iFeeType=tCustomer.feetype;	strcpy(IA.sArrInActno[0],tAccount.account_id);	IA.dArrInAmt[0]=tradeserial.trade_fee;					//账号	IA.iArrInFeeSwitch[0]=rPack->lvol0;	IA.iArrInFeeSwitch[5]=rPack->lvol5;	IA.iArrInFeeSwitch[6]=rPack->lvol6;	IA.iArrInFeeSwitch[7]=rPack->lvol7;	IA.iArrInFeeSwitch[8]=rPack->lvol8;	IA.iArrInFeeSwitch[9]=rPack->lvol9;	IA.iArrInFeeSwitch[10]=rPack->lvol10;	T_t_cardbitmap tCardBitmap;
开发者ID:nykma,项目名称:ykt4sungard,代码行数:67,


示例21: mlib_ImageConv1xN

static mlib_status mlib_ImageConv1xN(mlib_image       *dst,                                     const mlib_image *src,                                     const mlib_d64   *k,                                     mlib_s32         n,                                     mlib_s32         dn,                                     mlib_s32         cmask){  FTYPE    buff[BUFF_SIZE];  mlib_s32 off, kh;  mlib_s32 d0, d1;  const FTYPE    *pk;  FTYPE    k0, k1, k2, k3;  FTYPE    p0, p1, p2, p3, p4;  DEF_VARS(DTYPE);  DTYPE    *sl_c, *dl_c, *sl0;  mlib_s32 l, hsize, max_hsize;  GET_SRC_DST_PARAMETERS(DTYPE);  hgt -= (n - 1);  adr_dst += dn*dll;  max_hsize = (CACHE_SIZE/sizeof(DTYPE))/sll;  if (!max_hsize) max_hsize = 1;  if (max_hsize > BUFF_SIZE) {    pbuff = mlib_malloc(sizeof(FTYPE)*max_hsize);  }  chan1 = nchannel;  sl_c = adr_src;  dl_c = adr_dst;  for (l = 0; l < hgt; l += hsize) {    hsize = hgt - l;    if (hsize > max_hsize) hsize = max_hsize;    for (c = 0; c < nchannel; c++) {      if (!(cmask & (1 << (chan1 - 1 - c)))) continue;      sl = sl_c + c;      dl = dl_c + c;#ifdef __SUNPRO_C#pragma pipeloop(0)#endif /* __SUNPRO_C */      for (j = 0; j < hsize; j++) pbuff[j] = 0.0;      for (i = 0; i < wid; i++) {        sl0 = sl;        for (off = 0; off < (n - 4); off += 4) {          pk = k + off;          sp = sl0;          k0 = pk[0]; k1 = pk[1]; k2 = pk[2]; k3 = pk[3];          p2 = sp[0]; p3 = sp[sll]; p4 = sp[2*sll];          sp += 3*sll;#ifdef __SUNPRO_C#pragma pipeloop(0)#endif /* __SUNPRO_C */          for (j = 0; j < hsize; j += 2) {            p0 = p2; p1 = p3; p2 = p4;            p3 = sp[0];            p4 = sp[sll];            pbuff[j    ] += p0*k0 + p1*k1 + p2*k2 + p3*k3;            pbuff[j + 1] += p1*k0 + p2*k1 + p3*k2 + p4*k3;            sp += 2*sll;          }          sl0 += 4*sll;        }        pk = k + off;        sp = sl0;        k0 = pk[0]; k1 = pk[1]; k2 = pk[2]; k3 = pk[3];        p2 = sp[0]; p3 = sp[sll]; p4 = sp[2*sll];        dp = dl;        kh = n - off;        if (kh == 4) {          sp += 3*sll;#ifdef __SUNPRO_C#pragma pipeloop(0)#endif /* __SUNPRO_C */          for (j = 0; j <= (hsize - 2); j += 2) {            p0 = p2; p1 = p3; p2 = p4;            p3 = sp[0];            p4 = sp[sll];            d0 = D2I(p0*k0 + p1*k1 + p2*k2 + p3*k3 + pbuff[j]);            d1 = D2I(p1*k0 + p2*k1 + p3*k2 + p4*k3 + pbuff[j + 1]);//.........这里部分代码省略.........
开发者ID:lmsf,项目名称:jdk9-dev,代码行数:101,


示例22: parse_buffer

ERL_NIF_TERM parse_buffer(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) {	Parser par;	Parser* parser = &par;	ErlNifBinary buffer;	if(!enif_inspect_binary(env, argv[0], &buffer)) return enif_make_badarg(env);	if(!init_parser(parser, env, argv[0], &buffer, argv[1])) return enif_make_badarg(env);	ERL_NIF_TERM reply = argv[2];	ERL_NIF_TERM return_value;	parser->remaining_length = buffer.size;	parser->pointer = buffer.data + parser->frame_start;	while (parser->frame_start < parser->buffer_size) {				parser->frame_size = D3I(parser->pointer);		parser->pointer += 3;		unsigned long seg_num = D1(parser->pointer);		parser->pointer += 1;		parser->remaining_length -= (parser->frame_size + 4);		if (parser->remaining_length < 0) {			return_value = enif_make_tuple3(env, 				parser->atoms->atom_incomplete,				reply, 				enif_make_sub_binary(env, parser->raw, parser->frame_start, parser->buffer_size - parser->frame_start));			break;		}		if (*parser->pointer == MYSQL_RESP_EOF) {			ERL_NIF_TERM remaining_buffer = enif_make_sub_binary(env, parser->raw, parser->frame_start + parser->frame_size + 4, parser->remaining_length);			if (parser->frame_size == 5) {				unsigned long server_status = D2I(parser->pointer + 3);				return_value = enif_make_tuple5(env, 					parser->atoms->atom_eof,					enif_make_uint(env, server_status), 					enif_make_uint(env, seg_num), 					reply,					remaining_buffer);			} 			else return_value = enif_make_tuple4(env, 					parser->atoms->atom_eof,					enif_make_uint(env, seg_num),					reply,					remaining_buffer);			break;		}		parser->frame_start += 4;		ERL_NIF_TERM row = parse_line(parser);		reply = enif_make_list_cell(env, row, reply);		parser->frame_start += parser->frame_size;		parser->pointer += parser->frame_size;	}	if (parser->frame_start >= parser->buffer_size) return_value = enif_make_tuple3(env, 												parser->atoms->atom_incomplete,												reply, 												parser->atoms->atom_empty);	destroy_parser(parser);	return return_value;}
开发者ID:GWeise,项目名称:Emysql,代码行数:75,


示例23: do_849009

/** * /brief 处理网银转账入账业务 * /param in_pack 请求报文包 * /param out_pack 输出报文包 * /param online_tx 联机交易,当为1时,如果个人账户已注销,则不能交易, *					当为0时,如果个人账户已注销,则借记 现金,贷记 营业成本 */int do_849009(ST_PACK *in_pack,char *szMsg,ST_PACK *out_pack,int online_tx){	int cust_id,card_id;	int subsidy_no;	int ret,count;	char temp[64];	double max_subsidy_money = 0.0;	double total_money,dSerial;	T_t_tif_subsidy subsidy;	T_t_tif_tradeserial tSerial;	T_t_aif_account account;	T_t_tif_meslist tMesList;	InAcc IA;	if(amtcmp(in_pack->damt0,0.0) <= 0)	{		writelog(LOG_DEBUG,"input money error!");		return E_INPUT_AMT;	}	memset(temp,0,sizeof temp);	ret = GetParameter(GLOBAL_MAX_PER_SUBSIDY,temp);	if(ret)	{		return ret;	}	max_subsidy_money = D4U5(atof(temp),2);		// 流水号	ret = getNewUniqNo(KEYTYPE_TRADESERIAL,&dSerial);	if(ret)	{		return ret;	}	// 查询卡信息	ret = do_849008_query(in_pack,&cust_id,&card_id);	if(ret)	{		writelog(LOG_DEBUG,"query customer information error!,ret[%d]",ret);		return ret;	}	// 账户信息	memset(&account,0,sizeof account);	ret = DB_t_aif_account_read_by_card_id_and_purse_id(card_id,in_pack->lvol3,&account);	if(ret)	{		// 账户表无信息		if(DB_NOTFOUND == ret)			return E_DB_ACCOUNT_N;		else			return E_DB_ACCOUNT_R;	}	// 生成流水记录	memset(&tSerial,0,sizeof tSerial);	writelog(LOG_DEBUG,"cust_id[%d],Serial_no[%d]]",cust_id,in_pack->lvol2);	ret = do_849008_query_serial(cust_id,in_pack->lvol2,&tSerial);	if(ret)	{		return ret;	}	// 认为已经入账成功,直接返回结果	if(tSerial.serial_no > 0)	{		out_pack->lvol0 = tSerial.card_id;		out_pack->lvol1 = tSerial.serial_no;		out_pack->lvol2 = tSerial.customer_id;		out_pack->damt0 = tSerial.trade_fee;		return 0;	}		memset(&IA,0,sizeof IA);	tSerial.serial_no = D2I(dSerial);	tSerial.serial_type = TXCODE_NETFEE_TRANS; // 网银转账	tSerial.serial_state = SERISTAT_DEBT;	des2src(tSerial.oper_code,in_pack->scust_no2);	des2src(tSerial.operate_date,in_pack->sdate0);	des2src(tSerial.operate_time,in_pack->stime0);	GetLogicDate(tSerial.enteract_date);	getsystime(tSerial.enteract_time);	getsysdate(tSerial.collect_date);	des2src(tSerial.collect_time,tSerial.enteract_time);	tSerial.customer_id = cust_id;	tSerial.card_id = card_id;	tSerial.in_balance = 0.0;	tSerial.out_balance = 0.0;	tSerial.trade_fee = in_pack->damt0;	tSerial.other_seri_no = in_pack->lvol2; // 银行端流水号	if(account.current_state >= ACCOUNTSTAT_LOGOUT)	{		// 个人账户已经注销//.........这里部分代码省略.........
开发者ID:nykma,项目名称:ykt4sungard,代码行数:101,


示例24: parse_line

ERL_NIF_TERM parse_line(Parser* parser) {	unsigned long idx = parser->frame_start;	unsigned col = 0;		ERL_NIF_TERM reply[parser->table_width];	while(col < parser->table_width) {		unsigned char size_length = (parser->buffer[idx] <= MYSQL_LIMIT_BYTE) ? (1) : (parser->buffer[idx] - MYSQL_LIMIT_BYTE);		size_length *= (size_length == 4) ? (2) : (1);		unsigned long long content_length = 0; 		if (parser->buffer[idx] != MYSQL_NULL_RESULT) {			switch (size_length) {				case 1:					content_length = D1(parser->buffer + idx);					break;				case 2:					content_length = D2I(parser->buffer + idx + 1);					size_length++;					break;				case 3:					content_length = D3I(parser->buffer + idx + 1);					size_length++;					break;				case 8:					content_length =  D8I(parser->buffer + idx + 1);					size_length++;					break;			}		} else content_length = 0;		unsigned char *new_val = parser->buffer + idx + size_length;		MYSQL_TIME time_;		if (content_length == 0) reply[col] = parser->atoms->atom_undefined;		else if (parser->columns[col] == MYSQL_TYPE_BIT			|| parser->columns[col] == MYSQL_TYPE_TINY_BLOB			|| parser->columns[col] == MYSQL_TYPE_MEDIUM_BLOB			|| parser->columns[col] == MYSQL_TYPE_LONG_BLOB			|| parser->columns[col] == MYSQL_TYPE_BLOB			|| parser->columns[col] == MYSQL_TYPE_VAR_STRING			|| parser->columns[col] == MYSQL_TYPE_STRING) reply[col] = enif_make_sub_binary(parser->env, parser->raw, idx + size_length, size_length + content_length - 1);		else if (parser->columns[col] == MYSQL_TYPE_TINY			|| parser->columns[col] == MYSQL_TYPE_SHORT			|| parser->columns[col] == MYSQL_TYPE_LONG			|| parser->columns[col] == MYSQL_TYPE_LONGLONG			|| parser->columns[col] == MYSQL_TYPE_INT24			|| parser->columns[col] == MYSQL_TYPE_YEAR) reply[col] = enif_make_int(parser->env, atoi((char *) new_val));		else if (parser->columns[col] == MYSQL_TYPE_DECIMAL			|| parser->columns[col] == MYSQL_TYPE_NEWDECIMAL			|| parser->columns[col] == MYSQL_TYPE_FLOAT			|| parser->columns[col] == MYSQL_TYPE_DOUBLE) reply[col] = enif_make_double(parser->env, strtod((const char *) new_val, NULL));		else if (parser->columns[col] == MYSQL_TYPE_DATE) {			sscanf((const char*) new_val, "%d-%d-%d", &time_.year, &time_.month, &time_.day);			reply[col] = enif_make_tuple2(parser->env,        		parser->atoms->atom_date,				enif_make_tuple3(parser->env, 		            enif_make_int(parser->env, time_.year),		            enif_make_int(parser->env, time_.month),		            enif_make_int(parser->env, time_.day))				);		}		else if (parser->columns[col] == MYSQL_TYPE_TIME) {			sscanf((const char*) new_val, "%d:%d:%d", &time_.hour, &time_.minute, &time_.second);            reply[col] = enif_make_tuple2(parser->env,        		parser->atoms->atom_time,        		enif_make_tuple3(parser->env, 		            enif_make_int(parser->env, time_.hour),		            enif_make_int(parser->env, time_.minute),		            enif_make_int(parser->env, time_.second))        		);		}		else if (parser->columns[col] == MYSQL_TYPE_TIMESTAMP			|| parser->columns[col] == MYSQL_TYPE_DATETIME) {			sscanf((const char*) new_val, "%d-%d-%d %d:%d:%d", &time_.year, &time_.month, &time_.day, &time_.hour, &time_.minute, &time_.second);            reply[col] = enif_make_tuple2(parser->env,        		parser->atoms->atom_datetime,            	enif_make_tuple2(parser->env,					enif_make_tuple3(parser->env, 						enif_make_int(parser->env, time_.year),						enif_make_int(parser->env, time_.month),						enif_make_int(parser->env, time_.day)					),					enif_make_tuple3(parser->env,						enif_make_int(parser->env, time_.hour),						enif_make_int(parser->env, time_.minute),						enif_make_int(parser->env, time_.second)					)				)			);		}		else if (parser->columns[col] == MYSQL_TYPE_FIELD_EXTRA) {			ERL_NIF_TERM default_content;			if (content_length > 12) default_content = enif_make_sub_binary(parser->env, parser->raw, idx + size_length + 12, size_length + content_length - 13);			else default_content = parser->atoms->atom_undefined;//.........这里部分代码省略.........
开发者ID:GWeise,项目名称:Emysql,代码行数:101,


示例25: F847132

//.........这里部分代码省略.........	}	*/	ret=stat_subsidy_amount_by_batch_no(tSubsidy.batch_no, &iTotalCnt,&dTotalAmt);	if(ret)	{		*pRetCode = ret;		writelog(LOG_ERR,"ret[%d]",ret);		goto L_RETU;	}		if(iTotalCnt!=rPack->lvol3)	{		strcpy(szMsg,"补助人数与导入的数据不符");		*pRetCode=E_INPUT_DATA_INVAILD;		goto L_RETU;	}	if(amtcmp(dTotalAmt,rPack->damt0)!=0)	{		strcpy(szMsg,"补助总金额与导入的补助数据不符");		*pRetCode=E_INPUT_DATA_INVAILD;		goto L_RETU;	}	writelog(LOG_DEBUG,"download subsidy batch_no : %s",tSubsidy.batch_no);	des2src(tSubsidy.tx_date,sysdate);	des2src(tSubsidy.tx_time,systime);	ret = getNewUniqNo(KEYTYPE_TRADESERIAL,&dSerialNo);  					//获得最大流水号	if(ret)	{		*pRetCode = ret;		writelog(LOG_ERR,"ret[%d]",ret);		goto L_RETU;	}	tradeserial.serial_no = D2I(dSerialNo);											//流水号	tradeserial.other_seri_no = 0;															//上传端流水号	if(amtcmp(dTotalAmt,0.0)>0)		tradeserial.serial_type = TXCODE_SET_SUBSIDY;	else tradeserial.serial_type = TXCODE_DESUBSIDY_DOWN;		tradeserial.serial_state = SERISTAT_DEBT;				//流水状态	des2src(tradeserial.operate_date,sysdate);			//发生日期	des2src(tradeserial.operate_time,systime);			//发生时间	des2src(tradeserial.collect_date,sysdate);				//采集日期	des2src(tradeserial.collect_time,systime);				//采集时间	des2src(tradeserial.enteract_date,logicdate);			//处理日期	des2src(tradeserial.enteract_time,systime);			//处理时间	tradeserial.maindevice_id = rPack->lvol6;				//上传工作站标识	tradeserial.device_id = rPack->lvol7;					//采集设备标识	des2src(tradeserial.oper_code , rPack->scust_no);		//操作员代码	tradeserial.sys_id = 0;								//外部系统标识	// 设置发生金额	tradeserial.trade_fee = dTotalAmt;	switch(tSubsidy.bill_type)	{		case TYPE_CASH:		//现金			break; 		case TYPE_BILL:		//支票		case TYPE_FUNDBOOK:	//经费本 			tSavdtl.amount=rPack->damt0;				//发生额 			if(amtcmp(tSavdtl.amount,0)==0)				break;			des2src(tSavdtl.bill_no,tSubsidy.bill_no);		//票据号码			if(strlen(tSavdtl.bill_no)<1)			{				*pRetCode=E_INPUT_BILLNO;				goto L_RETU;
开发者ID:nykma,项目名称:ykt4sungard,代码行数:67,


示例26: F240157

//.........这里部分代码省略.........			}			else			{				DB_t_cif_customer_free_lock_cur();				*pRetCode=E_DB_SPEFEE_R;				goto L_RETU;			}		}		else		{			tCustomer.fee_type=tSpeFee.fee_type;		}		//更新客户表的收费类别字段		ret=DB_t_cif_customer_update_lock_by_cur(&tCustomer);		if(ret)		{			if(DB_NOTFOUND==ret)				*pRetCode= E_CUSTOMER_NOT_EXIST;			else				*pRetCode= E_DB_CUSTOMER_U;			goto L_RETU;		}	}	DB_t_cif_customer_free_lock_cur();	ret = getNewUniqNo(KEYTYPE_TRADESERIAL,&dUniqno);  					//获得最大流水号	if(ret)	{		*pRetCode = ret;		writelog(LOG_ERR," ERRCODE = [%d]",ret);		goto L_RETU;	}	tradeserial.serial_no = D2I(dUniqno);					//流水号	tradeserial.other_seri_no = 0;								//上传端流水号	tradeserial.serial_type  = TXCODE_MAKEUPSERIAL;	tradeserial.serial_state = SERISTAT_DEBT;						//流水状态	des2src(tradeserial.operate_date,sysdate);					//发生日期	des2src(tradeserial.operate_time,systime);					//发生时间	des2src(tradeserial.collect_date,sysdate);						//采集日期	des2src(tradeserial.collect_time,systime);						//采集时间	des2src(tradeserial.enteract_date,logicdate);					//处理日期	des2src(tradeserial.enteract_time,systime);					//处理时间	tradeserial.maindevice_id = rPack->lvol6;						//上传工作站标识//	tradeserial.device_id = rPack->lvol7;							//采集设备标识	tradeserial.card_id =card_id;									//卡号	tradeserial.purse_id = PURSE_NO_ONE;						//钱包号	tradeserial.customer_id = tCard.cosumer_id;					//客户标识	tradeserial.in_balance=rPack->damt0;						//入卡值	tradeserial.trade_count=rPack->lvol1+1;					//交易次数	des2src(tradeserial.oper_code,rPack->scust_limit);			//操作员代码	tradeserial.sys_id = 0;										//外部系统标识	des2src(IA.sArrInActno[0],tAccount.account_id);						//帐户	IA.iCardNo=tCard.card_id;	IA.iFeeType=tCustomer.fee_type;	IA.dArrInAmt[0]=tradeserial.trade_fee;	IA.iArrInFeeSwitch[0]=rPack->lvol0;	IA.iArrInFeeSwitch[1]=rPack->lvol1;	IA.iArrInFeeSwitch[2]=rPack->lvol2;	IA.iArrInFeeSwitch[3]=rPack->lvol3;	IA.iArrInFeeSwitch[4]=rPack->lvol4;	IA.iArrInFeeSwitch[5]=rPack->lvol5;	ret=process(&IA,&tradeserial);	if(ret)
开发者ID:nykma,项目名称:ykt4sungard,代码行数:67,


示例27: F847302

int F847302(TRUSERID *handle,int iRequest,ST_PACK *rPack,int *pRetCode,char *szMsg){    int ret = 0;    T_t_card tCard;    T_t_tif_tradeserial tTradeSerial, tPacketSerial;    T_t_tif_writefailed tWriteFailed;    char logicdate[11] = "";    double dUniqNo = 0;         memset(&tCard, 0, sizeof tCard);    memset(&tTradeSerial, 0, sizeof tTradeSerial);    memset(&tPacketSerial, 0, sizeof tPacketSerial);    memset(&tWriteFailed, 0, sizeof tWriteFailed);        if (rPack->lvol3 != 0 && rPack->lvol3 != 1)    {        writelog(LOG_DEBUG,"输入标志错误[%d]",rPack->lvol3);        *pRetCode = E_INPUT_ERROR;        goto L_RETU;    }    ret = DB_t_tif_tradeserial_read_by_serial_no(rPack->lvol1,&tTradeSerial);  //消费流水号    if (ret)    {        writelog(LOG_DEBUG,"输入号不存在消费流水号[%d]",rPack->lvol1);        if (DB_NOTFOUND == ret)        {            *pRetCode = E_DB_TRADESERIAL_N;        }        else        {            *pRetCode = E_DB_TRADESERIAL_R;        }        goto L_RETU;    }        ret = DB_t_card_read_lock_by_cur_and_cardno(tTradeSerial.cardno,&tCard);    if (ret)    {        if (DB_NOTFOUND == ret)        {            *pRetCode = E_DB_CARD_N;        }        else        {            *pRetCode = E_DB_CARD_R;        }        goto L_RETU;    }        ret = DB_t_tif_tradeserial_read_by_serial_no(rPack->lvol2,&tPacketSerial); //充值流水号    if (ret)    {        writelog(LOG_DEBUG,"输入号不存在充值流水号[%d]",rPack->lvol2);        if (DB_NOTFOUND == ret)        {            *pRetCode = E_DB_TRADESERIAL_N;        }        else        {               *pRetCode = E_DB_TRADESERIAL_R;        }        goto L_RETU;    }    GetLogicDate(logicdate);    tWriteFailed.cardno = tCard.cardno;    des2src(tWriteFailed.tx_date,logicdate);    writelog(LOG_DEBUG,"大钱包交易金额[%f]",tTradeSerial.trade_fee);        // 大钱包写卡失败    if (0 == rPack->lvol3)    {        // 大钱包写卡失败        ret = getNewUniqNo(KEYTYPE_WRITEFAILED, &dUniqNo);              //获得写卡失败表最大ID号        if (ret)        {            writelog(LOG_ERR,"ret[%d]",ret);            *pRetCode = ret;            goto L_RETU;        }        tWriteFailed.id = D2I(dUniqNo);        tWriteFailed.serial_no = tTradeSerial.serial_no;        tWriteFailed.serial_type = tTradeSerial.serial_type;        tWriteFailed.purese_no = PURSE_NO_ONE;        tWriteFailed.deal_flag[0] = CARDWFAIL_PACKET_DEAL_FLAG_Y;        tWriteFailed.deal_bala = tTradeSerial.trade_fee;        des2src(tWriteFailed.comments, "大钱包写卡失败");        ret = DB_t_tif_writefailed_add(&tWriteFailed);        if (ret)        {            *pRetCode = E_DB_WRITEFAILED_I;            goto L_RETU;        }            }    tCard.cardattr[CARDSTAT_TYPE_WFAIL] = STATE_TRUE;    ret = DB_t_card_update_lock_by_cur(&tCard);    if (ret)    {        *pRetCode = E_DB_CARD_U;         goto L_RETU;//.........这里部分代码省略.........
开发者ID:nykma,项目名称:ykt4sungard,代码行数:101,


示例28: F847301

//.........这里部分代码省略.........        {            *pRetCode = E_DB_CUSTOMER_R;        }        goto L_RETU;    }    //读取个人帐户    ret = DB_t_aif_account_read_by_cardno_and_purseno(tCard.cardno,PURSE_NO_ONE,&tAccount);    if (ret)    {        if (DB_NOTFOUND == ret)        {            *pRetCode = E_DB_ACCOUNT_N;        }        else        {            *pRetCode = E_DB_ACCOUNT_R;        }        goto L_RETU;    }    //个人临时帐户填死掉了, 不需要查询    ret = getNewUniqNo(KEYTYPE_TRADESERIAL,&dUniqNo);              // 获得最大流水号    if (ret)    {        writelog(LOG_ERR,"ret[%d]",ret);        *pRetCode = ret;		goto L_RETU;    }    getsysdate(sysdate);    getsystime(systime);    GetLogicDate(logicdate);    memset(&tSerial, 0, sizeof tSerial);    tSerial.serial_no = D2I(dUniqNo);    tSerial.other_seri_no = 0;    tSerial.serial_state = SERISTAT_DEBT;                           //流水状态    tSerial.serial_type = TXCODE_CONSUME;                           //交易类型    des2src(tSerial.operate_date,sysdate);                           //发生日期    des2src(tSerial.operate_time,systime);                           //发生时间    des2src(tSerial.collect_date,sysdate);                           //采集日期    des2src(tSerial.collect_time,systime);                           //采集时间    des2src(tSerial.enteract_date,logicdate);                        //处理日期    des2src(tSerial.enteract_time,systime);                          //处理时间//    tSerial.maindeviceid = rPack->lvol3;                            //上传工作站标识    tSerial.deviceid = 0;                                          //采集设备标识     tSerial.cardno = hi_cardid;                                    //交易卡号    des2src(tSerial.showid,tCard.showid);                           //显示卡号    tSerial.purseno = PURSE_NO_ONE;                                //钱包号    tSerial.custid = tCard.custid;                         //客户号    des2src(tSerial.opercode, rPack->scust_no);                      //操作员代码    tSerial.sysid = 0;    tSerial.trade_count = rPack->lvol4 + 1;                          //卡交易次数    tSerial.trade_fee = transfer_price;                             //转钱金额    tSerial.cardbefbal = cardbefbal;                                //入卡值    writelog(LOG_DEBUG,"水控转账入卡值[%.2lf]",cardbefbal);    des2src(IA.sArrInActno[0],tAccount.account_id);                 //个人帐户//  des2src(IA.sArrInActno[1],temp_account_id);                  //个人临时帐户    IA.dArrInAmt[0] = tSerial.trade_fee;                            //交易金额    IA.iCardNo = tCard.cardno;                                     //交易卡号    IA.iFeeType = tCustomer.feetype;                               //客户收费类型    //调用入帐子模块    ret = process(&IA,&tSerial);    if (ret)    {
开发者ID:Codiscope-Research,项目名称:ykt4sungard,代码行数:67,



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


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