Merge "Check whether the scene-graph RenderTask object is valid" into devel/master
[platform/core/uifw/dali-core.git] / dali / devel-api / common / owner-container.h
index 6890656..b010f41 100644 (file)
@@ -86,6 +86,47 @@ public:
   }
 
   /**
+   * @brief Erases all elements that satisfy the predicate from the OwnerContainer.
+   *
+   * @param[in] predicate The predicate
+   */
+  template<class Predicate>
+  void EraseIf(Predicate predicate)
+  {
+    auto begin = Vector<T>::Begin();
+    auto end   = Vector<T>::End();
+
+    auto function = [predicate](auto& obj) {
+      if(predicate(obj))
+      {
+        delete obj;
+        return true;
+      }
+      else
+      {
+        return false;
+      }
+    };
+
+    Vector<T>::Erase(std::remove_if(begin, end, function), end);
+  }
+
+  /**
+   * Erases a range of elements.(delete from heap).
+   */
+  Iterator Erase(Iterator first, Iterator last)
+  {
+    auto itr = first;
+    while(itr < last)
+    {
+      Delete(*itr);
+      ++itr;
+    }
+
+    return Vector<T>::Erase(first, last);
+  }
+
+  /**
    * Erase an object from OwnerContainer
    * @param object to remove
    */