コード例 #1
0
        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);
        }
コード例 #2
0
        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;
        }