1 2 #include "adddirparserthread.h" 3 4 #ifndef CB_PRECOMP 5 #include <logmanager.h> 6 #endif 7 8 #include "parserthreadf.h" 9 #include "nativeparserf.h" 10 11 wxMutex s_AdditionalDirParserMutex; 12 wxMutex s_AdditionalDirNewTokensMutex; 13 ADirParserThread(NativeParserF * parent,int idADPThreadEvent)14ADirParserThread::ADirParserThread(NativeParserF* parent, int idADPThreadEvent) : 15 m_pNativeParser(parent), 16 m_idADPThreadEvent(idADPThreadEvent) 17 { 18 } 19 ~ADirParserThread()20ADirParserThread::~ADirParserThread() 21 { 22 } 23 Execute()24int ADirParserThread::Execute() 25 { 26 s_AdditionalDirParserMutex.Lock(); 27 ParseFiles(); 28 s_AdditionalDirParserMutex.Unlock(); 29 30 return 0; 31 } 32 ParseFiles()33void ADirParserThread::ParseFiles() 34 { 35 TokensArrayF* pTokens = new TokensArrayF(); 36 IncludeDB* pIncludeDB = new IncludeDB(); 37 wxArrayString* pADirFiles = m_pNativeParser->GetADirFiles(); 38 ArrayOfFortranSourceForm* pADirFileForms = m_pNativeParser->GetADirFileForms(); 39 40 for (size_t i=0; i<pADirFiles->size(); i++) 41 { 42 ParserThreadF* thread = new ParserThreadF(_T("#%&ThisIsAdditionalFileSearchDirectory&%#"), UnixFilename(pADirFiles->Item(i)), pTokens, 43 pADirFileForms->at(i), false, pIncludeDB); 44 thread->Parse(); 45 delete thread; 46 } 47 s_AdditionalDirNewTokensMutex.Lock(); 48 m_pNativeParser->GetParser()->SetNewADirTokens(pTokens); 49 m_pNativeParser->GetParser()->SetNewADirIncludeDB(pIncludeDB); 50 s_AdditionalDirNewTokensMutex.Unlock(); 51 52 wxCommandEvent event( wxEVT_COMMAND_ENTER, m_idADPThreadEvent ); 53 m_pNativeParser->AddPendingEvent(event); 54 } 55