+
+/** \brief Cb to push an unsigned long integer. Must be attached to the field you want to push
+ */
+void gras_datadesc_cb_push_ulint(gras_datadesc_type_t ignored,
+ gras_cbps_t vars, void *data)
+{
+ unsigned long int *i = (unsigned long int *) data;
+ gras_cbps_i_push(vars, (int) *i);
+}
+
+/* ************************************ */
+/* **** PUSHy multiplier callbacks **** */
+/* ************************************ */
+/** \brief Cb to push an integer as multiplier. Must be attached to the field you want to push */
+void gras_datadesc_cb_push_int_mult(gras_datadesc_type_t ignored,
+ gras_cbps_t vars, void *data)
+{
+ int old = *(int *) data;
+ int new = gras_cbps_i_pop(vars);
+ XBT_DEBUG("push %d x %d as a size", old, new);
+ gras_cbps_i_push(vars, old * new);
+}
+
+/** \brief Cb to push an unsigned integer as multiplier. Must be attached to the field you want to push */
+void gras_datadesc_cb_push_uint_mult(gras_datadesc_type_t ignored,
+ gras_cbps_t vars, void *data)
+{
+ unsigned int old = *(unsigned int *) data;
+ unsigned int new = gras_cbps_i_pop(vars);
+
+ XBT_DEBUG("push %d x %d as a size", old, new);
+ gras_cbps_i_push(vars, (int) (old * new));
+}
+
+/** \brief Cb to push an long integer as multiplier. Must be attached to the field you want to push
+ */
+void gras_datadesc_cb_push_lint_mult(gras_datadesc_type_t ignored,
+ gras_cbps_t vars, void *data)
+{
+ long int i = *(long int *) data;
+ i *= gras_cbps_i_pop(vars);
+ gras_cbps_i_push(vars, (int) i);
+}
+
+/** \brief Cb to push an unsigned long integer as multiplier. Must be attached to the field you want to push