*
* \param dynar who to squeeze
*/
-inline void xbt_dynar_reset(xbt_dynar_t const dynar)
+void xbt_dynar_reset(xbt_dynar_t const dynar)
{
_sanity_check_dynar(dynar);
*
* kilkil a dynar and its content
*/
-inline void xbt_dynar_free(xbt_dynar_t * dynar)
+void xbt_dynar_free(xbt_dynar_t * dynar)
{
if (dynar && *dynar) {
xbt_dynar_reset(*dynar);
*
* \param dynar the dynar we want to mesure
*/
-inline unsigned long xbt_dynar_length(const xbt_dynar_t dynar)
+unsigned long xbt_dynar_length(const xbt_dynar_t dynar)
{
return (dynar ? (unsigned long) dynar->used : (unsigned long) 0);
}
*\param dynar the dynat we want to check
*/
-inline int xbt_dynar_is_empty(const xbt_dynar_t dynar)
+int xbt_dynar_is_empty(const xbt_dynar_t dynar)
{
return (xbt_dynar_length(dynar) == 0);
}
* \param idx index of the slot we want to retrieve
* \param[out] dst where to put the result to.
*/
-inline void xbt_dynar_get_cpy(const xbt_dynar_t dynar, const unsigned long idx, void *const dst)
+void xbt_dynar_get_cpy(const xbt_dynar_t dynar, const unsigned long idx, void *const dst)
{
_sanity_check_dynar(dynar);
_check_inbound_idx(dynar, idx);
* \warning The returned value is the actual content of the dynar.
* Make a copy before fooling with it.
*/
-inline void *xbt_dynar_get_ptr(const xbt_dynar_t dynar, const unsigned long idx)
+void *xbt_dynar_get_ptr(const xbt_dynar_t dynar, const unsigned long idx)
{
void *res;
_sanity_check_dynar(dynar);
return res;
}
-inline void *xbt_dynar_set_at_ptr(const xbt_dynar_t dynar, const unsigned long idx)
+void *xbt_dynar_set_at_ptr(const xbt_dynar_t dynar, const unsigned long idx)
{
_sanity_check_dynar(dynar);
*
* If you want to free the previous content, use xbt_dynar_replace().
*/
-inline void xbt_dynar_set(xbt_dynar_t dynar, const int idx, const void *const src)
+void xbt_dynar_set(xbt_dynar_t dynar, const int idx, const void *const src)
{
memcpy(xbt_dynar_set_at_ptr(dynar, idx), src, dynar->elmsize);
}
* Set the Nth element of a dynar, expanding the dynar if needed, and moving the previously existing value and all
* subsequent ones to one position right in the dynar.
*/
-inline void xbt_dynar_insert_at(xbt_dynar_t const dynar, const int idx, const void *const src)
+void xbt_dynar_insert_at(xbt_dynar_t const dynar, const int idx, const void *const src)
{
/* checks done in xbt_dynar_insert_at_ptr */
memcpy(xbt_dynar_insert_at_ptr(dynar, idx), src, dynar->elmsize);
*/
int xbt_dynar_member(xbt_dynar_t const dynar, void *const elem)
{
- xbt_ex_t e;
-
- TRY {
+ try {
xbt_dynar_search(dynar, elem);
- } CATCH(e) {
- if (e.category == not_found_error) {
- xbt_ex_free(e);
+ }
+ catch (xbt_ex& e) {
+ if (e.category == not_found_error)
return 0;
- }
- RETHROW;
+ throw;
}
return 1;
}
* You can then use regular affectation to set its value instead of relying on the slow memcpy. This is what
* xbt_dynar_push_as() does.
*/
-inline void *xbt_dynar_push_ptr(xbt_dynar_t const dynar)
+void *xbt_dynar_push_ptr(xbt_dynar_t const dynar)
{
return xbt_dynar_insert_at_ptr(dynar, dynar->used);
}
/** @brief Add an element at the end of the dynar */
-inline void xbt_dynar_push(xbt_dynar_t const dynar, const void *const src)
+void xbt_dynar_push(xbt_dynar_t const dynar, const void *const src)
{
/* checks done in xbt_dynar_insert_at_ptr */
memcpy(xbt_dynar_insert_at_ptr(dynar, dynar->used), src, dynar->elmsize);
* You can then use regular affectation to set its value instead of relying on the slow memcpy. This is what
* xbt_dynar_pop_as() does.
*/
-inline void *xbt_dynar_pop_ptr(xbt_dynar_t const dynar)
+void *xbt_dynar_pop_ptr(xbt_dynar_t const dynar)
{
_check_populated_dynar(dynar);
XBT_CDEBUG(xbt_dyn, "Pop %p", (void *) dynar);
}
/** @brief Get and remove the last element of the dynar */
-inline void xbt_dynar_pop(xbt_dynar_t const dynar, void *const dst)
+void xbt_dynar_pop(xbt_dynar_t const dynar, void *const dst)
{
/* sanity checks done by remove_at */
XBT_CDEBUG(xbt_dyn, "Pop %p", (void *) dynar);
*
* This is less efficient than xbt_dynar_push()
*/
-inline void xbt_dynar_unshift(xbt_dynar_t const dynar, const void *const src)
+void xbt_dynar_unshift(xbt_dynar_t const dynar, const void *const src)
{
/* sanity checks done by insert_at */
xbt_dynar_insert_at(dynar, 0, src);
*
* This is less efficient than xbt_dynar_pop()
*/
-inline void xbt_dynar_shift(xbt_dynar_t const dynar, void *const dst)
+void xbt_dynar_shift(xbt_dynar_t const dynar, void *const dst)
{
/* sanity checks done by remove_at */
xbt_dynar_remove_at(dynar, 0, dst);
*
* The mapped function may change the value of the element itself, but should not mess with the structure of the dynar.
*/
-inline void xbt_dynar_map(const xbt_dynar_t dynar, void_f_pvoid_t const op)
+void xbt_dynar_map(const xbt_dynar_t dynar, void_f_pvoid_t const op)
{
char *const data = (char *) dynar->data;
const unsigned long elmsize = dynar->elmsize;
*
* This function can be used while traversing without problem.
*/
-inline void xbt_dynar_cursor_rm(xbt_dynar_t dynar, unsigned int *const cursor)
+void xbt_dynar_cursor_rm(xbt_dynar_t dynar, unsigned int *const cursor)
{
xbt_dynar_remove_at(dynar, (*cursor)--, NULL);
}
* \param dynar the dynar to sort
* \param compar_fn comparison function of type (int (compar_fn*) (const void*) (const void*)).
*/
-inline void xbt_dynar_sort(xbt_dynar_t dynar, int_f_cpvoid_cpvoid_t compar_fn)
+void xbt_dynar_sort(xbt_dynar_t dynar, int_f_cpvoid_cpvoid_t compar_fn)
{
qsort(dynar->data, dynar->used, dynar->elmsize, compar_fn);
}
*
* Note: The dynar won't be usable afterwards.
*/
-inline void *xbt_dynar_to_array(xbt_dynar_t dynar)
+void *xbt_dynar_to_array(xbt_dynar_t dynar)
{
void *res;
xbt_dynar_shrink(dynar, 1);
/* 2. Traverse manually the dynar */
for (cursor = 0; cursor < NB_ELEM; cursor++) {
- iptr = xbt_dynar_get_ptr(d, cursor);
- xbt_test_assert(cursor == *iptr, "The retrieved value is not the same than the injected one (%u!=%d)", cursor, cpt);
+ iptr = (int*) xbt_dynar_get_ptr(d, cursor);
+ xbt_test_assert(cursor == (unsigned int) *iptr, "The retrieved value is not the same than the injected one (%u!=%d)", cursor, cpt);
}
/* 3. Traverse the dynar using the neat macro to that extend */
xbt_dynar_foreach(d, cursor, cpt) {
- xbt_test_assert(cursor == cpt, "The retrieved value is not the same than the injected one (%u!=%d)", cursor, cpt);
+ xbt_test_assert(cursor == (unsigned int) cpt, "The retrieved value is not the same than the injected one (%u!=%d)", cursor, cpt);
}
/* end_of_traversal */
/* 3. Traverse the dynar */
xbt_dynar_foreach(d, cursor, cpt) {
- xbt_test_assert(cursor == cpt, "The retrieved value is not the same than the injected one (%u!=%d)", cursor, cpt);
+ xbt_test_assert(cursor == (unsigned int) cpt, "The retrieved value is not the same than the injected one (%u!=%d)", cursor, cpt);
}
/* end_of_traversal */
for (cpt = 0; cpt < NB_ELEM; cpt++)
xbt_dynar_set_as(d, cpt, int, cpt);
xbt_dynar_foreach(d, cursor, cpt)
- xbt_test_assert(cursor == cpt, "The retrieved value is not the same than the injected one (%u!=%d)", cursor, cpt);
+ xbt_test_assert(cursor == (unsigned int) cpt, "The retrieved value is not the same than the injected one (%u!=%d)", cursor, cpt);
for (cpt = 0; cpt < NB_ELEM; cpt++) {
int val;
/* 3. Traverse the dynar */
xbt_dynar_foreach(d, cursor, cpt) {
- xbt_test_assert(cursor == cpt, "The retrieved value is not the same than the injected one (%u!=%d)", cursor, cpt);
+ xbt_test_assert(cursor == (unsigned) cpt, "The retrieved value is not the same than the injected one (%u!=%d)", cursor, cpt);
}
/* end_of_traversal */