View Javadoc

1   package org.sat4j.csp.xml;
2   public interface ICSPCallback {
3   
4   	/**
5   	 * signal the beginning of parsing
6   	 * 
7   	 * @param name
8   	 *            name of the instance
9   	 */
10  	void beginInstance(String name);
11  
12  	/** ***************************************************************** */
13  
14  	/**
15  	 * callback called at the beginning of the domains declarations
16  	 * 
17  	 * @param nbDomains
18  	 *            number of domains that will be declared
19  	 */
20  	void beginDomainsSection(int nbDomains);
21  
22  	/**
23  	 * callback called at the beginning of the declaration of one domain
24  	 * 
25  	 * @param name
26  	 *            identifier of the domain
27  	 * @param nbValue
28  	 *            number of values in the domain
29  	 */
30  	void beginDomain(String name, int nbValue);
31  
32  	/**
33  	 * add a single value to the current domain
34  	 * 
35  	 * @param v
36  	 *            value to add to the domain
37  	 */
38  	void addDomainValue(int v);
39  
40  	/**
41  	 * add the range of values [first..last] to the current domain
42  	 * 
43  	 * @param first
44  	 *            first value to add to the domain
45  	 * @param last
46  	 *            last value to add to the domain
47  	 */
48  	void addDomainValue(int first, int last);
49  
50  	/**
51  	 * ends the definition of the current domain
52  	 */
53  	void endDomain();
54  
55  	/**
56  	 * end the definition of all domains
57  	 */
58  	void endDomainsSection();
59  
60  	/** ***************************************************************** */
61  
62  	/**
63  	 * callback called at the beginning of the variables declarations
64  	 * 
65  	 * @param nbVariables
66  	 *            number of variables that will be declared
67  	 */
68  	void beginVariablesSection(int nbVariables);
69  
70  	/**
71  	 * callback called to define a new variable
72  	 * 
73  	 * @param name
74  	 *            identifier of the variable
75  	 * @param domain
76  	 *            identifier of the variable domain
77  	 */
78  	void addVariable(String name, String domain);
79  
80  	/**
81  	 * end the definition of all variables
82  	 */
83  	void endVariablesSection();
84  
85  	/** ***************************************************************** */
86  
87  	/**
88  	 * callback called at the beginning of the relations declarations
89  	 * 
90  	 * @param nbRelations
91  	 *            number of relations that will be declared
92  	 */
93  	void beginRelationsSection(int nbRelations);
94  
95  	/**
96  	 * callback called at the beginning of the declaration of one relation
97  	 * 
98  	 * @param name
99  	 *            identifier of the relation
100 	 * @param arity
101 	 *            arity of the relation
102 	 * @param nbTuples
103 	 *            number of tuples in the relation
104 	 * @param isSupport
105 	 *            true if tuples represent support, false if tuples represent
106 	 *            conflicts
107 	 */
108 	void beginRelation(String name, int arity, int nbTuples, boolean isSupport);
109 
110 	/**
111 	 * add a single tuple to the current relation
112 	 * 
113 	 * @param tuple
114 	 *            tuple to add to the relation (contains arity elements)
115 	 */
116 	void addRelationTuple(int tuple[]);
117 
118 	/**
119 	 * ends the definition of the current relation
120 	 */
121 	void endRelation();
122 
123 	/**
124 	 * end the definition of all relations
125 	 */
126 	void endRelationsSection();
127 
128 	/** ***************************************************************** */
129 
130 	/**
131 	 * callback called at the beginning of the predicates declarations
132 	 * 
133 	 * @param nbPredicates
134 	 *            number of predicates that will be declared
135 	 */
136 	void beginPredicatesSection(int nbPredicates);
137 
138 	/**
139 	 * callback called at the beginning of the declaration of one predicate
140 	 * 
141 	 * @param name
142 	 *            identifier of the predicate
143 	 */
144 	void beginPredicate(String name);
145 
146 	/**
147 	 * add a formal parameter to the current predicate
148 	 * 
149 	 * @param name
150 	 *            name of the parameter
151 	 * @param type
152 	 *            type of the parameter
153 	 */
154 	void addFormalParameter(String name, String type);
155 
156 	/**
157 	 * provide the expression of the current predicate
158 	 * 
159 	 * @param expr
160 	 *            the abstract syntax tree representing the expression
161 	 */
162 	void predicateExpression(String expr);
163 
164 	/**
165 	 * ends the definition of the current predicate
166 	 */
167 	void endPredicate();
168 
169 	/**
170 	 * end the definition of all predicates
171 	 */
172 	void endPredicatesSection();
173 
174 	/** ***************************************************************** */
175 
176 	/**
177 	 * callback called at the beginning of the constraints declarations
178 	 * 
179 	 * @param nbConstraints
180 	 *            number of constraints that will be declared
181 	 */
182 	void beginConstraintsSection(int nbConstraints);
183 
184 	/**
185 	 * callback called at the beginning of the declaration of one constraint
186 	 * 
187 	 * @param name
188 	 *            identifier of the constraint
189 	 * @param arity
190 	 *            arity of the constraint
191 	 */
192 	void beginConstraint(String name, int arity);
193 
194 	/**
195 	 * provide the definition of the current constraint
196 	 * 
197 	 * @param name
198 	 *            the refererence to the definition of this constraint. May be a
199 	 *            relation, a predicate or the name of a global constraint
200 	 */
201 	void constraintReference(String name);
202 
203 	/**
204 	 * declares that a variable is in the constraint scope
205 	 * 
206 	 * @param name
207 	 *            name of the variable
208 	 */
209 	void addVariableToConstraint(String name);
210 
211 	/**
212 	 * add an effective parameter which is a simple variable to the current
213 	 * constraint
214 	 * 
215 	 * @param name
216 	 *            name of the variable passed as parameter
217 	 */
218 	void addEffectiveParameter(String name);
219 
220 	/**
221 	 * add an effective parameter which is a simple integer
222 	 * 
223 	 * @param value
224 	 *            value of the parameter
225 	 */
226 	void addEffectiveParameter(int value);
227 	
228 	/**
229 	 * begins the list tag for parameters of a constraint
230 	 */
231 	void beginParameterList();
232 	
233 	/**
234 	 * provides an integer value in a parameter list of a constraint
235 	 * @param value
236 	 * 			value of current list item
237 	 */
238 	void addIntegerItem(int value);
239 	
240 	/**
241 	 * provides the name of a variable in a parameter list of a constraint
242 	 * @param name
243 	 * 			name of the current list item
244 	 */
245 	void addVariableItem(String name);
246 	
247 	/**
248 	 * ends the list tag for parameters of a constraint
249 	 */
250 	void endParamaterList();
251 	
252 	/**
253 	 * provides a constant value
254 	 */
255 	void addConstantParameter(String name, int value);
256 
257 	 
258 	/**
259 	 * provide the expression of the current constraint as an expression in a
260 	 * syntac chosen by the solver
261 	 * 
262 	 * @param expr
263 	 *            the expression
264 	 */
265 	void constraintExpression(String expr);
266 
267 	/**
268 	 * ends the definition of the current constraint
269 	 */
270 	void endConstraint();
271 
272 	/**
273 	 * end the definition of all constraints
274 	 */
275 	void endConstraintsSection();
276 
277 	/** ***************************************************************** */
278 
279 	/**
280 	 * signal the end of parsing
281 	 */
282 	void endInstance();
283 };