1 /**
2 * Copyright (c) 2008 Olivier ROUSSEL (olivier.roussel <at> cril.univ-artois.fr)
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
5 * of this software and associated documentation files (the "Software"), to deal
6 * in the Software without restriction, including without limitation the rights
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 * copies of the Software, and to permit persons to whom the Software is
9 * furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20 * THE SOFTWARE.
21 */
22 package org.sat4j.csp.main;
23 import org.sat4j.csp.xml.ICSPCallback;
24
25 public class SimpleCallback implements ICSPCallback {
26
27 /**
28 * signal the beginning of parsing
29 *
30 * @param name
31 * name of the instance
32 */
33 public void beginInstance(String name) {
34 System.out.println("begin instance : " + name);
35 }
36
37 /** ***************************************************************** */
38
39 /**
40 * callback called at the beginning of the domains declarations
41 *
42 * @param nbDomains
43 * number of domains that will be declared
44 */
45 public void beginDomainsSection(int nbDomains) {
46 System.out.println("begin domain section - number of domains : "
47 + nbDomains);
48 }
49
50 /**
51 * callback called at the beginning of the declaration of one domain
52 *
53 * @param name
54 * identifier of the domain
55 * @param nbValue
56 * number of values in the domain
57 */
58 public void beginDomain(String name, int nbValue) {
59 System.out.println("begin domain : " + name + " - number of values : "
60 + nbValue);
61 }
62
63 /**
64 * add a single value to the current domain
65 *
66 * @param v
67 * value to add to the domain
68 */
69 public void addDomainValue(int v) {
70 //System.out.println("value : " + v);
71 }
72
73 /**
74 * add the range of values [first..last] to the current domain
75 *
76 * @param first
77 * first value to add to the domain
78 * @param last
79 * last value to add to the domain
80 */
81 public void addDomainValue(int first, int last) {
82 //System.out.println("values between " + first + " and " + last);
83 }
84
85 /**
86 * ends the definition of the current domain
87 */
88 public void endDomain() {
89 System.out.println("end domain");
90 }
91
92 /**
93 * end the definition of all domains
94 */
95 public void endDomainsSection() {
96 System.out.println("end domain section");
97 }
98
99 /** ***************************************************************** */
100
101 /**
102 * callback called at the beginning of the variables declarations
103 *
104 * @param nbVariables
105 * number of variables that will be declared
106 */
107 public void beginVariablesSection(int nbVariables) {
108 System.out.println("begin variables section - number of variables : "
109 + nbVariables);
110 }
111
112 /**
113 * callback called to define a new variable
114 *
115 * @param name
116 * identifier of the variable
117 * @param domain
118 * identifier of the variable domain
119 */
120 public void addVariable(String name, String domain) {
121 //System.out.println("variable - name : " + name + " - domain :" + domain);
122 }
123
124 /**
125 * end the definition of all variables
126 */
127 public void endVariablesSection() {
128 System.out.println("end variables section");
129 }
130
131 /** ***************************************************************** */
132
133 /**
134 * callback called at the beginning of the relations declarations
135 *
136 * @param nbRelations
137 * number of relations that will be declared
138 */
139 public void beginRelationsSection(int nbRelations) {
140 System.out.println("begin relations section - number of relations : "
141 + nbRelations);
142 }
143
144 /**
145 * callback called at the beginning of the declaration of one relation
146 *
147 * @param name
148 * identifier of the relation
149 * @param arity
150 * arity of the relation
151 * @param nbTuples
152 * number of tuples in the relation
153 * @param isSupport
154 * true if tuples represent support, false if tuples represent
155 * conflicts
156 */
157 public void beginRelation(String name, int arity, int nbTuples,
158 boolean isSupport) {
159 // System.out.println("relation - name : " + name + " - arity : " + arity
160 // + " - number of tuples : " + nbTuples
161 // + (isSupport ? " - support" : " - conflict"));
162 }
163
164 /**
165 * add a single tuple to the current relation
166 *
167 * @param tuple
168 * tuple to add to the relation (contains arity elements)
169 */
170 public void addRelationTuple(int tuple[]) {
171 // System.out.print("tuple : ");
172 // for (int i : tuple)
173 // System.out.print(i+" ");
174 // System.out.println();
175 }
176
177 /**
178 * ends the definition of the current relation
179 */
180 public void endRelation() {
181 // System.out.println("end relation");
182 }
183
184 /**
185 * end the definition of all relations
186 */
187 public void endRelationsSection() {
188 System.out.println("end relations section");
189 }
190
191 /** ***************************************************************** */
192
193 /**
194 * callback called at the beginning of the predicates declarations
195 *
196 * @param nbPredicates
197 * number of predicates that will be declared
198 */
199 public void beginPredicatesSection(int nbPredicates) {
200 System.out.println("begin predicates section - number of predicates : "
201 + nbPredicates);
202 }
203
204 /**
205 * callback called at the beginning of the declaration of one predicate
206 *
207 * @param name
208 * identifier of the predicate
209 */
210 public void beginPredicate(String name) {
211 System.out.println("predicate - name : " + name);
212 }
213
214 /**
215 * add a formal parameter to the current predicate
216 *
217 * @param name
218 * name of the parameter
219 * @param type
220 * type of the parameter
221 */
222 public void addFormalParameter(String name, String type) {
223 System.out.println("parameter - name : " + name + " - type : " + type);
224 }
225
226 /**
227 * provide the expression of the current predicate
228 *
229 * @param expression
230 * the abstract syntax tree representing the expression
231 */
232 public void predicateExpression(String expression) {
233 System.out.println("predicate expression : " + expression);
234 }
235
236 /**
237 * ends the definition of the current predicate
238 */
239 public void endPredicate() {
240 System.out.println("end predicate");
241 }
242
243 /**
244 * end the definition of all predicates
245 */
246 public void endPredicatesSection() {
247 System.out.println("end predicates section");
248 }
249
250 /** ***************************************************************** */
251
252 /**
253 * callback called at the beginning of the constraints declarations
254 *
255 * @param nbConstraints
256 * number of constraints that will be declared
257 */
258 public void beginConstraintsSection(int nbConstraints) {
259 System.out
260 .println("begin constraints section - number of constraints : "
261 + nbConstraints);
262 }
263
264 /**
265 * callback called at the beginning of the declaration of one constraint
266 *
267 * @param name
268 * identifier of the constraint
269 * @param arity
270 * arity of the constraint
271 */
272 public void beginConstraint(String name, int arity) {
273 System.out
274 .println("constraint - name : " + name + " - arity : " + arity);
275 }
276
277 /**
278 * provide the definition of the current constraint
279 *
280 * @param name
281 * the refererence to the definition of this constraint. May be a
282 * relation, a predicate or the name of a global constraint
283 */
284 public void constraintReference(String name) {
285 System.out.println("reference :" + name);
286 }
287
288 /**
289 * declares that a variable is in the constraint scope
290 *
291 * @param name
292 * name of the variable
293 */
294 public void addVariableToConstraint(String name) {
295 System.out.println("var : " + name);
296 }
297
298 /**
299 * add an effective parameter which is a simple variable to the current
300 * constraint
301 *
302 * @param name
303 * name of the variable passed as parameter
304 */
305 public void addEffectiveParameter(String name) {
306 System.out.println("param : " + name);
307 }
308
309 /**
310 * add an effective parameter which is a simple variable to the current
311 * constraint
312 *
313 * @param value
314 * name of the variable passed as parameter
315 */
316 public void addEffectiveParameter(int value) {
317 System.out.println("param : " + value);
318 }
319
320 /**
321 * provide the expression of the current constraint as an expression in a
322 * syntac chosen by the solver
323 *
324 * @param expr
325 * the expression
326 */
327 public void constraintExpression(String expr) {
328 System.out.println("contraint expression : " + expr);
329 }
330
331 /**
332 * ends the definition of the current constraint
333 */
334 public void endConstraint() {
335 System.out.println("end constraint");
336 }
337
338 /**
339 * end the definition of all constraints
340 */
341 public void endConstraintsSection() {
342 System.out.println("end constraints section");
343 }
344
345 /**
346 * begins the list tag for parameters of a constraint
347 */
348 public void beginParameterList(){}
349
350 /**
351 * provides an integer value in a parameter list of a constraint
352 * @param value
353 * value of current list item
354 */
355 public void addIntegerItem(int value){}
356
357 /**
358 * provides the name of a variable in a parameter list of a constraint
359 * @param name
360 * name of the current list item
361 */
362 public void addVariableItem(String name){}
363
364 /**
365 * ends the list tag for parameters of a constraint
366 */
367 public void endParamaterList(){}
368
369 /**
370 * provides a constant value
371 */
372 public void addConstantParameter(String name, int value){}
373
374
375
376 /** ***************************************************************** */
377
378 /**
379 * signal the end of parsing
380 */
381 public void endInstance() {
382 System.out.println("end instance");
383 }
384
385 }