static inline int _xbt_dynar_cursor_get(const xbt_dynar_t dynar, unsigned int idx, void* const dst)
{
if (!dynar) /* iterating over a NULL dynar is a no-op */
- return FALSE;
+ return 0;
if (idx >= dynar->used) {
//XBT_DEBUG("Cursor on %p already on last elem", (void *) dynar);
- return FALSE;
+ return 0;
}
// XBT_DEBUG("Cash out cursor on %p at %u", (void *) dynar, *idx);
memcpy(dst, ((char *) dynar->data) + idx * dynar->elmsize, dynar->elmsize);
- return TRUE;
+ return 1;
}
/** @brief Iterates over the whole dynar.
/** @} */
SG_END_DECL()
+#ifdef __cplusplus
+namespace simgrid {
+namespace xbt {
+/** 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; });
+}
+}
+}
+#endif
+
#endif /* XBT_DYNAR_H */