// attribute_addr.cpp: the implementation of the Address Attribute
#include "stdafx.h"
#include "attribute_addr.h"
// Construction/Destruction
CAttribute_Addr::CAttribute_Addr(void* pVal,int index) : CAttribute_Generic(index)
{
TCHAR CALLER[] = _T("CAttribute_Addr::CAttribute_Addr");
m_size = sizeof(LPVOID);
value = pVal;
LTRACE(LOG_TRLVL_VERBOSE,_T("%s - setting value to: %p, from entry: %p."),
CALLER,value,pVal);
ClassName = _T("CAttribute_Addr");
Kind = IDC_ATTR_ADDR;
}
CAttribute_Addr::~CAttribute_Addr()
{
}
void CAttribute_Addr::SetAttributeCast(CString& szDummy)
{
TCHAR CALLER[] = _T("CAttribute_Addr::SetAttributeCast");
try
{
size_t nLen = szDummy.GetLength();
_stscanf(szDummy.GetBuffer((int) nLen+1),_T("%p"),&value);
szDummy.ReleaseBuffer();
LTRACE(LOG_TRLVL_VERBOSE,_T("%s - setting value to: %p, from entry: %s."),
CALLER,value,szDummy.GetBuffer((int) nLen+1));
szDummy.ReleaseBuffer();
}
catch (...)
{
value = NULL;
}
}
void CAttribute_Addr::SetTmpAttributeCast(CString& szDummy)
{
return;
}
void CAttribute_Addr::Get_Value_Str(CString& szDummy)
{
szDummy.Format(_T("%p"),value);
}
void CAttribute_Addr::Get_Value_Str_tmp(CString& szDummy)
{
szDummy = IDC_NULL_TEXT;
return;
}
bool CAttribute_Addr::IsValueTmpIdentical()
{
return true;
}
BOOL CAttribute_Addr::IsValueTmpIdenticalMFC()
{
if (IsValueTmpIdentical())
return TRUE;
return FALSE;
}
void CAttribute_Addr::Empty_Value(bool ori)
{
TCHAR CALLER[] = _T("CAttribute_Addr::Empty_Value");
value = NULL;
LTRACE(LOG_TRLVL_VERBOSE,_T("%s - setting value to: %p, from entry: NULL."),
CALLER,value);
}
void CAttribute_Addr::Set_Pointer(void* pVal)
{
TCHAR CALLER[] = _T("CAttribute_Addr::Set_Pointer");
value = pVal;
LTRACE(LOG_TRLVL_VERBOSE,_T("%s - setting value to: %p, from entry: %p."),
CALLER,value,pVal);
}
void CAttribute_Addr::Set_tmp_Pointer(void* pVal)
{
return;
}
void CAttribute_Addr::GetAttributeBinData(BIN_KIND_TYPE& bType,BIN_KIND_SIZE& bSize,void*& pAttribute)
{
// pAttribute is a pointer to a TCHAR string of MAX_PATH size...
TCHAR* pczValue;
try
{
bType = BIN_KIND_ADDR;
pczValue = (TCHAR*) pAttribute;
_sntprintf(pczValue, MAX_PATH,_T("%p"),value);
#ifdef UNICODE
bSize = (BIN_KIND_SIZE) 2 * (_tcslen(pczValue)+1);
#else
bSize = (BIN_KIND_SIZE) _tcslen(pczValue) + 1;
#endif
}
catch (...)
{
bType = BIN_KIND_NULL;
bSize = 0;
pAttribute = NULL;
LTRACE(LOG_TRLVL_ERROR,_T("CAttribute_Addr::GetAttributeBinData - error: could not get pointer value."));
}
}
void CAttribute_Addr::SetAttributeBinData(BIN_KIND_TYPE bType,BIN_KIND_SIZE bSize,void* pAttribute)
{
if ( bType != BIN_KIND_ADDR )
return;
m_size = sizeof(void*);
// pAttribute is a pointer to a TCHAR string of MAX_PATH size...
TCHAR* pczValue;
try
{
pczValue = (TCHAR*) pAttribute;
_stscanf(pczValue,_T("%p"),&value);
}
catch (...)
{
value = NULL;
LTRACE(LOG_TRLVL_ERROR,_T("CAttribute_Addr::SetAttributeBinData - error: could not set value."));
}
}