/** * handling error occured due to failed assertion * this error handler only works during parser phase since it uses * Token_t to know the line number * TODO: we need to make this function more general **/ void fortran_error_handler(int signum) { // get the current filename std::string sFilename = getCurrentFilename(); if (sFilename.size()==0) { fprintf(stderr, "ERROR while parsing the source code\n"); } else { SgScopeStatement* scope = astScopeStack.front(); SgStatement* lastStatement = scope; SgStatementPtrList statementList = scope->generateStatementList(); if (statementList.empty() == false) { lastStatement = statementList.back(); } int lineNumberOfLastStatement = (astScopeStack.empty() == false) ? lastStatement->get_file_info()->get_line() : 0; // get the latest token parsed if (lineNumberOfLastStatement > 0) std::cerr <<"FATAL ERROR in file "<<sFilename<<":"<<lineNumberOfLastStatement<<std::endl; else std::cerr <<"FATAL ERROR while parsing "<<sFilename<<std::endl; } fflush(NULL); // flush all stdio fortran_error_handler_end(); exit(-1); }
//-------------------------------------------------------------------------- void BaseFileDialog::ok() { MyGUI::LanguageManager& lang = MyGUI::LanguageManager::getInstance(); if(mCurrentBasename.empty()) { MessageBox* msgbox = new MessageBox; msgbox->setIcon(MessageBoxIcon::INFO); msgbox->setMessage("#{SelectFileBefore}"); msgbox->addButton(MessageBoxButton::OK); return; } size_t pos = mCurrentBasename.rfind('.'); if(pos == String::npos) { if(mCurrentFilter < getNumFilters()) { const Filter& filter = getFilter(mCurrentFilter); mCurrentBasename += filter.getDefaultExt(); } } String filename = getCurrentFilename(); if(mType == LOAD) { if(!ResourceGroupManager::getSingleton().resourceExists(mResourceGroup, filename)) { MessageBox* msgbox = new MessageBox; msgbox->setIcon(MessageBoxIcon::ERROR); msgbox->setMessage("#{FileNotFound}", "1", filename); msgbox->addButton(MessageBoxButton::OK); return; } } else if(mType == SAVE) { if(ResourceGroupManager::getSingleton().resourceExists(mResourceGroup, filename)) { MessageBox* msgbox = new MessageBox; msgbox->setIcon(MessageBoxIcon::QUEST); msgbox->setMessage("#{ConfirmOverwriteFile}", "1", filename); msgbox->addButton(MessageBoxButton::YES); msgbox->addButton(MessageBoxButton::NO); msgbox->eventChoice = MyGUI::newDelegate(this, &BaseFileDialog::notifyFileOverwriteMessageButton); return; } } ok_final(); }
//-------------------------------------------------------------------------- void BaseFileDialog::ok_final() { eventEndDialog(getCurrentFilename()); }