Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Rewrite/simplify the C++ flag declaration
[simgrid.git] / include / xbt / dynar.hpp
index a1b49c7..2129007 100644 (file)
@@ -32,6 +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