1    	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2    	/*                                                                           */
3    	/*                  This file is part of the program and library             */
4    	/*         SCIP --- Solving Constraint Integer Programs                      */
5    	/*                                                                           */
6    	/*  Copyright (c) 2002-2023 Zuse Institute Berlin (ZIB)                      */
7    	/*                                                                           */
8    	/*  Licensed under the Apache License, Version 2.0 (the "License");          */
9    	/*  you may not use this file except in compliance with the License.         */
10   	/*  You may obtain a copy of the License at                                  */
11   	/*                                                                           */
12   	/*      http://www.apache.org/licenses/LICENSE-2.0                           */
13   	/*                                                                           */
14   	/*  Unless required by applicable law or agreed to in writing, software      */
15   	/*  distributed under the License is distributed on an "AS IS" BASIS,        */
16   	/*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */
17   	/*  See the License for the specific language governing permissions and      */
18   	/*  limitations under the License.                                           */
19   	/*                                                                           */
20   	/*  You should have received a copy of the Apache-2.0 license                */
21   	/*  along with SCIP; see the file LICENSE. If not visit scipopt.org.         */
22   	/*                                                                           */
23   	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
24   	
25   	/**@file   pub_prop.h
26   	 * @ingroup PUBLICCOREAPI
27   	 * @brief  public methods for propagators
28   	 * @author Tobias Achterberg
29   	 */
30   	
31   	/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
32   	
33   	#ifndef __SCIP_PUB_PROP_H__
34   	#define __SCIP_PUB_PROP_H__
35   	
36   	
37   	#include "scip/def.h"
38   	#include "scip/type_misc.h"
39   	#include "scip/type_prop.h"
40   	
41   	#ifdef __cplusplus
42   	extern "C" {
43   	#endif
44   	
45   	/**@addtogroup PublicPropagatorMethods
46   	 *
47   	 * @{
48   	 */
49   	
50   	/** compares two propagators w. r. to their priority */
51   	SCIP_EXPORT
52   	SCIP_DECL_SORTPTRCOMP(SCIPpropComp);
53   	
54   	/** compares two propagators w. r. to their presolving priority */
55   	SCIP_EXPORT
56   	SCIP_DECL_SORTPTRCOMP(SCIPpropCompPresol);
57   	
58   	/** comparison method for sorting propagators w.r.t. to their name */
59   	SCIP_EXPORT
60   	SCIP_DECL_SORTPTRCOMP(SCIPpropCompName);
61   	
62   	/** gets user data of propagator */
63   	SCIP_EXPORT
64   	SCIP_PROPDATA* SCIPpropGetData(
65   	   SCIP_PROP*            prop                /**< propagator */
66   	   );
67   	
68   	/** sets user data of propagator; user has to free old data in advance! */
69   	SCIP_EXPORT
70   	void SCIPpropSetData(
71   	   SCIP_PROP*            prop,               /**< propagator */
72   	   SCIP_PROPDATA*        propdata            /**< new propagator user data */
73   	   );
74   	
75   	/** gets name of propagator */
76   	SCIP_EXPORT
77   	const char* SCIPpropGetName(
78   	   SCIP_PROP*            prop                /**< propagator */
79   	   );
80   	
81   	/** gets description of propagator */
82   	SCIP_EXPORT
83   	const char* SCIPpropGetDesc(
84   	   SCIP_PROP*            prop                /**< propagator */
85   	   );
86   	
87   	/** gets priority of propagator */
88   	SCIP_EXPORT
89   	int SCIPpropGetPriority(
90   	   SCIP_PROP*            prop                /**< propagator */
91   	   );
92   	
93   	/** gets presolving priority of propagator */
94   	SCIP_EXPORT
95   	int SCIPpropGetPresolPriority(
96   	   SCIP_PROP*            prop                /**< propagator */
97   	   );
98   	
99   	/** gets frequency of propagator */
100  	SCIP_EXPORT
101  	int SCIPpropGetFreq(
102  	   SCIP_PROP*            prop                /**< propagator */
103  	   );
104  	
105  	/** gets time in seconds used for setting up this propagator for new stages */
106  	SCIP_EXPORT
107  	SCIP_Real SCIPpropGetSetupTime(
108  	   SCIP_PROP*            prop                /**< propagator */
109  	   );
110  	
111  	/** sets frequency of propagator */
112  	SCIP_EXPORT
113  	void SCIPpropSetFreq(
114  	   SCIP_PROP*            prop,               /**< propagator */
115  	   int                   freq                /**< new frequency of propagator */
116  	   );
117  	
118  	/** gets time in seconds used in this propagator */
119  	SCIP_EXPORT
120  	SCIP_Real SCIPpropGetTime(
121  	   SCIP_PROP*            prop                /**< propagator */
122  	   );
123  	
124  	/** gets time in seconds used in this propagator during strong branching */
125  	SCIP_EXPORT
126  	SCIP_Real SCIPpropGetStrongBranchPropTime(
127  	   SCIP_PROP*            prop                /**< propagator */
128  	   );
129  	
130  	/** gets time in seconds used in this propagator for resolve propagation */
131  	SCIP_EXPORT
132  	SCIP_Real SCIPpropGetRespropTime(
133  	   SCIP_PROP*            prop                /**< propagator */
134  	   );
135  	
136  	/** gets time in seconds used in this propagator for presolving */
137  	SCIP_EXPORT
138  	SCIP_Real SCIPpropGetPresolTime(
139  	   SCIP_PROP*            prop                /**< propagator */
140  	   );
141  	
142  	/** gets the total number of times, the propagator was called */
143  	SCIP_EXPORT
144  	SCIP_Longint SCIPpropGetNCalls(
145  	   SCIP_PROP*            prop                /**< propagator */
146  	   );
147  	
148  	/** gets the total number of times, the propagator was called for resolving a propagation */
149  	SCIP_EXPORT
150  	SCIP_Longint SCIPpropGetNRespropCalls(
151  	   SCIP_PROP*            prop                /**< propagator */
152  	   );
153  	
154  	/** gets total number of times, this propagator detected a cutoff */
155  	SCIP_EXPORT
156  	SCIP_Longint SCIPpropGetNCutoffs(
157  	   SCIP_PROP*            prop                /**< propagator */
158  	   );
159  	
160  	/** gets total number of domain reductions found by this propagator */
161  	SCIP_EXPORT
162  	SCIP_Longint SCIPpropGetNDomredsFound(
163  	   SCIP_PROP*            prop                /**< propagator */
164  	   );
165  	
166  	/** should propagator be delayed, if other propagators found reductions? */
167  	SCIP_EXPORT
168  	SCIP_Bool SCIPpropIsDelayed(
169  	   SCIP_PROP*            prop                /**< propagator */
170  	   );
171  	
172  	/** was propagator delayed at the last call? */
173  	SCIP_EXPORT
174  	SCIP_Bool SCIPpropWasDelayed(
175  	   SCIP_PROP*            prop                /**< propagator */
176  	   );
177  	
178  	/** is propagator initialized? */
179  	SCIP_EXPORT
180  	SCIP_Bool SCIPpropIsInitialized(
181  	   SCIP_PROP*            prop                /**< propagator */
182  	   );
183  	
184  	/** gets number of variables fixed during presolving of propagator */
185  	SCIP_EXPORT
186  	int SCIPpropGetNFixedVars(
187  	   SCIP_PROP*            prop                /**< propagator */
188  	   );
189  	
190  	/** gets number of variables aggregated during presolving of propagator  */
191  	SCIP_EXPORT
192  	int SCIPpropGetNAggrVars(
193  	   SCIP_PROP*            prop                /**< propagator */
194  	   );
195  	
196  	/** gets number of variable types changed during presolving of propagator  */
197  	SCIP_EXPORT
198  	int SCIPpropGetNChgVarTypes(
199  	   SCIP_PROP*            prop                /**< propagator */
200  	   );
201  	
202  	/** gets number of bounds changed during presolving of propagator  */
203  	SCIP_EXPORT
204  	int SCIPpropGetNChgBds(
205  	   SCIP_PROP*            prop                /**< propagator */
206  	   );
207  	
208  	/** gets number of holes added to domains of variables during presolving of propagator  */
209  	SCIP_EXPORT
210  	int SCIPpropGetNAddHoles(
211  	   SCIP_PROP*            prop                /**< propagator */
212  	   );
213  	
214  	/** gets number of constraints deleted during presolving of propagator */
215  	SCIP_EXPORT
216  	int SCIPpropGetNDelConss(
217  	   SCIP_PROP*            prop                /**< propagator */
218  	   );
219  	
220  	/** gets number of constraints added during presolving of propagator */
221  	SCIP_EXPORT
222  	int SCIPpropGetNAddConss(
223  	   SCIP_PROP*            prop                /**< propagator */
224  	   );
225  	
226  	/** gets number of constraints upgraded during presolving of propagator  */
227  	SCIP_EXPORT
228  	int SCIPpropGetNUpgdConss(
229  	   SCIP_PROP*            prop                /**< propagator */
230  	   );
231  	
232  	/** gets number of coefficients changed during presolving of propagator */
233  	SCIP_EXPORT
234  	int SCIPpropGetNChgCoefs(
235  	   SCIP_PROP*            prop                /**< propagator */
236  	   );
237  	
238  	/** gets number of constraint sides changed during presolving of propagator */
239  	SCIP_EXPORT
240  	int SCIPpropGetNChgSides(
241  	   SCIP_PROP*            prop                /**< propagator */
242  	   );
243  	
244  	/** gets number of times the propagator was called in presolving and tried to find reductions */
245  	SCIP_EXPORT
246  	int SCIPpropGetNPresolCalls(
247  	   SCIP_PROP*            prop                /**< propagator */
248  	   );
249  	
250  	/** returns the timing mask of the propagator */
251  	SCIP_EXPORT
252  	SCIP_PROPTIMING SCIPpropGetTimingmask(
253  	   SCIP_PROP*            prop                /**< propagator */
254  	   );
255  	
256  	/** does the propagator perform presolving? */
257  	SCIP_EXPORT
258  	SCIP_Bool SCIPpropDoesPresolve(
259  	   SCIP_PROP*            prop                /**< propagator */
260  	   );
261  	
262  	/** returns the timing mask of the presolving method of the propagator */
263  	SCIP_EXPORT
264  	SCIP_PRESOLTIMING SCIPpropGetPresolTiming(
265  	   SCIP_PROP*            prop                /**< propagator */
266  	   );
267  	
268  	/** sets the timing mask of the presolving method of the propagator */
269  	SCIP_EXPORT
270  	void SCIPpropSetPresolTiming(
271  	   SCIP_PROP*            prop,               /**< propagator */
272  	   SCIP_PRESOLTIMING     presoltiming        /** timing mask to be set */
273  	   );
274  	
275  	/** @} */
276  	
277  	#ifdef __cplusplus
278  	}
279  	#endif
280  	
281  	#endif
282