📄 creditobject.cpp
字号:
// CreditObject.cpp
#include "stdafx.h"
#include "CreditServer_h.h"
#include "CreditObject.h"
long g_cComponents = 0;
CCreditVerification::CCreditVerification() : m_refCount(1)
{
InterlockedIncrement(&g_cComponents);
}
CCreditVerification::~CCreditVerification()
{
InterlockedDecrement(&g_cComponents);
}
// ICreditVerification
HRESULT __stdcall CCreditVerification::SetCardType(unsigned char* s)
{
if (0 == strcmp("Visa", (const char*)s))
m_type = Visa;
else if (0 == strcmp("MasterCard", (const char*)s))
m_type = MasterCard;
else m_type = Amex;
return S_OK;
}
HRESULT __stdcall CCreditVerification::VerifyCardNumber(long n)
{
if (m_type == Visa && (n % 2))
return S_OK;
else if (m_type == MasterCard && (n % 3))
return S_OK;
else if (m_type == Amex && (n % 5))
return S_OK;
else return E_INVALIDARG;
}
// IUnknown
HRESULT __stdcall CCreditVerification::QueryInterface(REFIID iid, void**pp)
{
if (NULL == pp)
return E_INVALIDARG;
*pp = NULL;
if (iid == IID_IUnknown)
*pp = this;
else if (iid == IID_ICreditVerification)
*pp = static_cast<ICreditVerification*>(this);
if (*pp)
{
AddRef();
return S_OK;
}
return E_NOINTERFACE;
}
ULONG __stdcall CCreditVerification::AddRef()
{
return InterlockedIncrement(&m_refCount);
}
ULONG __stdcall CCreditVerification::Release()
{
if (InterlockedDecrement(&m_refCount) == 0)
{
delete this;
return 0;
}
return m_refCount;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -