MiddleWares_YiHe 郑州颐和医院随访系统中间件

CellAUTOCREATE.cpp 2.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #include "StdAfx.h"
  2. #include "CellAUTOCREATE.h"
  3. #define CELL_LIST_HEAD CCellAUTOCREATE::ms_pHead
  4. CCellAUTOCREATE* CCellAUTOCREATE::ms_pHead = NULL;
  5. CCellAUTOCREATE::CCellAUTOCREATE(const CString& a_Name, pfnCreateCell a_fn) : m_Name(a_Name), m_pfnCreate(a_fn)
  6. {
  7. __setList();
  8. }
  9. CCellAUTOCREATE::~CCellAUTOCREATE(void)
  10. {
  11. }
  12. /*****************************************************************
  13. **【函数名称】 __setList
  14. **【函数功能】 设置动态创建链条
  15. **【参数】
  16. **【返回值】
  17. ****************************************************************/
  18. void CCellAUTOCREATE::__setList( void )
  19. {
  20. if(CELL_LIST_HEAD == NULL)
  21. {
  22. CELL_LIST_HEAD = this;
  23. }
  24. else
  25. {
  26. CCellAUTOCREATE* pTemp = CELL_LIST_HEAD;
  27. while(pTemp->m_pNext != NULL)
  28. pTemp = pTemp->m_pNext;
  29. pTemp->m_pNext = this;
  30. }
  31. m_pNext = NULL;
  32. }
  33. /*****************************************************************
  34. **【函数名称】 __createCell
  35. **【函数功能】 创建节点对象
  36. **【参数】
  37. **【返回值】 节点对象
  38. ****************************************************************/
  39. CCellBase* CCellAUTOCREATE::__createCell( void )
  40. {
  41. CCellBase* pCell = NULL;
  42. if(m_pfnCreate != NULL)
  43. pCell = (*m_pfnCreate)();
  44. return pCell;
  45. }
  46. /*****************************************************************
  47. **【函数名称】 fromName
  48. **【函数功能】 根据节点名字查找节点动态创建对象
  49. **【参数】 a_Name: 节点名字
  50. **【返回值】 动态创建对象
  51. ****************************************************************/
  52. CCellAUTOCREATE* CCellAUTOCREATE::fromName( const CString& a_Name )
  53. {
  54. CCellAUTOCREATE* pTemp = NULL;
  55. for(pTemp = CELL_LIST_HEAD; pTemp != NULL; pTemp = pTemp->m_pNext)
  56. {
  57. if(pTemp->m_Name == a_Name)
  58. return pTemp;
  59. }
  60. return NULL;
  61. }
  62. /*****************************************************************
  63. **【函数名称】 createCell
  64. **【函数功能】 根据节点名字生成对应节点对象
  65. **【参数】 a_Name: 节点名字
  66. **【返回值】 节点对象
  67. ****************************************************************/
  68. CCellBase* CCellAUTOCREATE::createCell( const CString& a_Name )
  69. {
  70. CCellAUTOCREATE* pTemp = fromName(a_Name);
  71. if(pTemp != NULL)
  72. return pTemp->__createCell();
  73. else
  74. return NULL;
  75. }