Browse Source

Reserve vectors in RackWidget methods to avoid reallocations.

tags/v2.0.0
Andrew Belt 4 years ago
parent
commit
69e4bb9deb
1 changed files with 6 additions and 0 deletions
  1. +6
    -0
      src/app/RackWidget.cpp

+ 6
- 0
src/app/RackWidget.cpp View File

@@ -737,11 +737,13 @@ ModuleWidget* RackWidget::getModule(int64_t moduleId) {


std::vector<ModuleWidget*> RackWidget::getModules() { std::vector<ModuleWidget*> RackWidget::getModules() {
std::vector<ModuleWidget*> mws; std::vector<ModuleWidget*> mws;
mws.reserve(internal->moduleContainer->children.size());
for (widget::Widget* w : internal->moduleContainer->children) { for (widget::Widget* w : internal->moduleContainer->children) {
ModuleWidget* mw = dynamic_cast<ModuleWidget*>(w); ModuleWidget* mw = dynamic_cast<ModuleWidget*>(w);
assert(mw); assert(mw);
mws.push_back(mw); mws.push_back(mw);
} }
mws.shrink_to_fit();
return mws; return mws;
} }


@@ -817,12 +819,14 @@ int RackWidget::getNumSelectedModules() {


std::vector<ModuleWidget*> RackWidget::getSelectedModules() { std::vector<ModuleWidget*> RackWidget::getSelectedModules() {
std::vector<ModuleWidget*> mws; std::vector<ModuleWidget*> mws;
mws.reserve(internal->moduleContainer->children.size());
for (widget::Widget* w : internal->moduleContainer->children) { for (widget::Widget* w : internal->moduleContainer->children) {
ModuleWidget* mw = dynamic_cast<ModuleWidget*>(w); ModuleWidget* mw = dynamic_cast<ModuleWidget*>(w);
assert(mw); assert(mw);
if (mw->selected()) if (mw->selected())
mws.push_back(mw); mws.push_back(mw);
} }
mws.shrink_to_fit();
return mws; return mws;
} }


@@ -1183,12 +1187,14 @@ CableWidget* RackWidget::getCable(int64_t cableId) {


std::vector<CableWidget*> RackWidget::getCompleteCables() { std::vector<CableWidget*> RackWidget::getCompleteCables() {
std::vector<CableWidget*> cws; std::vector<CableWidget*> cws;
cws.reserve(internal->cableContainer->children.size());
for (widget::Widget* w : internal->cableContainer->children) { for (widget::Widget* w : internal->cableContainer->children) {
CableWidget* cw = dynamic_cast<CableWidget*>(w); CableWidget* cw = dynamic_cast<CableWidget*>(w);
assert(cw); assert(cw);
if (cw->isComplete()) if (cw->isComplete())
cws.push_back(cw); cws.push_back(cw);
} }
cws.shrink_to_fit();
return cws; return cws;
} }




Loading…
Cancel
Save