diff options
author | Charles Krinke | 2008-08-13 14:13:49 +0000 |
---|---|---|
committer | Charles Krinke | 2008-08-13 14:13:49 +0000 |
commit | 323ada012d3bed0c6f7a6d5d0ee14b409b7457c7 (patch) | |
tree | d5a2e30707baba7804aefb341774d6d51ca7b439 /OpenSim/Region/ScriptEngine/Shared/Api/Runtime/YieldProlog/BagofAnswers.cs | |
parent | Thank you, tyre, for a patch that fixes a null reference in LSL (diff) | |
download | opensim-SC_OLD-323ada012d3bed0c6f7a6d5d0ee14b409b7457c7.zip opensim-SC_OLD-323ada012d3bed0c6f7a6d5d0ee14b409b7457c7.tar.gz opensim-SC_OLD-323ada012d3bed0c6f7a6d5d0ee14b409b7457c7.tar.bz2 opensim-SC_OLD-323ada012d3bed0c6f7a6d5d0ee14b409b7457c7.tar.xz |
Mantis#1931. Thank you kindly, Kinoc for a patch that:
* Yield Prolog 1.0.1 Released : it passes all but 9 of the
421 tests in the ISO Prolog test suite (97.8%) .
* support dynamic predicates and rules.
* support 'import' to use external static functions
improves connection to C# functions
* Matches Yield Prolog r831
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Shared/Api/Runtime/YieldProlog/BagofAnswers.cs')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Runtime/YieldProlog/BagofAnswers.cs | 33 |
1 files changed, 5 insertions, 28 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/YieldProlog/BagofAnswers.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/YieldProlog/BagofAnswers.cs index c2bb0b7..4a4e052 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/YieldProlog/BagofAnswers.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/YieldProlog/BagofAnswers.cs | |||
@@ -113,6 +113,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.YieldProlog | |||
113 | } | 113 | } |
114 | } | 114 | } |
115 | 115 | ||
116 | // disable warning on l1, don't see how we can | ||
117 | // code this differently | ||
118 | #pragma warning disable 0168 | ||
119 | |||
116 | /// <summary> | 120 | /// <summary> |
117 | /// For each result, unify the _freeVariables and unify bagArrayVariable with the associated bag. | 121 | /// For each result, unify the _freeVariables and unify bagArrayVariable with the associated bag. |
118 | /// </summary> | 122 | /// </summary> |
@@ -127,27 +131,19 @@ namespace OpenSim.Region.ScriptEngine.Shared.YieldProlog | |||
127 | // No unbound free variables, so we only filled one bag. If empty, bagof fails. | 131 | // No unbound free variables, so we only filled one bag. If empty, bagof fails. |
128 | if (_findallBagArray.Count > 0) | 132 | if (_findallBagArray.Count > 0) |
129 | { | 133 | { |
130 | // disable warning: don't see how we can code this differently short | ||
131 | // of rewriting the whole thing | ||
132 | #pragma warning disable 0168 | ||
133 | foreach (bool l1 in bagArrayVariable.unify(_findallBagArray)) | 134 | foreach (bool l1 in bagArrayVariable.unify(_findallBagArray)) |
134 | yield return false; | 135 | yield return false; |
135 | #pragma warning restore 0168 | ||
136 | } | 136 | } |
137 | } | 137 | } |
138 | else | 138 | else |
139 | { | 139 | { |
140 | foreach (KeyValuePair<object[], List<object>> valuesAndBag in _bagForFreeVariables) | 140 | foreach (KeyValuePair<object[], List<object>> valuesAndBag in _bagForFreeVariables) |
141 | { | 141 | { |
142 | // disable warning: don't see how we can code this differently short | ||
143 | // of rewriting the whole thing | ||
144 | #pragma warning disable 0168 | ||
145 | foreach (bool l1 in YP.unifyArrays(_freeVariables, valuesAndBag.Key)) | 142 | foreach (bool l1 in YP.unifyArrays(_freeVariables, valuesAndBag.Key)) |
146 | { | 143 | { |
147 | foreach (bool l2 in bagArrayVariable.unify(valuesAndBag.Value)) | 144 | foreach (bool l2 in bagArrayVariable.unify(valuesAndBag.Value)) |
148 | yield return false; | 145 | yield return false; |
149 | } | 146 | } |
150 | #pragma warning restore 0168 | ||
151 | // Debug: Should we free memory of the answers already returned? | 147 | // Debug: Should we free memory of the answers already returned? |
152 | } | 148 | } |
153 | } | 149 | } |
@@ -161,15 +157,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.YieldProlog | |||
161 | public IEnumerable<bool> result(object Bag) | 157 | public IEnumerable<bool> result(object Bag) |
162 | { | 158 | { |
163 | Variable bagArrayVariable = new Variable(); | 159 | Variable bagArrayVariable = new Variable(); |
164 | // disable warning: don't see how we can code this differently short | ||
165 | // of rewriting the whole thing | ||
166 | #pragma warning disable 0168 | ||
167 | foreach (bool l1 in resultArray(bagArrayVariable)) | 160 | foreach (bool l1 in resultArray(bagArrayVariable)) |
168 | { | 161 | { |
169 | foreach (bool l2 in YP.unify(Bag, ListPair.make((List<object>)bagArrayVariable.getValue()))) | 162 | foreach (bool l2 in YP.unify(Bag, ListPair.make((List<object>)bagArrayVariable.getValue()))) |
170 | yield return false; | 163 | yield return false; |
171 | } | 164 | } |
172 | #pragma warning restore 0168 | ||
173 | } | 165 | } |
174 | 166 | ||
175 | /// <summary> | 167 | /// <summary> |
@@ -181,9 +173,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.YieldProlog | |||
181 | public IEnumerable<bool> resultSet(object Bag) | 173 | public IEnumerable<bool> resultSet(object Bag) |
182 | { | 174 | { |
183 | Variable bagArrayVariable = new Variable(); | 175 | Variable bagArrayVariable = new Variable(); |
184 | // disable warning: don't see how we can code this differently short | ||
185 | // of rewriting the whole thing | ||
186 | #pragma warning disable 0168 | ||
187 | foreach (bool l1 in resultArray(bagArrayVariable)) | 176 | foreach (bool l1 in resultArray(bagArrayVariable)) |
188 | { | 177 | { |
189 | List<object> bagArray = (List<object>)bagArrayVariable.getValue(); | 178 | List<object> bagArray = (List<object>)bagArrayVariable.getValue(); |
@@ -191,19 +180,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.YieldProlog | |||
191 | foreach (bool l2 in YP.unify(Bag, ListPair.makeWithoutRepeatedTerms(bagArray))) | 180 | foreach (bool l2 in YP.unify(Bag, ListPair.makeWithoutRepeatedTerms(bagArray))) |
192 | yield return false; | 181 | yield return false; |
193 | } | 182 | } |
194 | #pragma warning restore 0168 | ||
195 | } | 183 | } |
196 | 184 | ||
197 | public static IEnumerable<bool> bagofArray | 185 | public static IEnumerable<bool> bagofArray |
198 | (object Template, object Goal, IEnumerable<bool> goalIterator, Variable bagArrayVariable) | 186 | (object Template, object Goal, IEnumerable<bool> goalIterator, Variable bagArrayVariable) |
199 | { | 187 | { |
200 | BagofAnswers bagOfAnswers = new BagofAnswers(Template, Goal); | 188 | BagofAnswers bagOfAnswers = new BagofAnswers(Template, Goal); |
201 | // disable warning: don't see how we can code this differently short | ||
202 | // of rewriting the whole thing | ||
203 | #pragma warning disable 0168 | ||
204 | foreach (bool l1 in goalIterator) | 189 | foreach (bool l1 in goalIterator) |
205 | bagOfAnswers.add(); | 190 | bagOfAnswers.add(); |
206 | #pragma warning restore 0168 | ||
207 | return bagOfAnswers.resultArray(bagArrayVariable); | 191 | return bagOfAnswers.resultArray(bagArrayVariable); |
208 | } | 192 | } |
209 | 193 | ||
@@ -211,12 +195,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.YieldProlog | |||
211 | (object Template, object Goal, IEnumerable<bool> goalIterator, object Bag) | 195 | (object Template, object Goal, IEnumerable<bool> goalIterator, object Bag) |
212 | { | 196 | { |
213 | BagofAnswers bagOfAnswers = new BagofAnswers(Template, Goal); | 197 | BagofAnswers bagOfAnswers = new BagofAnswers(Template, Goal); |
214 | // disable warning: don't see how we can code this differently short | ||
215 | // of rewriting the whole thing | ||
216 | #pragma warning disable 0168 | ||
217 | foreach (bool l1 in goalIterator) | 198 | foreach (bool l1 in goalIterator) |
218 | bagOfAnswers.add(); | 199 | bagOfAnswers.add(); |
219 | #pragma warning restore 0168 | ||
220 | return bagOfAnswers.result(Bag); | 200 | return bagOfAnswers.result(Bag); |
221 | } | 201 | } |
222 | 202 | ||
@@ -224,14 +204,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.YieldProlog | |||
224 | (object Template, object Goal, IEnumerable<bool> goalIterator, object Bag) | 204 | (object Template, object Goal, IEnumerable<bool> goalIterator, object Bag) |
225 | { | 205 | { |
226 | BagofAnswers bagOfAnswers = new BagofAnswers(Template, Goal); | 206 | BagofAnswers bagOfAnswers = new BagofAnswers(Template, Goal); |
227 | // disable warning: don't see how we can code this differently short | ||
228 | // of rewriting the whole thing | ||
229 | #pragma warning disable 0168 | ||
230 | foreach (bool l1 in goalIterator) | 207 | foreach (bool l1 in goalIterator) |
231 | bagOfAnswers.add(); | 208 | bagOfAnswers.add(); |
232 | #pragma warning restore 0168 | ||
233 | return bagOfAnswers.resultSet(Bag); | 209 | return bagOfAnswers.resultSet(Bag); |
234 | } | 210 | } |
211 | #pragma warning restore 0168 | ||
235 | 212 | ||
236 | /// <summary> | 213 | /// <summary> |
237 | /// A TermArrayEqualityComparer implements IEqualityComparer to compare two object arrays using YP.termEqual. | 214 | /// A TermArrayEqualityComparer implements IEqualityComparer to compare two object arrays using YP.termEqual. |