00001 package com.declarativa.interprolog.examples;
00002 import com.declarativa.interprolog.*;
00003 import com.xsb.interprolog.*;
00004 import java.util.*;
00005 public class BackEnd{
00006 public static class Record implements java.io.Serializable{
00007 String plainText;
00008 int plainCount;
00009 String cyberText;
00010 float cyberCount;
00011 public String toString(){
00012 return "plain:"+plainText+" plainCount:"+plainCount+" \ncyberText:"+cyberText+" cyberCount="+cyberCount;
00013 }
00014 }
00015 public static void main(String args[]) {
00016 String prologCommand = com.declarativa.interprolog.gui.ListenerWindow.commandArgs(args);
00017 PrologEngine engine = new NativeEngine(prologCommand);
00018 engine.deterministicGoal("import reverse/2,length/2 from basics");
00019 if (!engine.deterministicGoal("length([1,2],2)")) System.out.println("huhuhuh");
00020 engine.teachOneObject(new Record());
00021 Record r = new Record();
00022 r.plainText="Declarative is good"; r.plainCount=19;
00023 Object[] objectsToGo = new Object[]{r};
00024 String goal = "ipObjectSpec('com.declarativa.interprolog.examples.BackEnd$Record',[plainCount=PC,plainText=string(S)],R)";
00025 goal += ", name(S,Chars), length(Chars,PC), reverse(Chars,Reversed), name(RS,Reversed), CC is PC+0.0";
00026 goal += ", ipObjectSpec('com.declarativa.interprolog.examples.BackEnd$Record',[cyberText=string(RS),cyberCount=CC],NewR)";
00027 System.out.println("Calling "+goal);
00028 Object[] bindings = engine.deterministicGoal(goal, "[R]", objectsToGo, "[NewR]");
00029 Record result = (Record)bindings[0];
00030 System.out.println(result);
00031 }
00032 }