public SolutionSet GetAllSolutions(string query, int maxSolutionCount) { SolutionSet solutions = new SolutionSet(); try { Query = solutions.Query = query + (query.EndsWith(".") ? null : "."); // append a dot if necessary int i = 0; bool found = false; bool varFound = false; foreach (PrologEngine.ISolution s in SolutionIterator) { if (Error) { solutions.ErrMsg = s.ToString(); break; } else if (!found && !s.Solved) { break; } solutions.Success = true; bool firstVar = true; foreach (PrologEngine.IVarValue varValue in s.VarValuesIterator) { if (varValue.DataType == "none") { break; } if (firstVar) { firstVar = false; solutions.CreateVarSet(); } solutions.AddToVarSet(varValue.Name, varValue.DataType, varValue.Value.ToString()); varFound = true; } if (++i == maxSolutionCount || !varFound) { break; } found = true; } } catch (Exception e) { solutions.ErrMsg = e.Message; } return(solutions); }
public SolutionSet GetAllSolutions(string sourceFileName, string query, int maxSolutionCount) { Reset (); SolutionSet solutions = new SolutionSet (); try { if (sourceFileName != null) Consult (sourceFileName); Query = solutions.Query = query + (query.EndsWith (".") ? null : "."); // append a dot if necessary int i = 0; bool found = false; bool varFound = false; foreach (PrologEngine.ISolution s in SolutionIterator) { if (Error) { solutions.ErrMsg = s.ToString (); break; } else if (!found && !s.Solved) break; solutions.Success = true; bool firstVar = true; foreach (PrologEngine.IVarValue varValue in s.VarValuesIterator) { if (varValue.DataType == "none") break; if (firstVar) { firstVar = false; solutions.CreateVarSet (); } solutions.AddToVarSet (varValue.Name, varValue.DataType, varValue.Value.ToString ()); varFound = true; } if (++i == maxSolutionCount || !varFound) break; found = true; } } catch (Exception e) { solutions.ErrMsg = e.Message; } return solutions; }