1 /* Copyright (c) 2010. The SimGrid Team.
2 * All rights reserved. */
4 /* This program is free software; you can redistribute it and/or modify it
5 * under the terms of the license (GNU LGPL) which comes with this package. */
10 * Copyright 2010 Simgrid Team
13 * This program is free software; you can redistribute
14 * it and/or modify it under the terms of the license
15 *(GNU LGPL) which comes with this package.
18 #include "rb_SD_task.c"
19 #include "rb_SD_workstation.c"
20 #include <simdag/simdag.h>
23 // XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(ruby);
31 //Init Msg_Init From Ruby
32 static void sd_init(VALUE Class,VALUE args)
39 if ( type != T_ARRAY )
41 rb_raise(rb_eRuntimeError,"Bad Argument to SD_init");
44 ptr = RARRAY(args)->ptr;
45 argc= RARRAY(args)->len;
47 argv= xbt_new0(char*,argc);
48 argv[0] = strdup("ruby");
49 for (i=0;i<argc-1;i++)
53 tmp = RSTRING(value)->ptr;
54 argv[i+1] = strdup(tmp);
58 // INFO0("SD Init...Done");
59 printf("SD Init...Done\n");
64 //Init Msg_Run From Ruby
65 static void sd_reinit(VALUE class)
67 SD_application_reinit();
71 static void sd_createEnvironment(VALUE class,VALUE plateformFile )
73 int type = TYPE(plateformFile);
74 if ( type != T_STRING )
75 rb_raise(rb_eRuntimeError,"Bad Argument's Type");
76 const char * platform = RSTRING(plateformFile)->ptr;
77 SD_create_environment(platform);
78 printf("Create Environment...Done\n");
85 static void sd_info(VALUE class,VALUE msg)
87 const char *s = RSTRING(msg)->ptr;
93 static VALUE sd_get_clock(VALUE class)
95 return rb_float_new(SD_get_clock());
101 rb_dag = rb_define_module("DAG");
104 //Associated Environment Methods!
105 rb_define_method(rb_dag,"init",sd_init,1);
106 rb_define_method(rb_dag,"reinit",sd_reinit,0);
107 rb_define_method(rb_dag,"createEnvironment",sd_createEnvironment,1);
108 rb_define_method(rb_dag,"info",sd_info,1);
109 rb_define_method(rb_dag,"getClock",sd_get_clock,0);
112 rb_task = rb_define_class_under(rb_dag,"SdTask",rb_cObject);
113 rb_workstation = rb_define_class_under(rb_dag,"SdWorkstation",rb_cObject);
117 rb_define_module_function(rb_task,"new",rb_SD_task_new,2);
118 // rb_define_module_function(rb_task,"free",rb_SD_task_destroy,1);
119 rb_define_module_function(rb_task,"name",rb_SD_task_name,1);
120 rb_define_module_function(rb_task,"schedule",rb_SD_task_schedule,6);
121 rb_define_module_function(rb_task,"unschedule",rb_SD_task_unschedule,1);
122 rb_define_module_function(rb_task,"addDependency",rb_SD_task_add_dependency,2);
123 rb_define_module_function(rb_task,"executionTime",rb_SD_task_execution_time,6);
124 rb_define_module_function(rb_task,"startTime",rb_SD_task_start_time,1);
125 rb_define_module_function(rb_task,"finishTime",rb_SD_task_finish_time,1);
126 rb_define_module_function(rb_task,"simulate",rb_SD_simulate,1);
129 rb_define_module_function(rb_workstation,"getList",rb_SD_workstation_list,0);
130 rb_define_module_function(rb_workstation,"getNumber",rb_SD_workstation_number,0);
131 rb_define_module_function(rb_workstation,"name",rb_SD_workstation_name,1);