Detailed Description
DEC file reader for structure information.
Definition in file reader_dec.cpp.
#include <assert.h>
#include <string.h>
#include <strings.h>
#include <ctype.h>
#include "reader_dec.h"
#include "scip_misc.h"
#include "pub_gcgvar.h"
#include "cons_decomp.h"
#include "cons_decomp.hpp"
#include "pub_decomp.h"
#include "class_partialdecomp.h"
#include "class_detprobdata.h"
Go to the source code of this file.
Data Structures | |
struct | DecInput |
struct | SCIP_ReaderData |
Macros | |
#define | READER_NAME "decreader" |
#define | READER_DESC "file reader for blocks in dec format" |
#define | READER_EXTENSION "dec" |
#define | DEC_MAX_LINELEN 65536 |
#define | DEC_MAX_PUSHEDTOKENS 2 |
Typedefs | |
typedef enum DecSection | DECSECTION |
typedef enum DecExpType | DECEXPTYPE |
typedef struct DecInput | DECINPUT |
Enumerations | |
enum | DecSection { DEC_START, DEC_INCOMPLETE, DEC_PRESOLVED, DEC_NBLOCKS, DEC_BLOCKCONSS, DEC_MASTERCONSS, DEC_BLOCKVARS, DEC_MASTERVARS, DEC_LINKINGVARS, DEC_END } |
enum | DecExpType { DEC_EXP_NONE } |
Functions | |
static void | syntaxError (SCIP *scip, DECINPUT *decinput, const char *msg) |
static SCIP_Bool | hasError (DECINPUT *decinput) |
static SCIP_Bool | isDelimChar (char c) |
static SCIP_Bool | isTokenChar (char c) |
static SCIP_Bool | isValueChar (char c, char nextc, SCIP_Bool firstchar, SCIP_Bool *hasdot, DECEXPTYPE *exptype) |
static SCIP_Bool | getNextLine (DECINPUT *decinput) |
static void | swapPointers (char **pointer1, char **pointer2) |
static SCIP_Bool | getNextToken (DECINPUT *decinput) |
static void | pushToken (DECINPUT *decinput) |
static void | swapTokenBuffer (DECINPUT *decinput) |
static SCIP_Bool | isInt (SCIP *scip, DECINPUT *decinput, int *value) |
static SCIP_Bool | isNewSection (SCIP *scip, DECINPUT *decinput) |
static SCIP_RETCODE | readStart (SCIP *scip, DECINPUT *decinput) |
static SCIP_RETCODE | readIncomplete (SCIP *scip, DECINPUT *decinput) |
static SCIP_RETCODE | readPresolved (SCIP *scip, DECINPUT *decinput) |
static SCIP_RETCODE | readNBlocks (SCIP *scip, DECINPUT *decinput) |
static SCIP_RETCODE | readBlockconss (SCIP *scip, DECINPUT *decinput, SCIP_READERDATA *readerdata) |
static SCIP_RETCODE | readBlockvars (SCIP *scip, DECINPUT *decinput, SCIP_READERDATA *readerdata) |
static SCIP_RETCODE | readMasterconss (SCIP *scip, DECINPUT *decinput, SCIP_READERDATA *readerdata) |
static SCIP_RETCODE | readMastervars (SCIP *scip, DECINPUT *decinput, SCIP_READERDATA *readerdata) |
static SCIP_RETCODE | readLinkingvars (SCIP *scip, DECINPUT *decinput, SCIP_READERDATA *readerdata) |
static SCIP_RETCODE | setPresolved (SCIP *scip, DECINPUT *decinput) |
static SCIP_RETCODE | readDECFile (SCIP *scip, SCIP_READER *reader, DECINPUT *decinput, const char *filename) |
static SCIP_RETCODE | writePartialdec (SCIP *scip, FILE *file, gcg::PARTIALDECOMP *partialdec, SCIP_RESULT *result) |
write partialdec to file in dec format More... | |
SCIP_RETCODE | readDec (SCIP *scip, const char *filename, SCIP_RESULT *result) |
static | SCIP_DECL_READERFREE (readerFreeDec) |
static | SCIP_DECL_READERREAD (readerReadDec) |
static | SCIP_DECL_READERWRITE (readerWriteDec) |
SCIP_RETCODE | GCGincludeReaderDec (SCIP *scip) |
Variables | |
static const int | NOVALUE = -1 |
static const int | LINKINGVALUE = -2 |
static const char | delimchars [] = " \f\n\r\t\v" |
static const char | tokenchars [] = "-+:<>=" |
static const char | commentchars [] = "\\" |
Macro Definition Documentation
◆ READER_NAME
#define READER_NAME "decreader" |
Definition at line 60 of file reader_dec.cpp.
◆ READER_DESC
#define READER_DESC "file reader for blocks in dec format" |
Definition at line 61 of file reader_dec.cpp.
◆ READER_EXTENSION
#define READER_EXTENSION "dec" |
Definition at line 62 of file reader_dec.cpp.
◆ DEC_MAX_LINELEN
#define DEC_MAX_LINELEN 65536 |
Definition at line 68 of file reader_dec.cpp.
◆ DEC_MAX_PUSHEDTOKENS
#define DEC_MAX_PUSHEDTOKENS 2 |
Definition at line 69 of file reader_dec.cpp.
Typedef Documentation
◆ DECSECTION
typedef enum DecSection DECSECTION |
Definition at line 76 of file reader_dec.cpp.
◆ DECEXPTYPE
typedef enum DecExpType DECEXPTYPE |
Definition at line 83 of file reader_dec.cpp.
◆ DECINPUT
Definition at line 105 of file reader_dec.cpp.
Enumeration Type Documentation
◆ DecSection
enum DecSection |
section in DEC File
Enumerator | |
---|---|
DEC_START | |
DEC_INCOMPLETE | |
DEC_PRESOLVED | |
DEC_NBLOCKS | |
DEC_BLOCKCONSS | |
DEC_MASTERCONSS | |
DEC_BLOCKVARS | |
DEC_MASTERVARS | |
DEC_LINKINGVARS | |
DEC_END |
Definition at line 72 of file reader_dec.cpp.
◆ DecExpType
enum DecExpType |
exponent indicator of the a value
Enumerator | |
---|---|
DEC_EXP_NONE |
Definition at line 79 of file reader_dec.cpp.
Function Documentation
◆ syntaxError()
|
static |
issues an error message and marks the DEC data to have errors
- Parameters
-
scip SCIP data structure decinput DEC reading data msg error message
Definition at line 124 of file reader_dec.cpp.
References DEC_END, DecInput::haserror, DecInput::linebuf, DecInput::linenumber, DecInput::linepos, DecInput::section, and DecInput::token.
Referenced by isNewSection(), readBlockconss(), readBlockvars(), readIncomplete(), readLinkingvars(), readMasterconss(), readMastervars(), readNBlocks(), and readPresolved().
◆ hasError()
|
static |
returns whether a syntax error was detected
- Parameters
-
decinput DEC reading data
Definition at line 152 of file reader_dec.cpp.
References DecInput::haserror.
Referenced by readDECFile().
◆ isDelimChar()
|
static |
returns whether the given character is a token delimiter
- Parameters
-
c input character
Definition at line 162 of file reader_dec.cpp.
References delimchars.
Referenced by getNextToken().
◆ isTokenChar()
|
static |
returns whether the given character is a single token
- Parameters
-
c input character
Definition at line 171 of file reader_dec.cpp.
References tokenchars.
Referenced by getNextToken().
◆ isValueChar()
|
static |
returns whether the current character is member of a value string
- Parameters
-
c input character nextc next input character firstchar is the given character the first char of the token? hasdot pointer to update the dot flag exptype pointer to update the exponent type
Definition at line 180 of file reader_dec.cpp.
Referenced by getNextToken().
◆ getNextLine()
|
static |
reads the next line from the input file into the line buffer; skips comments; returns whether a line could be read
- Parameters
-
decinput DEC reading data
Definition at line 201 of file reader_dec.cpp.
References commentchars, DEC_MAX_LINELEN, DecInput::file, DecInput::haserror, DecInput::linebuf, DecInput::linenumber, and DecInput::linepos.
Referenced by getNextToken().
◆ swapPointers()
|
static |
swaps the addresses of two pointers
- Parameters
-
pointer1 first pointer pointer2 second pointer
Definition at line 245 of file reader_dec.cpp.
Referenced by getNextToken(), pushToken(), and swapTokenBuffer().
◆ getNextToken()
|
static |
reads the next token from the input file into the token buffer; returns whether a token was read
- Parameters
-
decinput DEC reading data
Definition at line 259 of file reader_dec.cpp.
References DEC_END, DEC_EXP_NONE, DEC_MAX_LINELEN, getNextLine(), isDelimChar(), isTokenChar(), isValueChar(), DecInput::linebuf, DecInput::linenumber, DecInput::linepos, DecInput::npushedtokens, DecInput::pushedtokens, DecInput::section, swapPointers(), and DecInput::token.
Referenced by isNewSection(), readBlockconss(), readBlockvars(), readDECFile(), readIncomplete(), readLinkingvars(), readMasterconss(), readMastervars(), readNBlocks(), readPresolved(), readStart(), and setPresolved().
◆ pushToken()
|
static |
puts the current token on the token stack, such that it is read at the next call to getNextToken()
- Parameters
-
decinput DEC reading data
Definition at line 358 of file reader_dec.cpp.
References DEC_MAX_PUSHEDTOKENS, DecInput::npushedtokens, DecInput::pushedtokens, swapPointers(), and DecInput::token.
Referenced by isNewSection().
◆ swapTokenBuffer()
|
static |
swaps the current token with the token buffer
- Parameters
-
decinput DEC reading data
Definition at line 371 of file reader_dec.cpp.
References swapPointers(), DecInput::token, and DecInput::tokenbuf.
Referenced by isNewSection().
◆ isInt()
|
static |
returns whether the current token is a value
- Parameters
-
scip SCIP data structure decinput DEC reading data value pointer to store the value (unchanged, if token is no value)
Definition at line 382 of file reader_dec.cpp.
References DecInput::token.
Referenced by isNewSection(), readIncomplete(), readNBlocks(), and readPresolved().
◆ isNewSection()
|
static |
checks whether the current token is a section identifier, and if yes, switches to the corresponding section
- Parameters
-
scip SCIP data structure decinput DEC reading data
Definition at line 410 of file reader_dec.cpp.
References DecInput::blocknr, DEC_BLOCKCONSS, DEC_BLOCKVARS, DEC_INCOMPLETE, DEC_LINKINGVARS, DEC_MASTERCONSS, DEC_MASTERVARS, DEC_NBLOCKS, DEC_PRESOLVED, getNextToken(), isInt(), DecInput::linenumber, pushToken(), DecInput::section, swapTokenBuffer(), syntaxError(), and DecInput::token.
Referenced by readBlockconss(), readBlockvars(), readDECFile(), readIncomplete(), readLinkingvars(), readMasterconss(), readMastervars(), readNBlocks(), readPresolved(), readStart(), and setPresolved().
◆ readStart()
|
static |
reads the header of the file
- Parameters
-
scip SCIP data structure decinput DEC reading data
Definition at line 540 of file reader_dec.cpp.
References getNextToken(), and isNewSection().
Referenced by readDECFile().
◆ readIncomplete()
|
static |
reads the incomplete section
- Parameters
-
scip SCIP data structure decinput DEC reading data
Definition at line 561 of file reader_dec.cpp.
References getNextToken(), DecInput::incomplete, isInt(), isNewSection(), and syntaxError().
Referenced by readDECFile().
◆ readPresolved()
|
static |
reads the presolved section
- Parameters
-
scip SCIP data structure decinput DEC reading data
Definition at line 598 of file reader_dec.cpp.
References getNextToken(), DecInput::haspresolvesection, isInt(), isNewSection(), DecInput::presolved, and syntaxError().
Referenced by setPresolved().
◆ readNBlocks()
|
static |
reads the nblocks section
- Parameters
-
scip SCIP data structure decinput DEC reading data
Definition at line 638 of file reader_dec.cpp.
References getNextToken(), isInt(), isNewSection(), DecInput::nblocks, NOVALUE, DecInput::partialdec, gcg::PARTIALDECOMP::setNBlocks(), and syntaxError().
Referenced by readDECFile().
◆ readBlockconss()
|
static |
reads the blocks section
- Parameters
-
scip SCIP data structure decinput DEC reading data readerdata reader data
Definition at line 679 of file reader_dec.cpp.
References DecInput::blocknr, gcg::PARTIALDECOMP::fixConsToBlockByName(), GCGisVarRelevant(), gcg::PARTIALDECOMP::getDetprobdata(), gcg::DETPROBDATA::getIndexForCons(), getNextToken(), DecInput::haserror, gcg::PARTIALDECOMP::isConsOpencons(), isNewSection(), DecInput::nblocks, DecInput::partialdec, DecInput::presolved, syntaxError(), and DecInput::token.
Referenced by readDECFile().
◆ readBlockvars()
|
static |
reads the block vars section
- Parameters
-
scip SCIP data structure decinput DEC reading data readerdata reader data
Definition at line 781 of file reader_dec.cpp.
References DecInput::blocknr, gcg::PARTIALDECOMP::fixVarToBlockByName(), getNextToken(), isNewSection(), DecInput::partialdec, syntaxError(), and DecInput::token.
Referenced by readDECFile().
◆ readMasterconss()
|
static |
reads the masterconss section
- Parameters
-
scip SCIP data structure decinput DEC reading data readerdata reader data
Definition at line 824 of file reader_dec.cpp.
References gcg::PARTIALDECOMP::fixConsToMaster(), gcg::PARTIALDECOMP::getDetprobdata(), gcg::DETPROBDATA::getIndexForCons(), getNextToken(), isNewSection(), DecInput::partialdec, syntaxError(), and DecInput::token.
Referenced by readDECFile().
◆ readMastervars()
|
static |
reads the mastervars section
- Parameters
-
scip SCIP data structure decinput DEC reading data readerdata reader data
Definition at line 863 of file reader_dec.cpp.
References gcg::PARTIALDECOMP::fixVarToMasterByName(), getNextToken(), isNewSection(), DecInput::partialdec, syntaxError(), and DecInput::token.
Referenced by readDECFile().
◆ readLinkingvars()
|
static |
reads the linkingvars section
- Parameters
-
scip SCIP data structure decinput DEC reading data readerdata reader data
Definition at line 908 of file reader_dec.cpp.
References gcg::PARTIALDECOMP::fixVarToLinkingByName(), getNextToken(), isNewSection(), DecInput::partialdec, syntaxError(), and DecInput::token.
Referenced by readDECFile().
◆ setPresolved()
|
static |
Reads the file and sets the decinput->presolved flag. Resets the file stream afterward.
- Parameters
-
scip SCIP data structure decinput DEC reading data
Definition at line 953 of file reader_dec.cpp.
References DEC_PRESOLVED, DEC_START, DecInput::file, getNextToken(), isNewSection(), readPresolved(), and DecInput::section.
Referenced by readDECFile().
◆ readDECFile()
|
static |
reads a DEC file
- Parameters
-
scip SCIP data structure reader Reader data structure decinput DEC reading data filename name of the input file
Definition at line 973 of file reader_dec.cpp.
References gcg::COMPLETED_CONSTOMASTER, DEC_BLOCKCONSS, DEC_BLOCKVARS, DEC_END, DEC_INCOMPLETE, DEC_LINKINGVARS, DEC_MASTERCONSS, DEC_MASTERVARS, DEC_NBLOCKS, DEC_PRESOLVED, DEC_START, DecInput::file, GCGconshdlrDecompAddPreexisitingPartialDec(), getNextToken(), DecInput::haserror, hasError(), DecInput::haspresolvesection, DecInput::incomplete, gcg::PARTIALDECOMP::isComplete(), isNewSection(), gcg::PARTIAL, DecInput::partialdec, gcg::PARTIALDECOMP::prepare(), DecInput::presolved, readBlockconss(), readBlockvars(), readIncomplete(), readLinkingvars(), readMasterconss(), readMastervars(), readNBlocks(), readStart(), DecInput::section, setPresolved(), gcg::PARTIALDECOMP::setUsergiven(), gcg::PARTIALDECOMP::shouldCompletedByConsToMaster(), and gcg::PARTIALDECOMP::sort().
Referenced by readDec().
◆ writePartialdec()
|
static |
write partialdec to file in dec format
- Returns
- scip return code
- Parameters
-
scip SCIP data structure file pointer to file to write to partialdec partialdec to write result will be set to SCIP_SUCCESS if writing was successful
Definition at line 1114 of file reader_dec.cpp.
References commentchars, DECdetectorGetName(), gcg::DETPROBDATA::getCons(), gcg::PARTIALDECOMP::getConssForBlock(), gcg::PARTIALDECOMP::getDetectorchain(), gcg::PARTIALDECOMP::getDetectorchainInfo(), gcg::PARTIALDECOMP::getDetectorClockTimes(), gcg::PARTIALDECOMP::getDetprobdata(), gcg::PARTIALDECOMP::getLinkingvars(), gcg::PARTIALDECOMP::getMasterconss(), gcg::PARTIALDECOMP::getMastervars(), gcg::PARTIALDECOMP::getNBlocks(), gcg::DETPROBDATA::getNConss(), gcg::PARTIALDECOMP::getNConssForBlock(), gcg::PARTIALDECOMP::getNLinkingvars(), gcg::PARTIALDECOMP::getNMasterconss(), gcg::PARTIALDECOMP::getNMastervars(), gcg::PARTIALDECOMP::getNNewBlocks(), gcg::DETPROBDATA::getNVars(), gcg::PARTIALDECOMP::getNVarsForBlock(), gcg::PARTIALDECOMP::getPctConssToBlock(), gcg::PARTIALDECOMP::getPctConssToBorder(), gcg::PARTIALDECOMP::getPctVarsToBlock(), gcg::PARTIALDECOMP::getPctVarsToBorder(), gcg::PARTIALDECOMP::getUsergiven(), gcg::DETPROBDATA::getVar(), gcg::PARTIALDECOMP::getVarsForBlock(), gcg::PARTIALDECOMP::isAssignedToOrigProb(), gcg::PARTIALDECOMP::isComplete(), gcg::NOT, and gcg::PARTIAL.
Referenced by SCIP_DECL_READERWRITE().
◆ readDec()
SCIP_RETCODE readDec | ( | SCIP * | scip, |
const char * | filename, | ||
SCIP_RESULT * | result | ||
) |
- Parameters
-
scip SCIP data structure 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
Definition at line 1222 of file reader_dec.cpp.
References DecInput::blocknr, DEC_MAX_LINELEN, DEC_MAX_PUSHEDTOKENS, DEC_START, DecInput::file, DecInput::haserror, DecInput::haspresolvesection, DecInput::incomplete, DecInput::linebuf, DecInput::linenumber, DecInput::linepos, DecInput::nblocks, NOVALUE, DecInput::npushedtokens, DecInput::presolved, DecInput::pushedtokens, readDECFile(), READER_NAME, DecInput::section, DecInput::token, and DecInput::tokenbuf.
Referenced by SCIP_DECL_READERREAD().
◆ SCIP_DECL_READERFREE()
|
static |
destructor of reader to free user data (called when SCIP is exiting)
Definition at line 1288 of file reader_dec.cpp.
◆ SCIP_DECL_READERREAD()
|
static |
problem reading method of reader
Definition at line 1302 of file reader_dec.cpp.
References readDec().
◆ SCIP_DECL_READERWRITE()
|
static |
problem writing method of reader
Definition at line 1318 of file reader_dec.cpp.
References DECgetPartialdecToWrite(), and writePartialdec().
◆ GCGincludeReaderDec()
SCIP_RETCODE GCGincludeReaderDec | ( | SCIP * | scip | ) |
includes the dec file reader in SCIP
- Parameters
-
scip SCIP data structure
Definition at line 1340 of file reader_dec.cpp.
References READER_DESC, READER_EXTENSION, and READER_NAME.
Referenced by SCIPincludeGcgPlugins().
Variable Documentation
◆ NOVALUE
|
static |
Definition at line 112 of file reader_dec.cpp.
Referenced by readDec(), and readNBlocks().
◆ LINKINGVALUE
|
static |
Definition at line 113 of file reader_dec.cpp.
◆ delimchars
|
static |
Definition at line 114 of file reader_dec.cpp.
Referenced by isDelimChar().
◆ tokenchars
|
static |
Definition at line 115 of file reader_dec.cpp.
Referenced by isTokenChar().
◆ commentchars
|
static |
Definition at line 116 of file reader_dec.cpp.
Referenced by getNextLine(), and writePartialdec().