1 2 #include "workspaceparserthread.h" 3 4 #include <sdk.h> 5 #ifndef CB_PRECOMP 6 #include <logmanager.h> 7 #endif 8 9 #include "parserthreadf.h" 10 #include "nativeparserf.h" 11 12 wxMutex s_WorkspaceParserMutex; 13 wxMutex s_NewTokensMutex; 14 WorkspaceParserThread(NativeParserF * parent,int idWSPThreadEvent)15WorkspaceParserThread::WorkspaceParserThread(NativeParserF* parent, int idWSPThreadEvent) : 16 m_pNativeParser(parent), 17 m_idWSPThreadEvent(idWSPThreadEvent) 18 { 19 } 20 ~WorkspaceParserThread()21WorkspaceParserThread::~WorkspaceParserThread() 22 { 23 } 24 Execute()25int WorkspaceParserThread::Execute() 26 { 27 s_WorkspaceParserMutex.Lock(); 28 ParseFiles(); 29 s_WorkspaceParserMutex.Unlock(); 30 31 return 0; 32 } 33 ParseFiles()34void WorkspaceParserThread::ParseFiles() 35 { 36 TokensArrayF* pTokens = new TokensArrayF(); 37 IncludeDB* pIncludeDB = new IncludeDB(); 38 wxArrayString* pWSFiles = m_pNativeParser->GetWSFiles(); 39 ArrayOfFortranSourceForm* pWSFileForms = m_pNativeParser->GetWSFileForms(); 40 wxArrayString* pWSProjFilenames = m_pNativeParser->GetWSFileProjFilenames(); 41 42 for (size_t i=0; i<pWSFiles->size(); i++) 43 { 44 ParserThreadF* thread = new ParserThreadF(pWSProjFilenames->Item(i), UnixFilename(pWSFiles->Item(i)), pTokens, 45 pWSFileForms->at(i), false, pIncludeDB); 46 thread->Parse(); 47 delete thread; 48 } 49 s_NewTokensMutex.Lock(); 50 m_pNativeParser->GetParser()->SetNewTokens(pTokens); 51 m_pNativeParser->GetParser()->SetNewIncludeDB(pIncludeDB); 52 s_NewTokensMutex.Unlock(); 53 54 wxCommandEvent event( wxEVT_COMMAND_ENTER, m_idWSPThreadEvent ); 55 m_pNativeParser->AddPendingEvent(event); 56 } 57