#include "xbt/log.h"
#include "xbt/asserts.h"
-#include "bindings/smx_context.h"
#include "bindings/ruby_bindings.h"
XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(ruby);
static void smx_ctx_ruby_stop(smx_context_t context);
static void smx_ctx_ruby_suspend(smx_context_t context);
static void smx_ctx_ruby_resume(smx_context_t new_context);
-static void smx_ctx_ruby_runall(xbt_swag_t processes);
+static void smx_ctx_ruby_runall(xbt_dynar_t processes);
void SIMIX_ctx_ruby_factory_init(smx_context_factory_t * factory)
{
ctx_ruby = (smx_ctx_ruby_t) context;
- if (((smx_process_t)smx_current_context->data)->iwannadie) {
+ if (smx_current_context->iwannadie) {
if (ctx_ruby->process) {
//if the Ruby Process still Alive ,let's Schedule it
rb_process_schedule(ctx_ruby->process);
}
-static void smx_ctx_ruby_runall(xbt_swag_t processes)
+static void smx_ctx_ruby_runall(xbt_dynar_t processes)
{
smx_process_t process;
smx_context_t old_context;
- while ((process = xbt_swag_extract(processes))) {
+ unsigned int cursor;
+
+ xbt_dynar_foreach(processes, cursor, process) {
old_context = smx_current_context;
smx_current_context = process->context;
smx_ctx_ruby_resume(smx_current_context);
smx_current_context = old_context;
- }
+ }
+ xbt_dynar_reset(processes);
}