2 %module(directors="1") Surf
4 %include "arrays_java.i"
6 %pragma(java) jniclassimports=%{
7 import org.simgrid.NativeLib;
9 %pragma(java) jniclasscode=%{
11 NativeLib.nativeInit("surf-java");
12 Runtime.getRuntime().addShutdownHook(
15 Thread.currentThread().setName( "Destroyer" );
24 #include "src/surf/cpu_interface.hpp"
25 #include "src/surf/network_interface.hpp"
26 #include "src/bindings/java/surf_swig.hpp"
27 #include "src/xbt/dict_private.h"
28 typedef struct lmm_constraint *lmm_constraint_t;
31 /* Handle xbt_dynar_t of NetworkLink */
32 JAVA_ARRAYSOFCLASSES(NetworkLink);
33 %apply NetworkLink[] {NetworkLinkDynar};
34 %typemap(jstype) NetworkLinkDynar "NetworkLink[]"
35 %typemap(javain) NetworkLinkDynar "NetworkLink.cArrayUnwrap($javainput)"
37 %typemap(javaout) NetworkLinkDynar {
38 return NetworkLink.cArrayWrap($jnicall, $owner);
40 %typemap(out) NetworkLinkDynar {
41 long l = xbt_dynar_length($1);
42 $result = jenv->NewLongArray(l);
45 jlong *elts = jenv->GetLongArrayElements($result, NULL);
46 xbt_dynar_foreach($1, i, link) {
47 elts[i] = (jlong)link;
49 jenv->ReleaseLongArrayElements($result, elts, 0);
53 /* Allow to subclass Plugin and send java object to C++ code */
54 %feature("director") Plugin;
56 %include "src/bindings/java/surf_swig.hpp"
61 const char *getName();
67 const char *getName();
68 virtual bool isUsed()=0;
69 lmm_constraint *getConstraint();
70 s_xbt_dict *getProperties();
73 class Cpu : public Resource {
77 double getCurrentPowerPeak();
80 class NetworkLink : public Resource {
84 double getBandwidth();
85 void updateBandwidth(double value, double date=surf_get_clock());
87 void updateLatency(double value, double date=surf_get_clock());
93 lmm_variable *getVariable();
95 void setBound(double bound);
98 class CpuAction : public Action {
101 Cpu *getCpu() {return getActionCpu($self);}
105 %nodefaultctor NetworkAction;
106 class NetworkAction : public Action {
109 double getLatency() {return $self->m_latency;}
113 %nodefaultctor RoutingEdge;
116 virtual char *getName()=0;
119 %rename lmm_constraint LmmConstraint;
120 struct lmm_constraint {
122 double getUsage() {return lmm_constraint_get_usage($self);}
126 %rename lmm_variable LmmVariable;
127 struct lmm_variable {
129 double getValue() {return lmm_variable_getvalue($self);}
133 %rename s_xbt_dict XbtDict;
136 char *getValue(char *key) {return (char*)xbt_dict_get_or_null($self, key);}
140 %rename e_surf_action_state_t ActionState;
142 SURF_ACTION_READY = 0, /**< Ready */
143 SURF_ACTION_RUNNING, /**< Running */
144 SURF_ACTION_FAILED, /**< Task Failure */
145 SURF_ACTION_DONE, /**< Completed */
146 SURF_ACTION_TO_FREE, /**< Action to free in next cleanup */
147 SURF_ACTION_NOT_IN_THE_SYSTEM
148 /**< Not in the system anymore. Why did you ask ? */
149 } e_surf_action_state_t;
151 %rename e_surf_resource_state_t ResourceState;
153 SURF_RESOURCE_ON = 1, /**< Up & ready */
154 SURF_RESOURCE_OFF = 0 /**< Down & broken */
155 } e_surf_resource_state_t;