// q
CompilerMessageLogger messageLogger = new MessageLogger();
WorkspaceManager workspaceManager = calServices.getWorkspaceManager();
Compiler compiler = calServices.getCompiler();
CALExecutor executor = workspaceManager.makeExecutor(executionContext);
List<EntryPointSpec> entryPointSpecs = new ArrayList<EntryPointSpec>(); //list of EntryPointSpec
//the below 2 functions represent a model of what is created when using EntryPointSpec classes i.e.
//explicit input and output policies.
//allPrimesAdjunct :: Prelude.JObject;
//allPrimesAdjunct = (\x -> Prelude.output ((Prelude.unsafeCoerce x) :: Prelude.CalValue)) M1.allPrimes;
//
//takeNIntAdjunct :: Prelude.JObject -> Prelude.JObject -> Prelude.JObject;
//takeNIntAdjunct list nToTake =
// (\x -> Prelude.output ((Prelude.unsafeCoerce x) :: ([Int], CalValue)))
// (takeN
// ((\x -> (Prelude.unsafeCoerce ((Prelude.input x) :: Prelude.CalValue)) :: [Prelude.Int]) list)
// ((Prelude.input :: Prelude.JObject -> Prelude.Int) nToTake)
// );
EntryPointSpec allPrimesEntryPointSpec =
EntryPointSpec.make(QualifiedName.make(CALPlatformTestModuleNames.M1, "allPrimes"), new InputPolicy[] {}, OutputPolicy.CAL_VALUE_OUTPUT_POLICY);
EntryPointSpec stringListEntryPointSpec =
EntryPointSpec.make(QualifiedName.make(CALPlatformTestModuleNames.M2, "stringList"), new InputPolicy[] {}, OutputPolicy.CAL_VALUE_OUTPUT_POLICY);
String Prelude_Int = CAL_Prelude.TypeConstructors.Int.getQualifiedName();
String Prelude_CalValue = CAL_Prelude.TypeConstructors.CalValue.getQualifiedName();
String Prelude_String = CAL_Prelude.TypeConstructors.String.getQualifiedName();
String Prelude_unsafeCoerce = CAL_Prelude.Functions.unsafeCoerce.getQualifiedName();
String Prelude_output = CAL_Prelude.Functions.output.getQualifiedName();
SourceModel.TypeExprDefn listOfIntType = SourceModel.TypeExprDefn.List.make(SourceModel.TypeExprDefn.TypeCons.make(CAL_Prelude.TypeConstructors.Int));
EntryPointSpec takeNListOfInt =
EntryPointSpec.make(QualifiedName.make(CALPlatformTestModuleNames.M2, "takeN"), new InputPolicy[] {
InputPolicy.makeTypedCalValueInputPolicy(listOfIntType),
InputPolicy.DEFAULT_INPUT_POLICY
}, OutputPolicy.make("(\\x -> " + Prelude_output + " ((" + Prelude_unsafeCoerce + " x) :: ([" + Prelude_Int + "], " + Prelude_CalValue + ")))"));
SourceModel.TypeExprDefn listOfStringType = SourceModel.TypeExprDefn.List.make(SourceModel.TypeExprDefn.TypeCons.make(CAL_Prelude.TypeConstructors.String));
EntryPointSpec takeNListOfString =
EntryPointSpec.make(QualifiedName.make(CALPlatformTestModuleNames.M2, "takeN"), new InputPolicy[] {
InputPolicy.makeTypedCalValueInputPolicy(listOfStringType),
InputPolicy.DEFAULT_INPUT_POLICY
}, OutputPolicy.make("(\\x -> " + Prelude_output + " ((" + Prelude_unsafeCoerce + " x) :: ([" + Prelude_String + "], " + Prelude_CalValue + ")))"));
entryPointSpecs.add(allPrimesEntryPointSpec);
entryPointSpecs.add(stringListEntryPointSpec);
entryPointSpecs.add(takeNListOfInt);
entryPointSpecs.add(takeNListOfString);
List<EntryPoint> entryPoints =
compiler.getEntryPoints(entryPointSpecs, CALPlatformTestModuleNames.M2, messageLogger);
if (messageLogger.getNMessages() > 0) {
System.err.println(messageLogger.toString());
}
EntryPoint allPrimesEntryPoint = entryPoints.get(0);
EntryPoint stringListEntryPoint = entryPoints.get(1);