-void rb_processBind(VALUE ruby_class,m_process_t process);
-
-// CreateProcess Method
-void rb_processCreate(VALUE Class,VALUE rb_process,VALUE host);
-
-// ProcessSuspend
-void rb_processSuspend(VALUE Class,VALUE ruby_process);
-
-// ProcessResume
-void rb_processResume(VALUE Class,VALUE ruby_process);
-
-//ProcessIsSuspend return Boolean ( Qtrue / Qfalse )
-VALUE rb_processIsSuspend(VALUE Class,VALUE ruby_process);
-
-//Processkill
-void rb_processKill(VALUE Class,VALUE ruby_process);
-
-//ProcessGetHost
-VALUE rb_processGetHost(VALUE Class,VALUE ruby_process);
-
-//ProcessExit
-void rb_processExit(VALUE Class,VALUE ruby_process);
-
-#endif /* RB_SG_BINDINGS */
+void rb_process_bind(VALUE ruby_class, m_process_t process);
+void rb_process_create(VALUE Class, VALUE rb_process, VALUE host);
+void rb_process_suspend(VALUE Class, VALUE ruby_process);
+void rb_process_resume(VALUE Class, VALUE ruby_process);
+// Returns Boolean ( Qtrue / Qfalse )
+VALUE rb_process_isSuspended(VALUE Class, VALUE ruby_process);
+void rb_process_kill_down(VALUE Class, VALUE ruby_process);
+VALUE rb_process_getHost(VALUE Class, VALUE ruby_process);
+void rb_process_exit(VALUE Class, VALUE ruby_process);
+
+/* Functions related to hosts */
+void rb_host_free(m_host_t ht);
+VALUE rb_host_get_by_name(VALUE Class, VALUE name);
+VALUE rb_host_name(VALUE Class, VALUE host);
+VALUE rb_host_number(VALUE Class);
+VALUE rb_host_speed(VALUE Class, VALUE host);
+void rb_host_set_data(VALUE Class, VALUE host, VALUE data);
+VALUE rb_host_get_data(VALUE Class, VALUE host);
+VALUE rb_host_is_avail(VALUE Class, VALUE host);
+VALUE rb_host_process(VALUE Class, VALUE process);
+VALUE rb_host_get_all_hosts(VALUE Class);
+
+/* Functions related to tasks */
+
+typedef struct ruby_data {
+ void *ruby_task; // Pointer to send the ruby_task
+ void *user_data; // Pointer on the user data
+} s_ruby_data_t, *rb_data_t;
+
+void rb_task_free(m_task_t tk);
+VALUE rb_task_new(VALUE Class, VALUE name, VALUE comp_size,
+ VALUE comm_size);
+VALUE rb_task_comp(VALUE Class, VALUE task); // Get Computation Size
+VALUE rb_task_name(VALUE Class, VALUE task);
+VALUE rb_task_execute(VALUE Class, VALUE task);
+void rb_task_send(VALUE Class, VALUE task, VALUE mailbox);
+VALUE rb_task_receive(VALUE Class, VALUE mailbox); // Receive : return a task
+void rb_task_receive2(VALUE Class, VALUE task, VALUE mailbox); // Receive Task 2 << Not Appreciated
+VALUE rb_task_sender(VALUE Class, VALUE task);
+VALUE rb_task_source(VALUE Class, VALUE task);
+VALUE rb_task_listen(VALUE Class, VALUE task, VALUE alias); //Listen From Alias (=mailbox)
+VALUE rb_task_listen_host(VALUE Class, VALUE task, VALUE alias, VALUE host); //Listen from Host
+void rb_task_set_priority(VALUE Class, VALUE task, VALUE priority); // Set Priority
+void rb_task_cancel(VALUE Class, VALUE task); // Cancel
+VALUE rb_task_has_data(VALUE Class, VALUE task); // check if the task contains a data
+VALUE rb_task_get_data(VALUE Class, VALUE task); // get data
+void rb_task_set_data(VALUE Class, VALUE task, VALUE data); // set data
+
+/* Upcalls for the application handler */
+void rb_application_handler_on_start_document(void);
+void rb_application_handler_on_end_document(void);
+void rb_application_handler_on_begin_process(void);
+void rb_application_handler_on_process_arg(void);
+void rb_application_handler_on_property(void);
+void rb_application_handler_on_end_process(void);
+
+#endif /* RB_SG_BINDINGS */