X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/4bb73cb3914b5f7b77a9ec1f8abe728e637cc016..4634214e18b847f6346048fa12179d3d99ae82c9:/include/xbt/dynar.h diff --git a/include/xbt/dynar.h b/include/xbt/dynar.h index 89e9597022..095187f380 100644 --- a/include/xbt/dynar.h +++ b/include/xbt/dynar.h @@ -208,17 +208,17 @@ typedef struct xbt_dynar_s { 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. @@ -260,4 +260,16 @@ xbt_dynar_foreach (dyn,cpt,str) { /** @} */ SG_END_DECL() +#ifdef __cplusplus +namespace simgrid { +namespace xbt { +/** Dynar of `T*` which `delete` its values */ +template inline xbt_dynar_t newDeleteDynar() +{ + return xbt_dynar_new(sizeof(T*), [](void* p) { delete *(T**)p; }); +} +} +} +#endif + #endif /* XBT_DYNAR_H */