PBOC代码回顾(1)(4)

2020-05-05 13:54

#if !defined(AFX_AIDLISTAPP_H__353D88E1_F4DC_4C87_8421_F2E3E00F3384__INCLUDED_)

#define AFX_AIDLISTAPP_H__353D88E1_F4DC_4C87_8421_F2E3E00F3384__INCLUDED_

#if _MSC_VER > 1000 #pragma once

#endif // _MSC_VER > 1000

#include \

#include \

class CAIDListApp {

public: int GetMatchedAIDItem(BYTE *ucAID,BYTE ucAIDLen,AIDITEM *pItem); void DestoryAIDList(); void AddAIDItem(AIDITEM *pItem); CAIDListApp(); virtual ~CAIDListApp(); CPtrList m_listOfAIDs; };

#endif

// !defined(AFX_AIDLISTAPP_H__353D88E1_F4DC_4C87_8421_F2E3E00F3384__INCLUDED_)

// AIDListApp.cpp: implementation of the CAIDListApp class. //

//////////////////////////////////////////////////////////////////////

#include \

#include \#include \

#ifdef _DEBUG #undef THIS_FILE

static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif

extern CFormater Formater;

////////////////////////////////////////////////////////////////////// // Construction/Destruction

//////////////////////////////////////////////////////////////////////

CAIDListApp::CAIDListApp() { }

CAIDListApp::~CAIDListApp() { DestoryAIDList(); }

//添加终端AID列表项

void CAIDListApp::AddAIDItem(AIDITEM *pItem) { m_listOfAIDs.AddTail(pItem); }

//销毁AID列表

void CAIDListApp::DestoryAIDList() { AIDITEM *pItem = NULL; while(!m_listOfAIDs.IsEmpty()) { pItem = (AIDITEM*)m_listOfAIDs.RemoveHead(); delete pItem; } }

//终端应用与IC 卡应用的匹配

int CAIDListApp::GetMatchedAIDItem(BYTE *ucAID, BYTE ucAIDLen, AIDITEM *pItem) { POSITION pos; AIDITEM *pTemAID; pos = m_listOfAIDs.GetHeadPosition(); for (int i=0; i< m_listOfAIDs.GetCount(); i++) { pTemAID = (AIDITEM*)m_listOfAIDs.GetNext(pos); if ((ucAIDLen >= pTemAID->ucAIDLen) && (0 == memcmp(ucAID,pTemAID->ucAID,pTemAID->ucAIDLen))) { memcpy(pItem,pTemAID,sizeof(AIDITEM)); if (ucAIDLen == pTemAID->ucAIDLen) return AIDEXACTMATCH; else return AIDPARTMATCH; } } return AIDNOMATCH; }

// CandidateListApp.h: interface for the CCandidateListApp class. //

//////////////////////////////////////////////////////////////////////

#if !defined(AFX_CANDIDATELISTAPP_H__ACA72C65_0814_479B_9AB5_3BFC42284E4C__INCLUDED_) #define

AFX_CANDIDATELISTAPP_H__ACA72C65_0814_479B_9AB5_3BFC42284E4C__INCLUDED_

#if _MSC_VER > 1000 #pragma once

#endif // _MSC_VER > 1000

#include \#include \

class CCandidateListApp {

public: void DestoryCandidateList(); BOOL IsCandidateListEmpty(); BOOL RemoveCandidateList(BYTE *ucAID,BYTE ucAIDLen); BOOL InsertCandidateList(APPITEM &pItem); CCandidateListApp(); virtual ~CCandidateListApp(); CList m_listOfApps; };

#endif

// !defined(AFX_CANDIDATELISTAPP_H__ACA72C65_0814_479B_9AB5_3BFC42284E4C__INCLUDED_)

// CandidateListApp.cpp: implementation of the CCandidateListApp class. //

//////////////////////////////////////////////////////////////////////

#include \

#include \

#ifdef _DEBUG #undef THIS_FILE

static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif

////////////////////////////////////////////////////////////////////// // Construction/Destruction

//////////////////////////////////////////////////////////////////////

CCandidateListApp::CCandidateListApp() { }

CCandidateListApp::~CCandidateListApp() { DestoryCandidateList(); } /*

应用优先指示器 bit4-1:

0000-未指定优先级

xxxx-应用显示和选择的顺序,取值从1-15,最高优先级为1 */

//向候选列表插入新的数据项

BOOL CCandidateListApp::InsertCandidateList(APPITEM &pItem) { POSITION pos; APPITEM HeadItem; if (m_listOfApps.GetCount() == 0) { m_listOfApps.AddHead(pItem); } else { if((pItem.ucPriority & 0x0F) == 0) { m_listOfApps.AddTail(pItem); } else { pos = m_listOfApps.GetHeadPosition(); HeadItem = m_listOfApps.GetNext(pos); if ((HeadItem.ucPriority & 0x0F) == 0 || (HeadItem.ucPriority & 0x0F) > (pItem.ucPriority & 0x0F)) { m_listOfApps.InsertBefore(pos,pItem); } else { int i; for (i = 0; i < m_listOfApps.GetCount()-1;i++) { APPITEM TempItem; TempItem = m_listOfApps.GetNext(pos); if ((TempItem.ucPriority & 0x0F) == 0 || (TempItem.ucPriority & 0x0F) > (pItem.ucPriority & 0x0F)) { m_listOfApps.InsertBefore(pos,pItem); break; } } if (i == m_listOfApps.GetCount()-1) m_listOfApps.AddTail(pItem);

} } } return TRUE; }

//从候选列表中移除某个特定的数据项

BOOL CCandidateListApp::RemoveCandidateList(BYTE *ucAID, BYTE ucAIDLen) { POSITION pos; APPITEM TempItem; pos = m_listOfApps.GetHeadPosition(); for (int i = 0; i< m_listOfApps.GetCount();i++) { TempItem = m_listOfApps.GetNext(pos); if ((TempItem.ucAIDLen == ucAIDLen) && (0 == memcpy(TempItem.ucAID,ucAID,ucAIDLen))) { m_listOfApps.RemoveAt(pos); break; } } return TRUE; }

//判断候选列表是否为空

BOOL CCandidateListApp::IsCandidateListEmpty() { return (m_listOfApps.GetCount() > 0)?FALSE:TRUE; }

//销毁候选列表

void CCandidateListApp::DestoryCandidateList() { m_listOfApps.RemoveAll(); }

// ICParam.h: interface for the CICParam class. //

//////////////////////////////////////////////////////////////////////

#if !defined(AFX_ICPARAM_H__C61A7169_C356_48E6_8B8F_18201FE6EE23__INCLUDED_) #define AFX_ICPARAM_H__C61A7169_C356_48E6_8B8F_18201FE6EE23__INCLUDED_

#if _MSC_VER > 1000 #pragma once

#endif // _MSC_VER > 1000


PBOC代码回顾(1)(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《圆明园的毁灭》图片

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: