Scippy

SCIP

Solving Constraint Integer Programs

scip_reader.h
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2 /* */
3 /* This file is part of the program and library */
4 /* SCIP --- Solving Constraint Integer Programs */
5 /* */
6 /* Copyright (C) 2002-2022 Konrad-Zuse-Zentrum */
7 /* fuer Informationstechnik Berlin */
8 /* */
9 /* SCIP is distributed under the terms of the ZIB Academic License. */
10 /* */
11 /* You should have received a copy of the ZIB Academic License */
12 /* along with SCIP; see the file COPYING. If not visit scipopt.org. */
13 /* */
14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15 
16 /**@file scip_reader.h
17  * @ingroup PUBLICCOREAPI
18  * @brief public methods for reader plugins
19  * @author Tobias Achterberg
20  * @author Timo Berthold
21  * @author Thorsten Koch
22  * @author Alexander Martin
23  * @author Marc Pfetsch
24  * @author Kati Wolter
25  * @author Gregor Hendel
26  * @author Leona Gottwald
27  */
28 
29 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
30 
31 #ifndef __SCIP_SCIP_READER_H__
32 #define __SCIP_SCIP_READER_H__
33 
34 
35 #include "scip/def.h"
36 #include "scip/type_cons.h"
37 #include "scip/type_prob.h"
38 #include "scip/type_reader.h"
39 #include "scip/type_result.h"
40 #include "scip/type_retcode.h"
41 #include "scip/type_scip.h"
42 #include "scip/type_var.h"
43 
44 #ifdef __cplusplus
45 extern "C" {
46 #endif
47 
48 /**@addtogroup PublicReaderMethods
49  *
50  * @{
51  */
52 
53 /** creates a reader and includes it in SCIP
54  *
55  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
56  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
57  *
58  * @pre This method can be called if SCIP is in one of the following stages:
59  * - \ref SCIP_STAGE_INIT
60  * - \ref SCIP_STAGE_PROBLEM
61  *
62  * @note method has all reader callbacks as arguments and is thus changed every time a new callback is added
63  * in future releases; consider using SCIPincludeReaderBasic() and setter functions
64  * if you seek for a method which is less likely to change in future releases
65  */
66 SCIP_EXPORT
68  SCIP* scip, /**< SCIP data structure */
69  const char* name, /**< name of reader */
70  const char* desc, /**< description of reader */
71  const char* extension, /**< file extension that reader processes */
72  SCIP_DECL_READERCOPY ((*readercopy)), /**< copy method of reader or NULL if you don't want to copy your plugin into sub-SCIPs */
73  SCIP_DECL_READERFREE ((*readerfree)), /**< destructor of reader */
74  SCIP_DECL_READERREAD ((*readerread)), /**< read method */
75  SCIP_DECL_READERWRITE ((*readerwrite)), /**< write method */
76  SCIP_READERDATA* readerdata /**< reader data */
77  );
78 
79 /** creates a reader and includes it in SCIP. All non-fundamental (or optional) callbacks will be set to NULL.
80  * Optional callbacks can be set via specific setter functions, see
81  * SCIPsetReaderCopy(), SCIPsetReaderFree(), SCIPsetReaderRead(), SCIPsetReaderWrite().
82  *
83  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
84  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
85  *
86  * @pre This method can be called if SCIP is in one of the following stages:
87  * - \ref SCIP_STAGE_INIT
88  * - \ref SCIP_STAGE_PROBLEM
89  *
90  * @note if you want to set all callbacks with a single method call, consider using SCIPincludeReader() instead
91  */
92 SCIP_EXPORT
94  SCIP* scip, /**< SCIP data structure */
95  SCIP_READER** readerptr, /**< reference to reader pointer, or NULL */
96  const char* name, /**< name of reader */
97  const char* desc, /**< description of reader */
98  const char* extension, /**< file extension that reader processes */
99  SCIP_READERDATA* readerdata /**< reader data */
100  );
101 
102 /** set copy method of reader
103  *
104  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
105  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
106  *
107  * @pre This method can be called if SCIP is in one of the following stages:
108  * - \ref SCIP_STAGE_INIT
109  * - \ref SCIP_STAGE_PROBLEM
110  */
111 SCIP_EXPORT
113  SCIP* scip, /**< SCIP data structure */
114  SCIP_READER* reader, /**< reader */
115  SCIP_DECL_READERCOPY ((*readercopy)) /**< copy method of reader or NULL if you don't want to copy your plugin into sub-SCIPs */
116  );
117 
118 /** set deinitialization method of reader
119  *
120  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
121  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
122  *
123  * @pre This method can be called if SCIP is in one of the following stages:
124  * - \ref SCIP_STAGE_INIT
125  * - \ref SCIP_STAGE_PROBLEM
126  */
127 SCIP_EXPORT
129  SCIP* scip, /**< SCIP data structure */
130  SCIP_READER* reader, /**< reader */
131  SCIP_DECL_READERFREE ((*readerfree)) /**< destructor of reader */
132  );
133 
134 /** set read method of reader
135  *
136  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
137  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
138  *
139  * @pre This method can be called if SCIP is in one of the following stages:
140  * - \ref SCIP_STAGE_INIT
141  * - \ref SCIP_STAGE_PROBLEM
142  */
143 SCIP_EXPORT
145  SCIP* scip, /**< SCIP data structure */
146  SCIP_READER* reader, /**< reader */
147  SCIP_DECL_READERREAD ((*readerread)) /**< read method of reader */
148  );
149 
150 /** set write method of reader
151  *
152  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
153  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
154  *
155  * @pre This method can be called if SCIP is in one of the following stages:
156  * - \ref SCIP_STAGE_INIT
157  * - \ref SCIP_STAGE_PROBLEM
158  */
159 SCIP_EXPORT
161  SCIP* scip, /**< SCIP data structure */
162  SCIP_READER* reader, /**< reader */
163  SCIP_DECL_READERWRITE ((*readerwrite)) /**< write method of reader */
164  );
165 
166 /** returns the reader of the given name, or NULL if not existing */
167 SCIP_EXPORT
169  SCIP* scip, /**< SCIP data structure */
170  const char* name /**< name of reader */
171  );
172 
173 /** returns the array of currently available readers */
174 SCIP_EXPORT
176  SCIP* scip /**< SCIP data structure */
177  );
178 
179 /** returns the number of currently available readers */
180 SCIP_EXPORT
181 int SCIPgetNReaders(
182  SCIP* scip /**< SCIP data structure */
183  );
184 
185 /** @} */
186 
187 #ifdef __cplusplus
188 }
189 #endif
190 
191 #endif
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:54
SCIP_DECL_READERWRITE(ReaderTSP::scip_write)
Definition: ReaderTSP.cpp:487
SCIP_READER * SCIPfindReader(SCIP *scip, const char *name)
Definition: scip_reader.c:226
type definitions for return codes for SCIP methods
SCIP_READER ** SCIPgetReaders(SCIP *scip)
Definition: scip_reader.c:239
type definitions for SCIP&#39;s main datastructure
type definitions for problem variables
struct SCIP_ReaderData SCIP_READERDATA
Definition: type_reader.h:44
SCIP_RETCODE SCIPincludeReaderBasic(SCIP *scip, SCIP_READER **readerptr, const char *name, const char *desc, const char *extension, SCIP_READERDATA *readerdata)
Definition: scip_reader.c:100
type definitions for input file readers
SCIP_RETCODE SCIPincludeReader(SCIP *scip, const char *name, const char *desc, const char *extension, SCIP_DECL_READERCOPY((*readercopy)), SCIP_DECL_READERFREE((*readerfree)), SCIP_DECL_READERREAD((*readerread)), SCIP_DECL_READERWRITE((*readerwrite)), SCIP_READERDATA *readerdata)
Definition: scip_reader.c:57
SCIP_RETCODE SCIPsetReaderWrite(SCIP *scip, SCIP_READER *reader, SCIP_DECL_READERWRITE((*readerwrite)))
Definition: scip_reader.c:210
SCIP_RETCODE SCIPsetReaderCopy(SCIP *scip, SCIP_READER *reader, SCIP_DECL_READERCOPY((*readercopy)))
Definition: scip_reader.c:138
type definitions for storing and manipulating the main problem
#define SCIP_DECL_READERCOPY(x)
Definition: type_reader.h:53
int SCIPgetNReaders(SCIP *scip)
Definition: scip_reader.c:250
result codes for SCIP callback methods
#define SCIP_DECL_READERREAD(x)
Definition: type_reader.h:78
SCIP_RETCODE SCIPsetReaderRead(SCIP *scip, SCIP_READER *reader, SCIP_DECL_READERREAD((*readerread)))
Definition: scip_reader.c:186
common defines and data types used in all packages of SCIP
SCIP_RETCODE SCIPsetReaderFree(SCIP *scip, SCIP_READER *reader, SCIP_DECL_READERFREE((*readerfree)))
Definition: scip_reader.c:162
type definitions for constraints and constraint handlers
#define SCIP_DECL_READERFREE(x)
Definition: type_reader.h:62