#include "xbt/sysdep.h"
#include "xbt/log.h"
#include "xbt/ex.h"
+#include <xbt/ex.hpp>
#include "xbt/dynar.h"
#include <sys/types.h>
static inline void _sanity_check_dynar(xbt_dynar_t dynar)
{
- xbt_assert(dynar, "dynar is NULL");
+ xbt_assert(dynar, "dynar is nullptr");
}
static inline void _sanity_check_idx(int idx)
/** @brief Constructor
*
* \param elmsize size of each element in the dynar
- * \param free_f function to call each time we want to get rid of an element (or NULL if nothing to do).
+ * \param free_f function to call each time we want to get rid of an element (or nullptr if nothing to do).
*
* Creates a new dynar. If a free_func is provided, the elements have to be pointer of pointer. That is to say that
* dynars can contain either base types (int, char, double, etc) or pointer of pointers (struct **).
dynar->size = 0;
dynar->used = 0;
dynar->elmsize = elmsize;
- dynar->data = NULL;
+ dynar->data = nullptr;
dynar->free_f = free_f;
return dynar;
xbt_dynar_t d = *dynar;
free(d->data);
free(d);
- *dynar = NULL;
+ *dynar = nullptr;
}
}
/** @brief Remove a slice of the dynar, sliding the rest of the values to the left
*
* This function removes an n-sized slice that starts at element idx. It is equivalent to xbt_dynar_remove_at with a
- * NULL object argument if n equals to 1.
+ * nullptr object argument if n equals to 1.
*
* Each of the removed elements is freed using the free_f function passed at dynar creation.
*/
*/
void xbt_dynar_cursor_rm(xbt_dynar_t dynar, unsigned int *const cursor)
{
- xbt_dynar_remove_at(dynar, (*cursor)--, NULL);
+ xbt_dynar_remove_at(dynar, (*cursor)--, nullptr);
}
/** @brief Sorts a dynar according to the function <tt>compar_fn</tt>
xbt_free(tmp);
}
-/** @brief Transform a dynar into a NULL terminated array.
+/** @brief Transform a dynar into a nullptr terminated array.
*
* \param dynar the dynar to transform
* \return pointer to the first element of the array
if((!d1) && (!d2)) return 0;
if((!d1) || (!d2))
{
- XBT_DEBUG("NULL dynar d1=%p d2=%p",d1,d2);
+ XBT_DEBUG("nullptr dynar d1=%p d2=%p",d1,d2);
xbt_dynar_free(&d2);
return 1;
}
int *iptr;
xbt_test_add("==== Traverse the empty dynar");
- d = xbt_dynar_new(sizeof(int), NULL);
+ d = xbt_dynar_new(sizeof(int), nullptr);
xbt_dynar_foreach(d, cursor, i) {
xbt_die( "Damnit, there is something in the empty dynar");
}
xbt_test_add("==== Push %d int, set them again 3 times, traverse them, shift them", NB_ELEM);
/* Populate_ints [doxygen cruft] */
/* 1. Populate the dynar */
- d = xbt_dynar_new(sizeof(int), NULL);
+ d = xbt_dynar_new(sizeof(int), nullptr);
for (cpt = 0; cpt < NB_ELEM; cpt++) {
xbt_dynar_push_as(d, int, cpt); /* This is faster (and possible only with scalars) */
/* xbt_dynar_push(d,&cpt); This would also work */
/* in your code is naturally the way to go outside a regression test */
xbt_test_add("==== Unshift/pop %d int", NB_ELEM);
- d = xbt_dynar_new(sizeof(int), NULL);
+ d = xbt_dynar_new(sizeof(int), nullptr);
for (cpt = 0; cpt < NB_ELEM; cpt++) {
xbt_dynar_unshift(d, &cpt);
XBT_DEBUG("Push %d, length=%lu", cpt, xbt_dynar_length(d));
/* in your code is naturally the way to go outside a regression test */
xbt_test_add ("==== Push %d int, insert 1000 int in the middle, shift everything", NB_ELEM);
- d = xbt_dynar_new(sizeof(int), NULL);
+ d = xbt_dynar_new(sizeof(int), nullptr);
for (cpt = 0; cpt < NB_ELEM; cpt++) {
xbt_dynar_push_as(d, int, cpt);
XBT_DEBUG("Push %d, length=%lu", cpt, xbt_dynar_length(d));
/* in your code is naturally the way to go outside a regression test */
xbt_test_add("==== Push %d int, remove 2000-4000. free the rest", NB_ELEM);
- d = xbt_dynar_new(sizeof(int), NULL);
+ d = xbt_dynar_new(sizeof(int), nullptr);
for (cpt = 0; cpt < NB_ELEM; cpt++)
xbt_dynar_push_as(d, int, cpt);
/*******************************************************************************/
XBT_TEST_UNIT("insert",test_dynar_insert,"Using the xbt_dynar_insert and xbt_dynar_remove functions")
{
- xbt_dynar_t d = xbt_dynar_new(sizeof(unsigned int), NULL);
+ xbt_dynar_t d = xbt_dynar_new(sizeof(unsigned int), nullptr);
unsigned int cursor;
int cpt;
/* ********************* */
xbt_test_add("==== Insert %d int in reverse order, traverse them, remove them",NB_ELEM);
- d = xbt_dynar_new(sizeof(int), NULL);
+ d = xbt_dynar_new(sizeof(int), nullptr);
for (cpt = NB_ELEM-1; cpt >=0; cpt--) {
xbt_dynar_replace(d, cpt, &cpt);
xbt_test_log("Push %d, length=%lu", cpt, xbt_dynar_length(d));
double d1, d2;
xbt_test_add("==== Traverse the empty dynar");
- d = xbt_dynar_new(sizeof(int), NULL);
+ d = xbt_dynar_new(sizeof(int), nullptr);
xbt_dynar_foreach(d, cursor, cpt) {
xbt_test_assert(FALSE, "Damnit, there is something in the empty dynar");
}
/* in your code is naturally the way to go outside a regression test */
xbt_test_add("==== Push/shift 5000 doubles");
- d = xbt_dynar_new(sizeof(double), NULL);
+ d = xbt_dynar_new(sizeof(double), nullptr);
for (cpt = 0; cpt < 5000; cpt++) {
d1 = (double) cpt;
xbt_dynar_push(d, &d1);
/* in your code is naturally the way to go outside a regression test */
xbt_test_add("==== Unshift/pop 5000 doubles");
- d = xbt_dynar_new(sizeof(double), NULL);
+ d = xbt_dynar_new(sizeof(double), nullptr);
for (cpt = 0; cpt < 5000; cpt++) {
d1 = (double) cpt;
xbt_dynar_unshift(d, &d1);
/* in your code is naturally the way to go outside a regression test */
xbt_test_add("==== Push 5000 doubles, insert 1000 doubles in the middle, shift everything");
- d = xbt_dynar_new(sizeof(double), NULL);
+ d = xbt_dynar_new(sizeof(double), nullptr);
for (cpt = 0; cpt < 5000; cpt++) {
d1 = (double) cpt;
xbt_dynar_push(d, &d1);
/* in your code is naturally the way to go outside a regression test */
xbt_test_add("==== Push 5000 double, remove 2000-4000. free the rest");
- d = xbt_dynar_new(sizeof(double), NULL);
+ d = xbt_dynar_new(sizeof(double), nullptr);
for (cpt = 0; cpt < 5000; cpt++) {
d1 = (double) cpt;
xbt_dynar_push(d, &d1);