1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* */
/* This file is part of the program and library */
/* SCIP --- Solving Constraint Integer Programs */
/* */
/* Copyright 2002-2022 Zuse Institute Berlin */
/* */
/* Licensed under the Apache License, Version 2.0 (the "License"); */
/* you may not use this file except in compliance with the License. */
/* You may obtain a copy of the License at */
/* */
/* http://www.apache.org/licenses/LICENSE-2.0 */
/* */
/* Unless required by applicable law or agreed to in writing, software */
/* distributed under the License is distributed on an "AS IS" BASIS, */
/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */
/* See the License for the specific language governing permissions and */
/* limitations under the License. */
/* */
/* You should have received a copy of the Apache-2.0 license */
/* along with SCIP; see the file LICENSE. If not visit scipopt.org. */
/* */
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/**@file type_reader.h
* @ingroup TYPEDEFINITIONS
* @brief type definitions for input file readers
* @author Tobias Achterberg
*/
/** @defgroup DEFPLUGINS_READER Default Readers
* @ingroup DEFPLUGINS
* @brief implementation files (.c files) of the default readers of SCIP
*/
/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
#ifndef __SCIP_TYPE_READER_H__
#define __SCIP_TYPE_READER_H__
#include "scip/def.h"
#include "scip/type_cons.h"
#include "scip/type_retcode.h"
#include "scip/type_result.h"
#include "scip/type_scip.h"
#include "scip/type_var.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct SCIP_Reader SCIP_READER; /**< reader data structure */
typedef struct SCIP_ReaderData SCIP_READERDATA; /**< reader specific data */
/** copy method for reader plugins (called when SCIP copies plugins)
*
* input:
* - scip : SCIP main data structure
* - reader : the reader itself
*/
#define SCIP_DECL_READERCOPY(x) SCIP_RETCODE x (SCIP* scip, SCIP_READER* reader)
/** destructor of reader to free user data (called when SCIP is exiting)
*
* input:
* - scip : SCIP main data structure
* - reader : the reader itself
*/
#define SCIP_DECL_READERFREE(x) SCIP_RETCODE x (SCIP* scip, SCIP_READER* reader)
/** problem reading method of reader
*
* input:
* - scip : SCIP main data structure
* - reader : the reader itself
* - filename : full path and name of file to read, or NULL if stdin should be used
* - result : pointer to store the result of the file reading call
*
* possible return values for *result:
* - SCIP_SUCCESS : the reader read the file correctly and created an appropriate problem
* - SCIP_DIDNOTRUN : the reader is not responsible for given input file
*
* If the reader detected an error in the input file, it should return with RETCODE SCIP_READERROR or SCIP_NOFILE.
*/
#define SCIP_DECL_READERREAD(x) SCIP_RETCODE x (SCIP* scip, SCIP_READER* reader, const char* filename, SCIP_RESULT* result)
/** problem writing method of reader; NOTE: if the parameter "genericnames" is TRUE, then
* SCIP already set all variable and constraint names to generic names; therefore, this
* method should always use SCIPvarGetName() and SCIPconsGetName();
*
* input:
* - scip : SCIP main data structure
* - reader : the reader itself
* - file : output file, or NULL if standard output should be used
* - name : problem name
* - probdata : user problem data set by the reader
* - transformed : TRUE iff problem is the transformed problem
* - objsense : objective sense
* - objscale : scalar applied to objective function; external objective value is
extobj = objsense * objscale * (intobj + objoffset)
* - objoffset : objective offset from bound shifting and fixing
* - vars : array with active variables ordered binary, integer, implicit, continuous
* - nvars : number of active variables in the problem
* - nbinvars : number of binary variables
* - nintvars : number of general integer variables
* - nimplvars : number of implicit integer variables
* - ncontvars; : number of continuous variables
* - fixedvars : array with fixed and aggregated variables
* - nfixedvars : number of fixed and aggregated variables in the problem
* - startnvars : number of variables existing when problem solving started
* - conss : array with constraints of the problem
* - nconss : number of constraints in the problem
* - maxnconss : maximum number of constraints existing at the same time
* - startnconss : number of constraints existing when problem solving started
* - genericnames : using generic variable and constraint names?
* - result : pointer to store the result of the file reading call
*
* possible return values for *result:
* - SCIP_SUCCESS : the reader wrote the file correctly
* - SCIP_DIDNOTRUN : the reader is not responsible for given input file
*
* If the reader detected an error while writing the output file, it should return with RETCODE SCIP_WRITEERROR
*/
#define SCIP_DECL_READERWRITE(x) SCIP_RETCODE x (SCIP* scip, SCIP_READER* reader, FILE* file, \
const char* name, SCIP_PROBDATA* probdata, SCIP_Bool transformed, \
SCIP_OBJSENSE objsense, SCIP_Real objscale, SCIP_Real objoffset, \
SCIP_VAR** vars, int nvars, int nbinvars, int nintvars, int nimplvars, int ncontvars, \
SCIP_VAR** fixedvars, int nfixedvars, int startnvars, \
SCIP_CONS** conss, int nconss, int maxnconss, int startnconss, \
SCIP_Bool genericnames, SCIP_RESULT* result)
#ifdef __cplusplus
}
#endif
#endif