// [[Rcpp::export]] SEXP parse_vector_(CharacterVector x, List collectorSpec, List locale_, const std::vector<std::string>& na) { Warnings warnings; int n = x.size(); LocaleInfo locale(locale_); boost::shared_ptr<Collector> col = Collector::create(collectorSpec, &locale); col->setWarnings(&warnings); col->resize(n); for (int i = 0; i < n; ++i) { Token t; if (x[i] == NA_STRING) { t = Token(TOKEN_MISSING, i, -1); } else { SEXP string = x[i]; t = Token(CHAR(string), CHAR(string) + Rf_length(string), i, -1, false); t.trim(); t.flagNA(na); } col->setValue(i, t); } return warnings.addAsAttribute(col->vector()); }
bool InspectionDetailsView::checkWarningConditions(Warnings &warnings, const QVariantMap &circuit_attributes, const QVariantMap &nominal_ins, const QVariantMap &inspection) { int id = warnings.value("id").toInt(); int num_conditions = warnings.warningConditionFunctionCount(id); for (int i = 0; i < num_conditions; ++i) { bool ok = true; double ins_value = evaluateExpression(inspection, warnings.warningConditionValueIns(id, i), circuit_attributes, &ok); if (!ok) return false; double nom_value = evaluateExpression(nominal_ins, warnings.warningConditionValueNom(id, i), circuit_attributes, &ok); if (!ok) return false; QString function = warnings.warningConditionFunction(id, i); if (function == "=" && ins_value == nom_value) {} else if (function == "!=" && ins_value != nom_value) {} else if (function == ">" && ins_value > nom_value) {} else if (function == ">=" && ins_value >= nom_value) {} else if (function == "<" && ins_value < nom_value) {} else if (function == "<=" && ins_value <= nom_value) {} else return false; } return true; }
// [[Rcpp::export]] RObject tokenize_(List sourceSpec, List tokenizerSpec, int n_max) { Warnings warnings; SourcePtr source = Source::create(sourceSpec); TokenizerPtr tokenizer = Tokenizer::create(tokenizerSpec); tokenizer->tokenize(source->begin(), source->end()); tokenizer->setWarnings(&warnings); std::vector<std::vector<std::string> > rows; for (Token t = tokenizer->nextToken(); t.type() != TOKEN_EOF; t = tokenizer->nextToken()) { if (n_max > 0 && t.row() >= (size_t) n_max) break; if (t.row() >= rows.size()) { rows.resize(t.row() + 1); } std::vector<std::string>& row = rows[t.row()]; if (t.col() >= row.size()) row.resize(t.col() + 1); row[t.col()] = t.asString(); } RObject out = wrap(rows); return warnings.addAsAttribute(out); }
void SgGameReader::PrintWarnings(ostream& out) const { Warnings warnings = m_warnings; // Print more severe warnings first, less severe warnings later PrintWarning(out, warnings, INVALID_BOARDSIZE, "Invalid board size"); PrintWarning(out, warnings, PROPERTY_WITHOUT_VALUE, "Property withour value"); SG_ASSERT(warnings.none()); }
QStringList InspectionDetailsView::listWarnings(Warnings &warnings, const QVariantMap &circuit_attributes, const QVariantMap &nominal_ins, const QVariantMap &inspection) { QStringList warnings_list; while (warnings.next()) { if (warnings.value("delay").toInt()) continue; if (checkWarningConditions(warnings, circuit_attributes, nominal_ins, inspection)) warnings_list << warnings.value("name").toString(); } return warnings_list; }
/** * Store a warning message that shall be stored and displayed to the user as a * list of warnings after the overall operation has finished. Duplicate warning * messages are automatically eliminated. */ inline void addWarning(const char* fmt, ...) { va_list arg; va_start(arg, fmt); const int SZ = 255 + strlen(fmt); char* buf = new char[SZ]; vsnprintf(buf, SZ, fmt, arg); Glib::ustring s = buf; delete [] buf; va_end(arg); std::cerr << _("WARNING:") << " " << s << std::endl << std::flush; g_warnings.insert(s); }
// [[Rcpp::export]] RObject read_tokens(List sourceSpec, List tokenizerSpec, ListOf<List> colSpecs, CharacterVector colNames, List locale_, int n_max = -1, bool progress = true) { Warnings warnings; LocaleInfo locale(locale_); SourcePtr source = Source::create(sourceSpec); TokenizerPtr tokenizer = Tokenizer::create(tokenizerSpec); tokenizer->tokenize(source->begin(), source->end()); tokenizer->setWarnings(&warnings); std::vector<CollectorPtr> collectors = collectorsCreate(colSpecs, &locale, &warnings); Progress progressBar; // Work out how many output columns we have size_t p = collectors.size(); size_t pOut = 0; for (size_t j = 0; j < p; ++j) { if (collectors[j]->skip()) continue; pOut++; } // Match colNames to with non-skipped collectors if (p != (size_t) colNames.size()) stop("colSpec and colNames must be same size"); CharacterVector outNames(pOut); int cj = 0; for (size_t j = 0; j < p; ++j) { if (collectors[j]->skip()) continue; outNames[cj] = colNames[j]; cj++; } size_t n = (n_max < 0) ? 1000 : n_max; collectorsResize(collectors, n); int i = -1, j = -1, cells = 0; for (Token t = tokenizer->nextToken(); t.type() != TOKEN_EOF; t = tokenizer->nextToken()) { if (progress && (cells++) % 250000 == 0) progressBar.show(tokenizer->progress()); if (t.col() == 0 && i != -1) checkColumns(&warnings, i, j, p); if (t.row() >= n) { if (n_max >= 0) break; // Estimate rows in full dataset n = (i / tokenizer->progress().first) * 1.2; collectorsResize(collectors, n); } if (t.col() < p) collectors[t.col()]->setValue(t.row(), t); i = t.row(); j = t.col(); } if (i != -1) checkColumns(&warnings, i, j, p); if (progress) progressBar.show(tokenizer->progress()); progressBar.stop(); if (i != (int) n - 1) { collectorsResize(collectors, i + 1); } // Save individual columns into a data frame List out(pOut); j = 0; for(CollectorItr cur = collectors.begin(); cur != collectors.end(); ++cur) { if ((*cur)->skip()) continue; out[j] = (*cur)->vector(); j++; } out.attr("class") = CharacterVector::create("tbl_df", "tbl", "data.frame"); out.attr("row.names") = IntegerVector::create(NA_INTEGER, -(i + 1)); out.attr("names") = outNames; return warnings.addAsAttribute(out); }
// [[Rcpp::export]] RObject read_tokens(List sourceSpec, List tokenizerSpec, ListOf<List> colSpecs, CharacterVector col_names, int n_max = -1, bool progress = true) { Warnings warnings; SourcePtr source = Source::create(sourceSpec); TokenizerPtr tokenizer = Tokenizer::create(tokenizerSpec); tokenizer->tokenize(source->begin(), source->end()); tokenizer->setWarnings(&warnings); std::vector<CollectorPtr> collectors = collectorsCreate(colSpecs, &warnings); Progress progressBar; size_t p = collectors.size(); // Work out how many output columns we have size_t pOut = 0; for(CollectorItr cur = collectors.begin(); cur != collectors.end(); ++cur) { if (!(*cur)->skip()) pOut++; } // Allow either one name for column, or one name per output col if (p != pOut && (size_t) col_names.size() == p) { CharacterVector col_names2(pOut); int cj = 0; for (size_t j = 0; j < p; ++j) { if (collectors[j]->skip()) continue; col_names2[cj++] = col_names[j]; } col_names = col_names2; } if (pOut != (size_t) col_names.size()) { Rcpp::stop("You have %i column names, but %i columns", col_names.size(), pOut); } size_t n = (n_max < 0) ? 1000 : n_max; collectorsResize(collectors, n); size_t i = 0, cells = 0; for (Token t = tokenizer->nextToken(); t.type() != TOKEN_EOF; t = tokenizer->nextToken()) { if (progress && (cells++) % 250000 == 0) progressBar.show(tokenizer->progress()); if (t.col() >= p) { warnings.addWarning(t.row(), t.col(), tfm::format("Only %i columns", p), ""); continue; } if (t.row() >= n) { if (n_max >= 0) break; // Estimate rows in full dataset n = (i / tokenizer->progress().first) * 1.2; collectorsResize(collectors, n); } collectors[t.col()]->setValue(t.row(), t); i = t.row(); } progressBar.show(tokenizer->progress()); progressBar.stop(); if (i <= n) { collectorsResize(collectors, i + 1); } // Save individual columns into a data frame List out(pOut); int j = 0; for(CollectorItr cur = collectors.begin(); cur != collectors.end(); ++cur) { if ((*cur)->skip()) continue; out[j] = (*cur)->vector(); j++; } out.attr("class") = CharacterVector::create("tbl_df", "tbl", "data.frame"); out.attr("row.names") = IntegerVector::create(NA_INTEGER, -(i + 1)); out.attr("names") = col_names; return warnings.addAsAttribute(out); }
void CombineInstrumentsDialog::combineSelectedInstruments() { std::vector<gig::Instrument*> instruments; std::vector<Gtk::TreeModel::Path> v = m_treeView.get_selection()->get_selected_rows(); for (uint i = 0; i < v.size(); ++i) { Gtk::TreeModel::iterator it = m_refTreeModel->get_iter(v[i]); Gtk::TreeModel::Row row = *it; Glib::ustring name = row[m_columns.m_col_name]; gig::Instrument* instrument = row[m_columns.m_col_instr]; #if DEBUG_COMBINE_INSTRUMENTS printf("Selection '%s' 0x%lx\n\n", name.c_str(), int64_t((void*)instrument)); #endif instruments.push_back(instrument); } g_warnings.clear(); try { // which main dimension was selected in the combo box? gig::dimension_t mainDimension; { Gtk::TreeModel::iterator iterType = m_comboDimType.get_active(); if (!iterType) throw gig::Exception("No dimension selected"); Gtk::TreeModel::Row rowType = *iterType; if (!rowType) throw gig::Exception("Something is wrong regarding dimension selection"); int iTypeID = rowType[m_comboDimsModel.m_type_id]; mainDimension = static_cast<gig::dimension_t>(iTypeID); } // now start the actual cobination task ... combineInstruments(instruments, m_gig, m_newCombinedInstrument, mainDimension); } catch (RIFF::Exception e) {; Gtk::MessageDialog msg(*this, e.Message, false, Gtk::MESSAGE_ERROR); msg.run(); return; } catch (...) { Glib::ustring txt = _("An unknown exception occurred!"); Gtk::MessageDialog msg(*this, txt, false, Gtk::MESSAGE_ERROR); msg.run(); return; } if (!g_warnings.empty()) { Glib::ustring txt = _( "Combined instrument was created successfully, but there were warnings:" ); txt += "\n\n"; for (Warnings::const_iterator itWarn = g_warnings.begin(); itWarn != g_warnings.end(); ++itWarn) { txt += "-> " + *itWarn + "\n"; } txt += "\n"; txt += _( "You might also want to check the console for further warnings and " "error messages." ); Gtk::MessageDialog msg(*this, txt, false, Gtk::MESSAGE_WARNING); msg.run(); } // no error occurred m_fileWasChanged = true; hide(); }