use of org.abs_models.backend.java.lib.runtime.ABSClosure in project abstools by abstools.
the class Reconfiguration method setupMetaAPI.
/*
* Define the methods of this class
*/
public static void setupMetaAPI() {
thisClass.setName("Reconfiguration");
/*
* MetaABS Reconfiguration API -- cf. abslang.abs module ABS.Meta
*/
thisClass.addMethod(/*ABSString*/
"getName", new ABSClosure() {
@Override
public ABSString exec(ABSDynamicObject t, ABSValue... params) {
ABSDynamicReconfiguration thisR = (ABSDynamicReconfiguration) t;
return ABSString.fromString(thisR.getName());
}
});
thisClass.addMethod(/*ABSDynamicProduct*/
"getCurrentProduct", new ABSClosure() {
@Override
public ABSDynamicProduct exec(ABSDynamicObject t, ABSValue... params) {
ABSDynamicReconfiguration thisR = (ABSDynamicReconfiguration) t;
return thisR.getCurrentProduct();
}
});
thisClass.addMethod(/*ABSUnit*/
"setCurrentProduct", new ABSClosure() {
@Override
public ABSUnit exec(ABSDynamicObject t, ABSValue... params) {
ABSDynamicReconfiguration thisR = (ABSDynamicReconfiguration) t;
ABSDynamicProduct prod = (ABSDynamicProduct) params[0];
thisR.setCurrentProduct(prod);
return ABSUnit.UNIT;
}
});
thisClass.addMethod(/*ABSDynamicProduct*/
"getTargetProduct", new ABSClosure() {
@Override
public ABSDynamicProduct exec(ABSDynamicObject t, ABSValue... params) {
ABSDynamicReconfiguration thisR = (ABSDynamicReconfiguration) t;
return thisR.getTargetProduct();
}
});
thisClass.addMethod(/*ABSUnit*/
"setTargetProduct", new ABSClosure() {
@Override
public ABSUnit exec(ABSDynamicObject t, ABSValue... params) {
ABSDynamicReconfiguration thisR = (ABSDynamicReconfiguration) t;
ABSDynamicProduct prod = (ABSDynamicProduct) params[0];
thisR.setTargetProduct(prod);
return ABSUnit.UNIT;
}
});
thisClass.addMethod(/*List<ABSDynamicDelta>*/
"getDeltas", new ABSClosure() {
@Override
public ABSValue exec(ABSDynamicObject t, ABSValue... params) {
ABSDynamicReconfiguration thisR = (ABSDynamicReconfiguration) t;
List<ABSDynamicDelta> deltas = thisR.getDeltas();
return ListUtils.toABSList(deltas);
}
});
thisClass.addMethod(/*List<ABSDynamicDelta>*/
"setDeltas", new ABSClosure() {
@Override
public ABSValue exec(ABSDynamicObject t, ABSValue... params) {
ABSDynamicReconfiguration thisR = (ABSDynamicReconfiguration) t;
// TODO
return ABSUnit.UNIT;
}
});
thisClass.addMethod(/*ABSDynamicUpdate*/
"getStateUpdate", new ABSClosure() {
@Override
public ABSDynamicUpdate exec(ABSDynamicObject t, ABSValue... params) {
ABSDynamicReconfiguration thisR = (ABSDynamicReconfiguration) t;
return thisR.getUpdate();
}
});
thisClass.addMethod(/*List<ABSDynamicDelta>*/
"setStateUpdate", new ABSClosure() {
@Override
public ABSValue exec(ABSDynamicObject t, ABSValue... params) {
ABSDynamicReconfiguration thisR = (ABSDynamicReconfiguration) t;
ABSDynamicUpdate upd = (ABSDynamicUpdate) params[0];
thisR.setUpdate(upd);
return ABSUnit.UNIT;
}
});
}
use of org.abs_models.backend.java.lib.runtime.ABSClosure in project abstools by abstools.
the class Clazz method setupMetaAPI.
/*
* Define the methods of this class
*/
public static void setupMetaAPI() {
thisClass.setName("Class");
thisClass.addMethod(/*ABSString*/
"getName", new ABSClosure() {
@Override
public ABSString exec(ABSDynamicObject t, ABSValue... params) {
ABSDynamicClass cls = (ABSDynamicClass) t.getFieldValue_Internal("class");
return ABSString.fromString(cls.getName());
}
});
thisClass.addMethod(/*ABSClosure*/
"getMethod", new ABSClosure() {
@Override
public ABSDynamicObject exec(ABSDynamicObject t, ABSValue... params) {
ABSDynamicClass cls = (ABSDynamicClass) t.getFieldValue_Internal("class");
ABSString name = (ABSString) params[0];
ABSClosure method = cls.getMethod(name.getString());
return method;
}
});
thisClass.addMethod(/*ABSUnit*/
"addMethod", new ABSClosure() {
@Override
public ABSUnit exec(ABSDynamicObject t, ABSValue... params) {
ABSDynamicClass cls = (ABSDynamicClass) t.getFieldValue_Internal("class");
ABSString name = (ABSString) params[0];
ABSClosure method = (ABSClosure) ((ABSDynamicObject) params[1]).getFieldValue_Internal("method");
cls.addMethod(name.getString(), method);
return ABSUnit.UNIT;
}
});
thisClass.addMethod(/*ABSUnit*/
"removeMethod", new ABSClosure() {
@Override
public ABSUnit exec(ABSDynamicObject t, ABSValue... params) {
ABSDynamicClass cls = (ABSDynamicClass) t.getFieldValue_Internal("class");
ABSString name = (ABSString) params[0];
cls.removeMethod(name.getString());
return ABSUnit.UNIT;
}
});
}
use of org.abs_models.backend.java.lib.runtime.ABSClosure in project abstools by abstools.
the class Delta method setupMetaAPI.
/*
* Define the methods of this class
*/
public static void setupMetaAPI() {
thisClass.setName("Delta");
thisClass.addMethod(/*ABSString*/
"getName", new ABSClosure() {
@Override
public ABSString exec(ABSDynamicObject t, ABSValue... params) {
ABSDynamicDelta delta = (ABSDynamicDelta) t;
return ABSString.fromString(delta.getName());
}
});
thisClass.addMethod(/*ABSUnit*/
"apply", new ABSClosure() {
@Override
public ABSValue exec(ABSDynamicObject t, ABSValue... params) {
ABSDynamicDelta delta = (ABSDynamicDelta) t;
delta.apply();
return ABSUnit.UNIT;
}
});
}
use of org.abs_models.backend.java.lib.runtime.ABSClosure in project abstools by abstools.
the class ObjectMirror method setupAPI.
public static void setupAPI() {
thisClass.setName("ObjectMirror");
/*
* getClassName: get name of object's class
*/
thisClass.addMethod(/*ABSString*/
"getClassName", new ABSClosure() {
@Override
public ABSString exec(ABSDynamicObject t, ABSValue... params) {
ABSString name;
name = ABSString.fromString(((ABSDynamicObject) t.dispatch("getObject")).getClassName());
return name;
}
});
/*
* getClass: get class of object
*/
thisClass.addMethod(/*ABSDynamicObject<Clazz>*/
"getClass", new ABSClosure() {
@Override
public ABSDynamicObject exec(ABSDynamicObject t, ABSValue... params) {
ABSDynamicClass cls = ((ABSDynamicObject) t.dispatch("getObject")).getClazz();
ABSDynamicObject o = new ABSDynamicObject(Clazz.singleton());
o.setFieldValue("class", cls);
return o;
}
});
/*
* setClass: set new class for object
*/
thisClass.addMethod(/*Unit*/
"setClass", new ABSClosure() {
@Override
public ABSUnit exec(ABSDynamicObject t, ABSValue... params) {
ABSDynamicClass cls = (ABSDynamicClass) ((ABSDynamicObject) params[0]).getFieldValue_Internal("class");
((ABSDynamicObject) t.dispatch("getObject")).setClazz(cls);
return ABSUnit.UNIT;
}
});
/*
* respondsTo: find out whether object responds to given method
*/
thisClass.addMethod(/*ABSBool*/
"respondsTo", new ABSClosure() {
@Override
public ABSBool exec(ABSDynamicObject t, ABSValue... params) {
ABSDynamicClass cls = (ABSDynamicClass) ((ABSDynamicObject) t.dispatch("getObject")).getClazz();
return ABSBool.fromBoolean(cls.hasMethod(((ABSString) params[0]).getString()));
}
});
// TODO: getFieldValue(), setFieldValue()
thisClass.addMethod(/*ABSDynamicObject<COG>*/
"getCog", new ABSClosure() {
@Override
public ABSDynamicObject exec(ABSDynamicObject t, ABSValue... params) {
COG cog = ((ABSDynamicObject) t.dispatch("getObject")).getCOG();
ABSDynamicObject o = new ABSDynamicObject(Cog.singleton());
o.setFieldValue("cog", cog);
return o;
}
});
thisClass.addMethod(/*Unit*/
"setCog", new ABSClosure() {
@Override
public ABSUnit exec(ABSDynamicObject t, ABSValue... params) {
((ABSDynamicObject) t.dispatch("getObject")).setCOG((COG) params[0]);
return ABSUnit.UNIT;
}
});
/*
* getObject: obtain the mirrored object
*/
thisClass.addMethod(/*ABSDynamicObject*/
"getObject", new ABSClosure() {
@Override
public ABSDynamicObject exec(ABSDynamicObject t, ABSValue... params) {
ABSDynamicObject object;
object = (ABSDynamicObject) t.getFieldValue_Internal("object");
return object;
}
});
}
use of org.abs_models.backend.java.lib.runtime.ABSClosure in project abstools by abstools.
the class ProductLine method setupAPI.
private static void setupAPI() {
thisClass.setName("ProductLine");
/*
* MetaABS ProductLine API -- cf. abslang.abs module ABS.Meta
*/
thisClass.addMethod(/*ABSDynamicProduct*/
"getCurrentProduct", new ABSClosure() {
@Override
public ABSDynamicProduct exec(ABSDynamicObject t, ABSValue... params) {
ABSDynamicProduct currentProd = t.__ABS_getRuntime().getDSPL().getCurrentProduct();
return currentProd;
}
});
thisClass.addMethod(/*ABSDynamicProduct*/
"getProduct", new ABSClosure() {
@Override
public ABSDynamicProduct exec(ABSDynamicObject t, ABSValue... params) {
ABSString name = (ABSString) params[0];
ABSDynamicProduct product = t.__ABS_getRuntime().getDSPL().getProduct(name.getString());
return product;
}
});
thisClass.addMethod(/*ABSUnit*/
"reconfigure", new ABSClosure() {
@Override
public ABSUnit exec(ABSDynamicObject t, ABSValue... params) {
ABSDynamicProduct targetProd = (ABSDynamicProduct) params[0];
ABSDynamicProductLine pl = t.__ABS_getRuntime().getDSPL();
pl.reconfigure(targetProd);
return ABSUnit.UNIT;
}
});
thisClass.addMethod(/*ABSUnit*/
"addProduct", new ABSClosure() {
@Override
public ABSUnit exec(ABSDynamicObject t, ABSValue... params) {
ABSDynamicProduct product = (ABSDynamicProduct) params[0];
t.__ABS_getRuntime().getDSPL().addProduct(product);
return ABSUnit.UNIT;
}
});
thisClass.addMethod(/*ABSUnit*/
"removeProduct", new ABSClosure() {
@Override
public ABSUnit exec(ABSDynamicObject t, ABSValue... params) {
ABSDynamicProduct product = (ABSDynamicProduct) params[0];
t.__ABS_getRuntime().getDSPL().removeProduct(product);
return ABSUnit.UNIT;
}
});
thisClass.addMethod(/*ABSUnit*/
"addReconfiguration", new ABSClosure() {
@Override
public ABSUnit exec(ABSDynamicObject t, ABSValue... params) {
ABSDynamicReconfiguration recf = (ABSDynamicReconfiguration) params[0];
t.__ABS_getRuntime().getDSPL().addReconfiguration(recf);
return ABSUnit.UNIT;
}
});
thisClass.addMethod(/*ABSUnit*/
"removeReconfiguration", new ABSClosure() {
@Override
public ABSUnit exec(ABSDynamicObject t, ABSValue... params) {
ABSDynamicReconfiguration recf = (ABSDynamicReconfiguration) params[0];
t.__ABS_getRuntime().getDSPL().removeReconfiguration(recf);
return ABSUnit.UNIT;
}
});
}
Aggregations