Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Rewrite/simplify the C++ flag declaration
[simgrid.git] / include / xbt / dynar.hpp
index 7ef2e68..2129007 100644 (file)
@@ -8,7 +8,6 @@
 #define SIMGRId_XBT_DYNAR_HPP
 
 #include <boost/range/iterator_range.hpp>
-
 #include <xbt/asserts.h>
 #include <xbt/dynar.h>
 
@@ -33,7 +32,22 @@ DynarRange<T> range(xbt_dynar_t dynar)
     (T*) ((char*) dynar->data + dynar->used * dynar->elmsize));
 }
 
+/** Dynar of `T*` which `delete` its values */
+template<class T> inline
+xbt_dynar_t newDeleteDynar()
+{
+  return xbt_dynar_new(sizeof(T*),
+    [](void* p) { delete *(T**)p; });
 }
+
+/** Dynar of `T*` which `destroy()` its values */
+template<class T> inline
+xbt_dynar_t newDestroyDynar()
+{
+  return xbt_dynar_new(sizeof(T*),
+    [](void* p) { simgrid::xbt::destroy(*(T**)p); });
 }
 
+}
+}
 #endif