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; }