gusucode.com > 通用协议编解码模块C#源码程序 > 通用协议编解码模块/codec_src/Codec_src/MsgCodec/EnumTable.cpp

    // EnumTable.cpp: implementation of the CEnumTable class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "MsgCodec.h"
#include "EnumTable.h"

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


DEFINE_OBJECT_INDICATOR(EnumTable)
IMPLEMENT_OBJECT_CUSTOM_INIT(CEnumTable)

CEnumTable::CEnumTable()
{
	m_pEnumArray = NULL;
	m_pTableName = NULL;
	m_pTableDescription = NULL;
	m_nItemCount = 0;
}

CEnumTable::~CEnumTable()
{
}

BOOL CEnumTable::InitEnumTable(TEnumItemInfo *pEnumArray)
{
	if (pEnumArray)
	{
		m_pTableName = pEnumArray->szName;
		m_pTableDescription = pEnumArray->szDescription;
		m_pEnumArray = ++ pEnumArray;

		m_nItemCount = 0;
		while (! IS_ENUMARRAY_TERM(pEnumArray))
		{
			m_nItemCount ++;
			pEnumArray ++;
		}
		return TRUE;
	}
	return FALSE;
}

LPCTSTR CEnumTable::GetEnumTableName()
{
	return m_pTableName;
}

LPCTSTR CEnumTable::GetEnumTableDescription()
{
	return m_pTableDescription;
}

INT CEnumTable::GetEnumCount()
{
	return m_nItemCount;
}

INT CEnumTable::FindEnum(DWORD nValue)
{
	INT nIndex;
	for (nIndex = 0; nIndex < m_nItemCount; nIndex ++)
	{
		if (nValue == m_pEnumArray[nIndex].nValue)
			return nIndex;
	}

	return ENUM_INDEX_NOT_FOUND;
}

INT CEnumTable::FindEnum(LPCTSTR szName)
{
	if (szName)
	{
		INT nIndex;
		for (nIndex = 0; nIndex < m_nItemCount; nIndex ++)
		{
			if (::strcmp(szName, m_pEnumArray[nIndex].szName) == 0)
				return nIndex;
		}
	}

	return ENUM_INDEX_NOT_FOUND;
}

LPCTSTR CEnumTable::GetEnumName(INT nIndex)
{
	if ((nIndex >= 0) && (nIndex < m_nItemCount))
	{
		return m_pEnumArray[nIndex].szName;
	}
	return NULL;
}

BOOL CEnumTable::GetEnumValue(INT nIndex, DWORD &nValue)
{
	if ((nIndex >= 0) && (nIndex < m_nItemCount))
	{
		nValue = m_pEnumArray[nIndex].nValue;
		return TRUE;
	}
	return FALSE;
}

LPCTSTR CEnumTable::GetEnumDescription(INT nIndex)
{
	if ((nIndex >= 0) && (nIndex < m_nItemCount))
	{
		return m_pEnumArray[nIndex].szDescription;
	}
	return NULL;
}