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 reader_wbo.c 26 * @ingroup DEFPLUGINS_READER 27 * @brief WBO file reader (OPB format with weighted constraints) 28 * @author Michael Winkler 29 */ 30 31 /* For file format description see opb-reader. */ 32 33 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/ 34 35 #include "scip/pub_message.h" 36 #include "scip/pub_reader.h" 37 #include "scip/reader_opb.h" 38 #include "scip/reader_wbo.h" 39 #include "scip/scip_reader.h" 40 #include <string.h> 41 42 #define READER_NAME "wboreader" 43 #define READER_DESC "file reader for pseudoboolean wbo file format" 44 #define READER_EXTENSION "wbo" 45 46 /* 47 * Callback methods of reader 48 */ 49 50 /** copy method for reader plugins (called when SCIP copies plugins) */ 51 static 52 SCIP_DECL_READERCOPY(readerCopyWbo) 53 { /*lint --e{715}*/ 54 assert(scip != NULL); 55 assert(reader != NULL); 56 assert(strcmp(SCIPreaderGetName(reader), READER_NAME) == 0); 57 58 /* call inclusion method of reader */ 59 SCIP_CALL( SCIPincludeReaderWbo(scip) ); 60 61 return SCIP_OKAY; 62 } 63 64 65 /** problem reading method of reader */ 66 static 67 SCIP_DECL_READERREAD(readerReadWbo) 68 { /*lint --e{715}*/ 69 70 SCIP_CALL( SCIPreadOpb(scip, reader, filename, result) ); 71 72 return SCIP_OKAY; 73 } 74 75 76 /** problem writing method of reader */ 77 static 78 SCIP_DECL_READERWRITE(readerWriteWbo) 79 { /*lint --e{715}*/ 80 SCIP_CALL( SCIPwriteOpb(scip, file, name, transformed, objsense, objscale, objoffset, vars, 81 nvars, nbinvars, nintvars, nimplvars, ncontvars, fixedvars, nfixedvars, conss, nconss, genericnames, result) ); 82 83 return SCIP_OKAY; 84 } 85 86 87 /* 88 * reader specific interface methods 89 */ 90 91 /** includes the wbo file reader in SCIP */ 92 SCIP_RETCODE SCIPincludeReaderWbo( 93 SCIP* scip /**< SCIP data structure */ 94 ) 95 { 96 SCIP_READER* reader; 97 98 /* include reader */ 99 SCIP_CALL( SCIPincludeReaderBasic(scip, &reader, READER_NAME, READER_DESC, READER_EXTENSION, NULL) ); 100 101 assert(reader != NULL); 102 103 /* set non fundamental callbacks via setter functions */ 104 SCIP_CALL( SCIPsetReaderCopy(scip, reader, readerCopyWbo) ); 105 SCIP_CALL( SCIPsetReaderRead(scip, reader, readerReadWbo) ); 106 SCIP_CALL( SCIPsetReaderWrite(scip, reader, readerWriteWbo) ); 107 108 return SCIP_OKAY; 109 } 110