/**
* Copyright (c) 2009-2011, The HATS Consortium. All rights reserved.
* This file is licensed under the terms of the Modified BSD License.
*/
package abs.backend.java.lib.runtime.metaABS;
import abs.backend.java.lib.runtime.ABSClosure;
import abs.backend.java.lib.runtime.ABSDynamicClass;
import abs.backend.java.lib.runtime.ABSDynamicObject;
import abs.backend.java.lib.runtime.ABSDynamicProduct;
import abs.backend.java.lib.runtime.ABSDynamicProductLine;
import abs.backend.java.lib.runtime.ABSDynamicReconfiguration;
import abs.backend.java.lib.types.*;
public class ProductLine {
private static ABSDynamicClass thisClass;
/*
* Create the singleton "ProductLine" class object
*/
public static ABSDynamicClass singleton() {
if (thisClass == null) {
thisClass = new ABSDynamicClass();
setupAPI();
}
return thisClass;
}
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;
}
});
}
}