From 86b258f727212fde4cf4a7a5160bfe7d2b7e0972 Mon Sep 17 00:00:00 2001 From: Lukas Matena <lukasmatena@seznam.cz> Date: Fri, 6 Sep 2019 17:46:55 +0200 Subject: [PATCH] Fixed many warnings in following files: src/slic3r/Config/Snapshot.cpp src/slic3r/GUI/Field.cpp src/slic3r/GUI/GLToolbar.cpp src/slic3r/GUI/GUI_ObjectList.cpp src/slic3r/GUI/GUI_ObjectList.hpp src/slic3r/GUI/Plater.cpp src/slic3r/GUI/Plater.hpp src/slic3r/GUI/PresetBundle.cpp src/slic3r/GUI/Tab.cpp src/slic3r/GUI/wxExtensions.cpp --- src/slic3r/Config/Snapshot.cpp | 8 ++++---- src/slic3r/GUI/Field.cpp | 2 +- src/slic3r/GUI/GLToolbar.cpp | 13 +++++-------- src/slic3r/GUI/GUI_ObjectList.cpp | 12 ++++++------ src/slic3r/GUI/GUI_ObjectList.hpp | 6 +++--- src/slic3r/GUI/Plater.cpp | 14 +++++++------- src/slic3r/GUI/Plater.hpp | 6 +++--- src/slic3r/GUI/PresetBundle.cpp | 11 ++++++----- src/slic3r/GUI/Tab.cpp | 16 ++++++++-------- src/slic3r/GUI/wxExtensions.cpp | 28 ++++++++++++++-------------- 10 files changed, 57 insertions(+), 59 deletions(-) diff --git a/src/slic3r/Config/Snapshot.cpp b/src/slic3r/Config/Snapshot.cpp index 3757ec25b..2aebd0c72 100644 --- a/src/slic3r/Config/Snapshot.cpp +++ b/src/slic3r/Config/Snapshot.cpp @@ -202,9 +202,9 @@ void Snapshot::export_selections(AppConfig &config) const config.clear_section("presets"); config.set("presets", "print", print); config.set("presets", "filament", filaments.front()); - for (int i = 1; i < filaments.size(); ++i) { + for (unsigned i = 1; i < filaments.size(); ++i) { char name[64]; - sprintf(name, "filament_%d", i); + sprintf(name, "filament_%u", i); config.set("presets", name, filaments[i]); } config.set("presets", "printer", printer); @@ -373,9 +373,9 @@ const Snapshot& SnapshotDB::take_snapshot(const AppConfig &app_config, Snapshot: snapshot.print = app_config.get("presets", "print"); snapshot.filaments.emplace_back(app_config.get("presets", "filament")); snapshot.printer = app_config.get("presets", "printer"); - for (unsigned int i = 1; i < 1000; ++ i) { + for (unsigned i = 1; i < 1000; ++ i) { char name[64]; - sprintf(name, "filament_%d", i); + sprintf(name, "filament_%u", i); if (! app_config.has("presets", name)) break; snapshot.filaments.emplace_back(app_config.get("presets", name)); diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index f0384329d..07d75c947 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -854,7 +854,7 @@ void Choice::set_value(const boost::any& value, bool change_event) text_value = wxString::Format(_T("%i"), int(boost::any_cast<int>(value))); else text_value = boost::any_cast<wxString>(value); - auto idx = 0; + size_t idx = 0; for (auto el : m_opt.enum_values) { if (el == text_value) diff --git a/src/slic3r/GUI/GLToolbar.cpp b/src/slic3r/GUI/GLToolbar.cpp index caadec61c..51d787d9d 100644 --- a/src/slic3r/GUI/GLToolbar.cpp +++ b/src/slic3r/GUI/GLToolbar.cpp @@ -861,11 +861,10 @@ int GLToolbar::contains_mouse_horizontal(const Vec2d& mouse_pos, const GLCanvas3 float left = m_layout.left + scaled_border; float top = m_layout.top - scaled_border; - int id = -1; - - for (GLToolbarItem* item : m_items) + + for (size_t id=0; id<m_items.size(); ++id) { - ++id; + GLToolbarItem* item = m_items[id]; if (!item->is_visible()) continue; @@ -936,11 +935,9 @@ int GLToolbar::contains_mouse_vertical(const Vec2d& mouse_pos, const GLCanvas3D& float left = m_layout.left + scaled_border; float top = m_layout.top - scaled_border; - int id = -1; - - for (GLToolbarItem* item : m_items) + for (size_t id=0; id<m_items.size(); ++id) { - ++id; + GLToolbarItem* item = m_items[id]; if (!item->is_visible()) continue; diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index b14498087..c8812abbf 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -422,7 +422,7 @@ DynamicPrintConfig& ObjectList::get_item_config(const wxDataViewItem& item) cons (*m_objects)[obj_idx]->config; } -wxDataViewColumn* ObjectList::create_objects_list_extruder_column(int extruders_count) +wxDataViewColumn* ObjectList::create_objects_list_extruder_column(size_t extruders_count) { wxArrayString choices; choices.Add(_(L("default"))); @@ -435,9 +435,9 @@ wxDataViewColumn* ObjectList::create_objects_list_extruder_column(int extruders_ return column; } -void ObjectList::update_extruder_values_for_items(const int max_extruder) +void ObjectList::update_extruder_values_for_items(const size_t max_extruder) { - for (int i = 0; i < m_objects->size(); ++i) + for (size_t i = 0; i < m_objects->size(); ++i) { wxDataViewItem item = m_objects_model->GetItemById(i); if (!item) continue; @@ -453,7 +453,7 @@ void ObjectList::update_extruder_values_for_items(const int max_extruder) m_objects_model->SetValue(extruder, item, colExtruder); if (object->volumes.size() > 1) { - for (auto id = 0; id < object->volumes.size(); id++) { + for (size_t id = 0; id < object->volumes.size(); id++) { item = m_objects_model->GetItemByVolumeId(i, id); if (!item) continue; if (!object->volumes[id]->config.has("extruder") || @@ -468,7 +468,7 @@ void ObjectList::update_extruder_values_for_items(const int max_extruder) } } -void ObjectList::update_objects_list_extruder_column(int extruders_count) +void ObjectList::update_objects_list_extruder_column(size_t extruders_count) { if (!this) return; // #ys_FIXME if (printer_technology() == ptSLA) @@ -3262,7 +3262,7 @@ void ObjectList::change_part_type() void ObjectList::last_volume_is_deleted(const int obj_idx) { - if (obj_idx < 0 || obj_idx >= m_objects->size() || (*m_objects)[obj_idx]->volumes.size() != 1) + if (obj_idx < 0 || size_t(obj_idx) >= m_objects->size() || (*m_objects)[obj_idx]->volumes.size() != 1) return; auto volume = (*m_objects)[obj_idx]->volumes.front(); diff --git a/src/slic3r/GUI/GUI_ObjectList.hpp b/src/slic3r/GUI/GUI_ObjectList.hpp index d19a1002d..13d1106fc 100644 --- a/src/slic3r/GUI/GUI_ObjectList.hpp +++ b/src/slic3r/GUI/GUI_ObjectList.hpp @@ -182,15 +182,15 @@ public: void create_objects_ctrl(); void create_popup_menus(); - wxDataViewColumn* create_objects_list_extruder_column(int extruders_count); - void update_objects_list_extruder_column(int extruders_count); + wxDataViewColumn* create_objects_list_extruder_column(size_t extruders_count); + void update_objects_list_extruder_column(size_t extruders_count); // show/hide "Extruder" column for Objects List void set_extruder_column_hidden(const bool hide) const; // update extruder in current config void update_extruder_in_config(const wxDataViewItem& item); // update changed name in the object model void update_name_in_model(const wxDataViewItem& item) const; - void update_extruder_values_for_items(const int max_extruder); + void update_extruder_values_for_items(const size_t max_extruder); void init_icons(); void msw_rescale_icons(); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index db8a52e17..eef3a5c54 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -883,7 +883,7 @@ void Sidebar::init_filament_combo(PresetComboBox **combo, const int extr_idx) { sizer_filaments->Add(combo_and_btn_sizer, 1, wxEXPAND | wxBOTTOM, 1); } -void Sidebar::remove_unused_filament_combos(const int current_extruder_count) +void Sidebar::remove_unused_filament_combos(const size_t current_extruder_count) { if (current_extruder_count >= p->combos_filament.size()) return; @@ -926,9 +926,9 @@ void Sidebar::update_presets(Preset::Type preset_type) switch (preset_type) { case Preset::TYPE_FILAMENT: { - const int extruder_cnt = print_tech != ptFFF ? 1 : + const size_t extruder_cnt = print_tech != ptFFF ? 1 : dynamic_cast<ConfigOptionFloats*>(preset_bundle.printers.get_edited_preset().config.option("nozzle_diameter"))->values.size(); - const int filament_cnt = p->combos_filament.size() > extruder_cnt ? extruder_cnt : p->combos_filament.size(); + const size_t filament_cnt = p->combos_filament.size() > extruder_cnt ? extruder_cnt : p->combos_filament.size(); if (filament_cnt == 1) { // Single filament printer, synchronize the filament presets. @@ -1051,7 +1051,7 @@ wxButton* Sidebar::get_wiping_dialog_button() return p->frequently_changed_parameters->get_wiping_dialog_button(); } -void Sidebar::update_objects_list_extruder_column(int extruders_count) +void Sidebar::update_objects_list_extruder_column(size_t extruders_count) { p->object_list->update_objects_list_extruder_column(extruders_count); } @@ -4684,7 +4684,7 @@ void Plater::undo_redo_topmost_string_getter(const bool is_undo, std::string& ou out_text = ""; } -void Plater::on_extruders_change(int num_extruders) +void Plater::on_extruders_change(size_t num_extruders) { auto& choices = sidebar().combos_filament(); @@ -4693,7 +4693,7 @@ void Plater::on_extruders_change(int num_extruders) wxWindowUpdateLocker noUpdates_scrolled_panel(&sidebar()/*.scrolled_panel()*/); - int i = choices.size(); + size_t i = choices.size(); while ( i < num_extruders ) { PresetComboBox* choice/*{ nullptr }*/; @@ -4880,7 +4880,7 @@ void Plater::changed_objects(const std::vector<size_t>& object_idxs) if (object_idxs.empty()) return; - for (int obj_idx : object_idxs) + for (size_t obj_idx : object_idxs) { if (obj_idx < p->model.objects.size()) // recenter and re - align to Z = 0 diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index 2d104bc46..6b488fef1 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -89,7 +89,7 @@ public: ~Sidebar(); void init_filament_combo(PresetComboBox **combo, const int extr_idx); - void remove_unused_filament_combos(const int current_extruder_count); + void remove_unused_filament_combos(const size_t current_extruder_count); void update_all_preset_comboboxes(); void update_presets(Slic3r::Preset::Type preset_type); void update_mode_sizer() const; @@ -105,7 +105,7 @@ public: ConfigOptionsGroup* og_freq_chng_params(const bool is_fff); wxButton* get_wiping_dialog_button(); - void update_objects_list_extruder_column(int extruders_count); + void update_objects_list_extruder_column(size_t extruders_count); void show_info_sizer(); void show_sliced_info_sizer(const bool show); void enable_buttons(bool enable); @@ -209,7 +209,7 @@ public: void enter_gizmos_stack(); void leave_gizmos_stack(); - void on_extruders_change(int extruders_count); + void on_extruders_change(size_t extruders_count); void on_config_change(const DynamicPrintConfig &config); // On activating the parent window. void on_activate(); diff --git a/src/slic3r/GUI/PresetBundle.cpp b/src/slic3r/GUI/PresetBundle.cpp index 3acff7689..d9e90333c 100644 --- a/src/slic3r/GUI/PresetBundle.cpp +++ b/src/slic3r/GUI/PresetBundle.cpp @@ -366,7 +366,7 @@ void PresetBundle::load_selections(const AppConfig &config, const std::string &p this->filament_presets = { filaments.get_selected_preset_name() }; for (unsigned int i = 1; i < 1000; ++ i) { char name[64]; - sprintf(name, "filament_%d", i); + sprintf(name, "filament_%u", i); if (! config.has("presets", name)) break; this->filament_presets.emplace_back(remove_ini_suffix(config.get("presets", name))); @@ -388,11 +388,12 @@ void PresetBundle::export_selections(AppConfig &config) config.clear_section("presets"); config.set("presets", "print", prints.get_selected_preset_name()); config.set("presets", "filament", filament_presets.front()); - for (int i = 1; i < filament_presets.size(); ++i) { + for (unsigned i = 1; i < filament_presets.size(); ++i) { char name[64]; - sprintf(name, "filament_%d", i); + sprintf(name, "filament_%u", i); config.set("presets", name, filament_presets[i]); } + config.set("presets", "sla_print", sla_prints.get_selected_preset_name()); config.set("presets", "sla_material", sla_materials.get_selected_preset_name()); config.set("presets", "printer", printers.get_selected_preset_name()); @@ -779,7 +780,7 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool Preset *loaded = nullptr; if (is_external) loaded = &this->filaments.load_external_preset(name_or_path, name, - (i < old_filament_profile_names->values.size()) ? old_filament_profile_names->values[i] : "", + (i < int(old_filament_profile_names->values.size())) ? old_filament_profile_names->values[i] : "", std::move(cfg), i == 0); else { // Used by the config wizard when creating a custom setup. @@ -1262,7 +1263,7 @@ void PresetBundle::update_multi_material_filament_presets() // Now verify if wiping_volumes_matrix has proper size (it is used to deduce number of extruders in wipe tower generator): std::vector<double> old_matrix = this->project_config.option<ConfigOptionFloats>("wiping_volumes_matrix")->values; - size_t old_number_of_extruders = int(sqrt(old_matrix.size())+EPSILON); + size_t old_number_of_extruders = size_t(sqrt(old_matrix.size())+EPSILON); if (num_extruders != old_number_of_extruders) { // First verify if purging volumes presets for each extruder matches number of extruders std::vector<double>& extruders = this->project_config.option<ConfigOptionFloats>("wiping_volumes_extruders")->values; diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 77bd613d5..c87626a48 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -232,7 +232,7 @@ void Tab::create_preset_tab() //! select_preset(m_presets_choice->GetStringSelection().ToUTF8().data()); //! we doing next: int selected_item = m_presets_choice->GetSelection(); - if (m_selected_preset_item == selected_item && !m_presets->current_is_dirty()) + if (m_selected_preset_item == size_t(selected_item) && !m_presets->current_is_dirty()) return; if (selected_item >= 0) { std::string selected_string = m_presets_choice->GetString(selected_item).ToUTF8().data(); @@ -489,7 +489,7 @@ template<class T> void add_correct_opts_to_options_list(const std::string &opt_key, std::map<std::string, int>& map, Tab *tab, const int& value) { T *opt_cur = static_cast<T*>(tab->m_config->option(opt_key)); - for (int i = 0; i < opt_cur->values.size(); i++) + for (size_t i = 0; i < opt_cur->values.size(); i++) map.emplace(opt_key + "#" + std::to_string(i), value); } @@ -1808,7 +1808,7 @@ void TabPrinter::build_fff() optgroup->append_single_option_line("single_extruder_multi_material"); optgroup->m_on_change = [this, optgroup](t_config_option_key opt_key, boost::any value) { - size_t extruders_count = boost::any_cast<int>(optgroup->get_value("extruders_count")); + size_t extruders_count = boost::any_cast<size_t>(optgroup->get_value("extruders_count")); wxTheApp->CallAfter([this, opt_key, value, extruders_count]() { if (opt_key == "extruders_count" || opt_key == "single_extruder_multi_material") { extruders_count_changed(extruders_count); @@ -2228,7 +2228,7 @@ void TabPrinter::build_unregular_pages() // Add/delete Kinematics page according to is_marlin_flavor size_t existed_page = 0; - for (int i = n_before_extruders; i < m_pages.size(); ++i) // first make sure it's not there already + for (size_t i = n_before_extruders; i < m_pages.size(); ++i) // first make sure it's not there already if (m_pages[i]->title().find(_(L("Machine limits"))) != std::string::npos) { if (!is_marlin_flavor || m_rebuild_kinematics_page) m_pages.erase(m_pages.begin() + i); @@ -2253,7 +2253,7 @@ void TabPrinter::build_unregular_pages() (m_has_single_extruder_MM_page && m_extruders_count == 1)) { // if we have a single extruder MM setup, add a page with configuration options: - for (int i = 0; i < m_pages.size(); ++i) // first make sure it's not there already + for (size_t i = 0; i < m_pages.size(); ++i) // first make sure it's not there already if (m_pages[i]->title().find(_(L("Single extruder MM setup"))) != std::string::npos) { m_pages.erase(m_pages.begin() + i); break; @@ -2399,8 +2399,8 @@ void TabPrinter::on_preset_loaded() { // update the extruders count field auto *nozzle_diameter = dynamic_cast<const ConfigOptionFloats*>(m_config->option("nozzle_diameter")); - int extruders_count = nozzle_diameter->values.size(); - set_value("extruders_count", extruders_count); + size_t extruders_count = nozzle_diameter->values.size(); + set_value("extruders_count", int(extruders_count)); // update the GUI field according to the number of nozzle diameters supplied extruders_count_changed(extruders_count); } @@ -2538,7 +2538,7 @@ void TabPrinter::update_fff() DynamicPrintConfig new_conf = *m_config; if (dialog.ShowModal() == wxID_YES) { auto wipe = static_cast<ConfigOptionBools*>(m_config->option("wipe")->clone()); - for (int w = 0; w < wipe->values.size(); w++) + for (size_t w = 0; w < wipe->values.size(); w++) wipe->values[w] = false; new_conf.set_key_value("wipe", wipe); } diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index 71eaa3fc8..5f1e779d6 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -940,7 +940,7 @@ wxDataViewItem ObjectDataViewModel::Delete(const wxDataViewItem &item) // node can be deleted by the Delete, let's check its type while we safely can bool is_instance_root = (node->m_type & itInstanceRoot); - for (int i = node->GetChildCount() - 1; i >= (is_instance_root ? 1 : 0); i--) + for (int i = int(node->GetChildCount() - 1); i >= (is_instance_root ? 1 : 0); i--) Delete(wxDataViewItem(node->GetNthChild(i))); return parent; @@ -1020,7 +1020,7 @@ wxDataViewItem ObjectDataViewModel::Delete(const wxDataViewItem &item) { int vol_cnt = 0; int vol_idx = 0; - for (int i = 0; i < node_parent->GetChildCount(); ++i) { + for (size_t i = 0; i < node_parent->GetChildCount(); ++i) { if (node_parent->GetNthChild(i)->GetType() == itVolume) { vol_idx = i; vol_cnt++; @@ -1059,7 +1059,7 @@ wxDataViewItem ObjectDataViewModel::Delete(const wxDataViewItem &item) else { auto it = find(m_objects.begin(), m_objects.end(), node); - auto id = it - m_objects.begin(); + size_t id = it - m_objects.begin(); if (it != m_objects.end()) { // Delete all sub-items @@ -1230,7 +1230,7 @@ void ObjectDataViewModel::DeleteSettings(const wxDataViewItem& parent) wxDataViewItem ObjectDataViewModel::GetItemById(int obj_idx) { - if (obj_idx >= m_objects.size()) + if (size_t(obj_idx) >= m_objects.size()) { printf("Error! Out of objects range.\n"); return wxDataViewItem(0); @@ -1241,7 +1241,7 @@ wxDataViewItem ObjectDataViewModel::GetItemById(int obj_idx) wxDataViewItem ObjectDataViewModel::GetItemByVolumeId(int obj_idx, int volume_idx) { - if (obj_idx >= m_objects.size() || obj_idx < 0) { + if (size_t(obj_idx) >= m_objects.size()) { printf("Error! Out of objects range.\n"); return wxDataViewItem(0); } @@ -1265,7 +1265,7 @@ wxDataViewItem ObjectDataViewModel::GetItemByVolumeId(int obj_idx, int volume_id wxDataViewItem ObjectDataViewModel::GetItemById(const int obj_idx, const int sub_obj_idx, const ItemType parent_type) { - if (obj_idx >= m_objects.size() || obj_idx < 0) { + if (size_t(obj_idx) >= m_objects.size()) { printf("Error! Out of objects range.\n"); return wxDataViewItem(0); } @@ -1294,7 +1294,7 @@ wxDataViewItem ObjectDataViewModel::GetItemByLayerId(int obj_idx, int layer_idx) wxDataViewItem ObjectDataViewModel::GetItemByLayerRange(const int obj_idx, const t_layer_height_range& layer_range) { - if (obj_idx >= m_objects.size() || obj_idx < 0) { + if (size_t(obj_idx) >= m_objects.size()) { printf("Error! Out of objects range.\n"); return wxDataViewItem(0); } @@ -1411,13 +1411,13 @@ int ObjectDataViewModel::GetRowByItem(const wxDataViewItem& item) const int row_num = 0; - for (int i = 0; i < m_objects.size(); i++) + for (size_t i = 0; i < m_objects.size(); i++) { row_num++; if (item == wxDataViewItem(m_objects[i])) return row_num; - for (int j = 0; j < m_objects[i]->GetChildCount(); j++) + for (size_t j = 0; j < m_objects[i]->GetChildCount(); j++) { row_num++; ObjectDataViewModelNode* cur_node = m_objects[i]->GetNthChild(j); @@ -1429,7 +1429,7 @@ int ObjectDataViewModel::GetRowByItem(const wxDataViewItem& item) const if (cur_node->m_type == itInstanceRoot) { row_num++; - for (int t = 0; t < cur_node->GetChildCount(); t++) + for (size_t t = 0; t < cur_node->GetChildCount(); t++) { row_num++; if (item == wxDataViewItem(cur_node->GetNthChild(t))) @@ -1503,7 +1503,7 @@ bool ObjectDataViewModel::SetValue(const wxVariant &variant, const wxDataViewIte bool ObjectDataViewModel::SetValue(const wxVariant &variant, const int item_idx, unsigned int col) { - if (item_idx < 0 || item_idx >= m_objects.size()) + if (size_t(item_idx) >= m_objects.size()) return false; return m_objects[item_idx]->SetValue(variant, col); @@ -1662,7 +1662,7 @@ wxDataViewItem ObjectDataViewModel::GetItemByType(const wxDataViewItem &parent_i if (node->GetChildCount() == 0) return wxDataViewItem(0); - for (int i = 0; i < node->GetChildCount(); i++) { + for (size_t i = 0; i < node->GetChildCount(); i++) { if (node->GetNthChild(i)->m_type == type) return wxDataViewItem((void*)node->GetNthChild(i)); } @@ -2145,7 +2145,7 @@ void DoubleSlider::draw_scroll_line(wxDC& dc, const int lower_pos, const int hig wxCoord segm_end_x = is_horizontal() ? higher_pos : width*0.5 - 1; wxCoord segm_end_y = is_horizontal() ? height*0.5 - 1 : higher_pos-1; - for (int id = 0; id < m_line_pens.size(); id++) + for (size_t id = 0; id < m_line_pens.size(); id++) { dc.SetPen(*m_line_pens[id]); dc.DrawLine(line_beg_x, line_beg_y, line_end_x, line_end_y); @@ -2494,7 +2494,7 @@ void DoubleSlider::draw_colored_band(wxDC& dc) dc.SetBrush(clr); dc.DrawRectangle(main_band); - int i = 1; + size_t i = 1; for (auto tick : m_ticks) { if (i == colors_cnt)