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 //FIXME #include "ruby_simdag.h"
19 #include "rb_SD_task.c"
20 #include "rb_SD_workstation.c"
21 #include <simdag/simdag.h>
24 // XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(ruby);
32 //Init Msg_Init From Ruby
33 static void sd_init(VALUE Class, VALUE args)
40 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++) {
52 tmp = RSTRING(value)->ptr;
53 argv[i + 1] = strdup(tmp);
57 // XBT_INFO("SD Init...Done");
58 printf("SD Init...Done\n");
63 //Init Msg_Run From Ruby
64 static void sd_reinit(VALUE class)
66 SD_application_reinit();
70 static void sd_createEnvironment(VALUE class, VALUE plateformFile)
72 int type = TYPE(plateformFile);
74 rb_raise(rb_eRuntimeError, "Bad Argument's Type");
75 const char *platform = RSTRING(plateformFile)->ptr;
76 SD_create_environment(platform);
77 printf("Create Environment...Done\n");
84 static void sd_info(VALUE class, VALUE msg)
86 const char *s = RSTRING(msg)->ptr;
92 static VALUE sd_get_clock(VALUE class)
94 return rb_float_new(SD_get_clock());
100 rb_dag = rb_define_module("DAG");
103 //Associated Environment Methods!
104 rb_define_method(rb_dag, "init", sd_init, 1);
105 rb_define_method(rb_dag, "reinit", sd_reinit, 0);
106 rb_define_method(rb_dag, "createEnvironment", sd_createEnvironment, 1);
107 rb_define_method(rb_dag, "info", sd_info, 1);
108 rb_define_method(rb_dag, "getClock", sd_get_clock, 0);
111 rb_task = rb_define_class_under(rb_dag, "SdTask", rb_cObject);
113 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,
123 rb_define_module_function(rb_task, "addDependency",
124 rb_SD_task_add_dependency, 2);
125 rb_define_module_function(rb_task, "executionTime",
126 rb_SD_task_execution_time, 6);
127 rb_define_module_function(rb_task, "startTime", rb_SD_task_start_time,
129 rb_define_module_function(rb_task, "finishTime", rb_SD_task_finish_time,
131 rb_define_module_function(rb_task, "simulate", rb_SD_simulate, 1);
134 rb_define_module_function(rb_workstation, "getList",
135 rb_SD_workstation_list, 0);
136 rb_define_module_function(rb_workstation, "getNumber",
137 rb_SD_workstation_number, 0);
138 rb_define_module_function(rb_workstation, "name", rb_SD_workstation_name,