/****************************************************************************** ** Function: TBLMGR_Constructor ** ** Notes: ** 1. This must be called prior to any other functions ** */ void TBLMGR_Constructor(TBLMGR_Class* TblMgrPtr, char* TblMgrFilePathName) { TblMgr = TblMgrPtr; /* ** Set all data and flags to zero. ** AttrErrCnt - Incremented by XML parser */ CFE_PSP_MemSet(&(TblMgr->ExObjTbl), 0, sizeof(TBLMGR_ExObjTbl)); TblMgr->ExObjTbl.LoadActive = TRUE; if (ParseXmlFile(TblMgrFilePathName, ExObjTblStartElement, ExObjTblEndElement) && TblMgr->ExObjTbl.AttrErrCnt == 0) { TblMgr->ExObjTbl.LastLoadValid = (EXOBJ_LoadTable(&(TblMgr->ExObjTbl.Local)) == TRUE); } /* End if successful table parse */ TblMgr->ExObjTbl.LoadActive = FALSE; } /* End TBLMGR_Constructor() */
/****************************************************************************** ** Function: TBLMGR_LoadExObjTableCmd ** */ boolean TBLMGR_LoadExObjTableCmd(const CFE_SB_MsgPtr_t MsgPtr) { const TBLMGR_LoadTblCmd *LoadTblCmd = (const TBLMGR_LoadTblCmd *) MsgPtr; int entry; /* ** Set all data and flags to zero. ** AttrErrCnt - Incremented by XML parser */ CFE_PSP_MemSet(&TblMgr->ExObjTbl, 0, sizeof(TBLMGR_ExObjTbl)); TblMgr->ExObjTbl.LoadActive = TRUE; TblEntryId = 0; if (ParseXmlFile(LoadTblCmd->FileName, ExObjTblStartElement, ExObjTblEndElement) && TblMgr->ExObjTbl.AttrErrCnt == 0) { if (LoadTblCmd->LoadType == TBLMGR_LOAD_TBL_REPLACE) { TblMgr->ExObjTbl.LastLoadValid = (EXOBJ_LoadTable(&(TblMgr->ExObjTbl.Local)) == TRUE); } /* End if replace entire table */ else if (LoadTblCmd->LoadType == TBLMGR_LOAD_TBL_UPDATE) { TblMgr->ExObjTbl.LastLoadValid = TRUE; for (entry=0; entry < EXOBJ_TBL_MAX_ENTRY_ID; entry++) { if (TblMgr->ExObjTbl.Modified[entry]) { if (!EXOBJ_LoadTableEntry(entry, &(TblMgr->ExObjTbl.Local.Entry[entry]))) TblMgr->ExObjTbl.LastLoadValid = FALSE; } } /* End pkt loop */ } /* End if update individual records */ else { CFE_EVS_SendEvent(TBLMGR_CMD_LOAD_TYPE_ERR_EID,CFE_EVS_ERROR,"TBLMGR: Invalid table command load type %d",LoadTblCmd->LoadType); } } /* End if successful parse */ else { CFE_EVS_SendEvent(TBLMGR_CMD_LOAD_PARSE_ERR_EID,CFE_EVS_ERROR,"TBLMGR: Table Parsing failure for file %s"); } return TblMgr->ExObjTbl.LastLoadValid; } /* End of TBLMGR_LoadExObjTableCmd() */
int _tmain(int argc, _TCHAR* argv[]) { CoInitialize(NULL); // COMの初期化処理 // ParseXmlFile( _T("books.xml") ); ParseXmlFile( _T(".\\test.xml") ); CoUninitialize(); // COMの終了処理 _getch(); return 0; }