CanMessage* CanAccess::txtMessage(const char* string) { boolean msg = false; boolean ext = false; long eid = 0; short sid = 0; if (*string == 'X' || *string == 'R') { msg = (string[0] == 'X'); ext = true; string += 2; eid = ((long)parseHexDigit(*string++)) << 28; eid |= ((long)parseHexDigit(*string++)) << 24; ++string; eid |= ((long)parseHexDigit(*string++)) << 20; eid |= ((long)parseHexDigit(*string++)) << 16; eid |= ((long)parseHexDigit(*string++)) << 12; ++string; eid |= ((long)parseHexDigit(*string++)) << 8; eid |= ((long)parseHexDigit(*string++)) << 4; eid |= ((long)parseHexDigit(*string++)); } else if (*string == 'S' || *string == 'r') { msg = (string[0] == 'S'); ext = false; string += 2; sid |= ((short)parseHexDigit(*string++)) << 8; sid |= ((short)parseHexDigit(*string++)) << 4; sid |= ((short)parseHexDigit(*string++)); } else { return NULL; } string += 3; byte length = parseHexDigit(*string++); if (length < 0 || 8 < length) return NULL; byte data[8]; string += 3; for (int p = 0; p < length; ++p) { data[p] = (parseHexDigit(*string++) << 4); data[p] |= parseHexDigit(*string++); ++string; } if (msg && ext) return &extMessage(eid, length, data); else if (msg) return &stdMessage(sid, length, data); else if (ext) return &extRequest(eid, length, data); else return &stdRequest(sid, length, data); }
void ApplyMeasureNowDialog::displayResults() { analysis::RubyMeasure rubyMeasure = m_currentMeasureItem->measure(); try{ m_reloadPath = m_job->allFiles().getLastByFilename("out.osm").fullPath; }catch(...){ } m_mainPaneStackedWidget->setCurrentIndex(m_outputPageIdx); m_timer->stop(); this->okButton()->setText(ACCEPT_CHANGES); this->okButton()->show(); if (m_reloadPath){ this->okButton()->setEnabled(true); }else{ this->okButton()->setEnabled(false); } this->backButton()->show(); this->backButton()->setEnabled(true); this->cancelButton()->setEnabled(true); runmanager::JobErrors jobErrors = m_job->errors(); OS_ASSERT(m_jobItemView); m_jobItemView->update(rubyMeasure, *m_bclMeasure, jobErrors, *m_job); m_jobItemView->setExpanded(true); if(!jobErrors.errors().empty()){ this->okButton()->setDisabled(true); } m_advancedOutput.clear(); // DLM: always show these files if they exist? //if(!jobErrors.succeeded()){ try{ runmanager::Files files(m_job->outputFiles()); openstudio::path stdErrPath = files.getLastByFilename("stderr").fullPath; std::ifstream ifs(toString(stdErrPath).c_str()); std::string stdMessage((std::istreambuf_iterator<char>(ifs)), std::istreambuf_iterator<char>()); ifs.close(); m_advancedOutput = toQString(stdMessage); m_advancedOutput += QString("\n"); }catch(std::exception&){ } //} // DLM: always show these files if they exist? //if(!jobErrors.succeeded()){ try{ runmanager::Files files(m_job->outputFiles()); openstudio::path stdOutPath = files.getLastByFilename("stdout").fullPath; std::ifstream ifs(toString(stdOutPath).c_str()); std::string stdMessage((std::istreambuf_iterator<char>(ifs)), std::istreambuf_iterator<char>()); ifs.close(); m_advancedOutput += toQString(stdMessage); }catch(std::exception&){ } //} }