Xcos MVC: avoid copy constructor calls 84/19984/2
Paul Bignier [Sun, 29 Apr 2018 18:54:17 +0000 (20:54 +0200)]
Change-Id: I76e165f89d434004b2ec7b2d9bbb1d5d4bb3c116

scilab/modules/scicos/src/cpp/Controller.cpp
scilab/modules/scicos/src/cpp/Model.cpp
scilab/modules/scicos/src/cpp/view_scilab/Adapters.cpp
scilab/modules/scicos/src/cpp/view_scilab/ports_management.hxx

index e23eb4c..a5034cb 100644 (file)
@@ -50,7 +50,7 @@ Controller::SharedData::SharedData() :
 Controller::SharedData::~SharedData()
 {
     lock(&onViewsStructuralModification);
-    for (auto v : m_instance.allViews)
+    for (const auto& v : m_instance.allViews)
     {
         delete v;
     }
@@ -143,7 +143,7 @@ model::BaseObject* Controller::createBaseObject(kind_t k)
     unlock(&m_instance.onModelStructuralModification);
 
     lock(&m_instance.onViewsStructuralModification);
-    for (auto v : m_instance.allViews)
+    for (const auto& v : m_instance.allViews)
     {
         v->objectCreated(object->id(), object->kind());
     }
@@ -167,7 +167,7 @@ model::BaseObject* Controller::referenceBaseObject(model::BaseObject* o) const
 
     // not locked on purpose, this will allow referencing on View notification
     // lock(&m_instance.onViewsStructuralModification);
-    for (auto v : m_instance.allViews)
+    for (const auto& v : m_instance.allViews)
     {
         v->objectReferenced(o->id(), o->kind(), refCount);
     }
@@ -196,7 +196,7 @@ void Controller::deleteBaseObject(model::BaseObject* initial)
 
         // not locked on purpose, this will allow referencing on View notification
         // lock(&m_instance.onViewsStructuralModification);
-        for (auto v : m_instance.allViews)
+        for (const auto& v : m_instance.allViews)
         {
             v->objectUnreferenced(initial->id(), initial->kind(), refCount);
         }
@@ -256,7 +256,7 @@ void Controller::deleteBaseObject(model::BaseObject* initial)
 
     // notify first
     lock(&m_instance.onViewsStructuralModification);
-    for (auto v : m_instance.allViews)
+    for (const auto& v : m_instance.allViews)
     {
         v->objectDeleted(initial->id(), k);
     }
@@ -378,7 +378,7 @@ model::BaseObject* Controller::cloneBaseObject(cloned_t& mapped, model::BaseObje
         std::make_pair(initial->id(), cloned_pair_t(initial, cloned)));
 
     lock(&m_instance.onViewsStructuralModification);
-    for (auto v : m_instance.allViews)
+    for (const auto& v : m_instance.allViews)
     {
         v->objectCloned(initial->id(), o, k);
     }
index 7fd9a49..32d2043 100644 (file)
@@ -196,7 +196,7 @@ kind_t Model::getKind(ScicosID uid) const
 std::vector<model::BaseObject*> Model::getAll(kind_t k) const
 {
     std::vector<model::BaseObject*> all;
-    for (auto it : allObjects)
+    for (const auto& it : allObjects)
         if (it.second->kind() == k)
         {
             all.emplace_back(it.second);
index bda886d..8decc68 100644 (file)
@@ -82,7 +82,7 @@ Adapters::adapters_index_t Adapters::lookup_by_typename(const std::wstring& name
 
 std::wstring Adapters::get_typename(Adapters::adapters_index_t kind)
 {
-    for (auto it : adapters)
+    for (const auto& it : adapters)
     {
         if (it.kind == kind)
         {
index 1f1cfff..e088819 100644 (file)
@@ -710,7 +710,7 @@ bool update_ports_property(const Adaptor& adaptor, const object_properties_t por
     }
 
     // remove objects from the model after de-association
-    for (auto o : deletedObjects)
+    for (const auto& o : deletedObjects)
     {
         controller.deleteBaseObject(o);
     }