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);
43 NetworkLink **lout = (NetworkLink **)xbt_dynar_to_array($1);
44 jenv->SetLongArrayRegion($result, 0, l, (const jlong*)lout);
48 /* Allow to subclass Plugin and send java object to C++ code */
49 %feature("director") Plugin;
51 %include "src/bindings/java/surf_swig.hpp"
56 const char *getName();
62 const char *getName();
63 virtual bool isUsed()=0;
64 lmm_constraint *getConstraint();
65 s_xbt_dict *getProperties();
68 class Cpu : public Resource {
72 double getCurrentPowerPeak();
75 class NetworkLink : public Resource {
79 double getBandwidth();
80 void updateBandwidth(double value, double date=surf_get_clock());
82 void updateLatency(double value, double date=surf_get_clock());
88 lmm_variable *getVariable();
90 void setBound(double bound);
93 class CpuAction : public Action {
96 Cpu *getCpu() {return getActionCpu($self);}
100 %nodefaultctor NetworkAction;
101 class NetworkAction : public Action {
104 double getLatency() {return $self->m_latency;}
108 %nodefaultctor RoutingEdge;
111 virtual char *getName()=0;
114 %rename lmm_constraint LmmConstraint;
115 struct lmm_constraint {
117 double getUsage() {return lmm_constraint_get_usage($self);}
121 %rename lmm_variable LmmVariable;
122 struct lmm_variable {
124 double getValue() {return lmm_variable_getvalue($self);}
128 %rename s_xbt_dict XbtDict;
131 char *getValue(char *key) {return (char*)xbt_dict_get_or_null($self, key);}
135 %rename e_surf_action_state_t ActionState;
137 SURF_ACTION_READY = 0, /**< Ready */
138 SURF_ACTION_RUNNING, /**< Running */
139 SURF_ACTION_FAILED, /**< Task Failure */
140 SURF_ACTION_DONE, /**< Completed */
141 SURF_ACTION_TO_FREE, /**< Action to free in next cleanup */
142 SURF_ACTION_NOT_IN_THE_SYSTEM
143 /**< Not in the system anymore. Why did you ask ? */
144 } e_surf_action_state_t;
146 %rename e_surf_resource_state_t ResourceState;
148 SURF_RESOURCE_ON = 1, /**< Up & ready */
149 SURF_RESOURCE_OFF = 0 /**< Down & broken */
150 } e_surf_resource_state_t;