4 * Copyright 2010 Simgrid Team
7 * This program is free software; you can redistribute
8 * it and/or modify it under the terms of the license
9 *(GNU LGPL) which comes with this package.
12 #include "rb_SD_task.c"
13 #include "rb_SD_workstation.c"
14 #include <simdag/simdag.h>
17 // XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(ruby);
25 //Init Msg_Init From Ruby
26 static void sd_init(VALUE Class,VALUE args)
33 if ( type != T_ARRAY )
35 rb_raise(rb_eRuntimeError,"Bad Argument to SD_init");
38 ptr = RARRAY(args)->ptr;
39 argc= RARRAY(args)->len;
41 argv= xbt_new0(char*,argc);
42 argv[0] = strdup("ruby");
43 for (i=0;i<argc-1;i++)
47 tmp = RSTRING(value)->ptr;
48 argv[i+1] = strdup(tmp);
52 // INFO0("SD Init...Done");
53 printf("SD Init...Done\n");
58 //Init Msg_Run From Ruby
59 static void sd_reinit(VALUE class)
61 SD_application_reinit();
65 static void sd_createEnvironment(VALUE class,VALUE plateformFile )
67 int type = TYPE(plateformFile);
68 if ( type != T_STRING )
69 rb_raise(rb_eRuntimeError,"Bad Argument's Type");
70 const char * platform = RSTRING(plateformFile)->ptr;
71 SD_create_environment(platform);
72 printf("Create Environment...Done\n");
79 static void sd_info(VALUE class,VALUE msg)
81 const char *s = RSTRING(msg)->ptr;
87 static VALUE sd_get_clock(VALUE class)
89 return rb_float_new(SD_get_clock());
95 rb_dag = rb_define_module("DAG");
98 //Associated Environment Methods!
99 rb_define_method(rb_dag,"init",sd_init,1);
100 rb_define_method(rb_dag,"reinit",sd_reinit,0);
101 rb_define_method(rb_dag,"createEnvironment",sd_createEnvironment,1);
102 rb_define_method(rb_dag,"info",sd_info,1);
103 rb_define_method(rb_dag,"getClock",sd_get_clock,0);
106 rb_task = rb_define_class_under(rb_dag,"SdTask",rb_cObject);
107 rb_workstation = rb_define_class_under(rb_dag,"SdWorkstation",rb_cObject);
111 rb_define_module_function(rb_task,"new",rb_SD_task_new,2);
112 // rb_define_module_function(rb_task,"free",rb_SD_task_destroy,1);
113 rb_define_module_function(rb_task,"name",rb_SD_task_name,1);
114 rb_define_module_function(rb_task,"schedule",rb_SD_task_schedule,6);
115 rb_define_module_function(rb_task,"unschedule",rb_SD_task_unschedule,1);
116 rb_define_module_function(rb_task,"addDependency",rb_SD_task_add_dependency,2);
117 rb_define_module_function(rb_task,"executionTime",rb_SD_task_execution_time,6);
118 rb_define_module_function(rb_task,"startTime",rb_SD_task_start_time,1);
119 rb_define_module_function(rb_task,"finishTime",rb_SD_task_finish_time,1);
120 rb_define_module_function(rb_task,"simulate",rb_SD_simulate,1);
123 rb_define_module_function(rb_workstation,"getList",rb_SD_workstation_list,0);
124 rb_define_module_function(rb_workstation,"getNumber",rb_SD_workstation_number,0);
125 rb_define_module_function(rb_workstation,"name",rb_SD_workstation_name,1);