import org.bridj.Pointer; //导入方法依赖的package包/类
@Test
public void controlTest() {
Pointer name = Pointer.pointerToCString("base");
Pointer program = Pointer.pointerToCString(PROGRAM3);
clingo_part p = new clingo_part();
p.name(name);
p.params(null);
p.size(0);
Pointer parts = Pointer.allocate(clingo_part.class);
parts.set(p);
Pointer major = Pointer.allocateInt();
Pointer minor = Pointer.allocateInt();
Pointer revision = Pointer.allocateInt();
LIB.clingo_version(major, minor, revision);
System.out.println("Clingo library version: " + major.getInt() + "." + minor.getInt() + "." + revision.getInt());
// create a control object and pass command line arguments
Pointer> control = Pointer.allocatePointer(clingo_control.class);
if (!LIB.clingo_control_new(null, 0, null, null, 20, control)) {
error(control, "Could not create controller");
}
long startTime = System.currentTimeMillis();
// add a logic program to the base part
if (!LIB.clingo_control_add(control.get(), name, null, 0, program)) {
error(control, "Error add the program to controller");
}
// ground the base part
if (!LIB.clingo_control_ground(control.get(), parts, 1, null, null)) {
error(control, "Error ground the program");
}
if (!solve(control)) {
error(control, "Error solving the program");
}
float endTime = (System.currentTimeMillis() - startTime) / 1000f;
System.out.println("Time:" + String.format(TIME_FORMAT, endTime) + "s");
LIB.clingo_control_free(control.get());
}