Detailed Description
REF file reader for structure information.
Definition in file reader_ref.c.
#include <stdlib.h>
#include <assert.h>
#include <string.h>
#include <strings.h>
#include <ctype.h>
#include "reader_ref.h"
#include "gcg.h"
#include "scip/cons_linear.h"
#include "cons_decomp.h"
#include "relax_gcg.h"
Go to the source code of this file.
Data Structures | |
struct | RefInput |
Macros | |
#define | READER_NAME "refreader" |
#define | READER_DESC "file reader for blocks corresponding to a mip in lpb format" |
#define | READER_EXTENSION "ref" |
#define | REF_MAX_LINELEN 65536 |
#define | REF_MAX_PUSHEDTOKENS 2 |
#define | readerFreeRef NULL |
Typedefs | |
typedef enum RefSection | REFSECTION |
typedef enum RefExpType | REFEXPTYPE |
typedef struct RefInput | REFINPUT |
Enumerations | |
enum | RefSection { REF_START, REF_NBLOCKS, REF_BLOCKSIZES, REF_BLOCKS, REF_END } |
enum | RefExpType { REF_EXP_NONE, REF_EXP_UNSIGNED, REF_EXP_SIGNED } |
Functions | |
static void | syntaxError (SCIP *scip, REFINPUT *refinput, const char *msg) |
static SCIP_Bool | hasError (REFINPUT *refinput) |
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, REFEXPTYPE *exptype) |
static SCIP_Bool | getNextLine (REFINPUT *refinput) |
static SCIP_Bool | getNextToken (REFINPUT *refinput) |
static SCIP_Bool | isInt (SCIP *scip, REFINPUT *refinput, int *value) |
static SCIP_RETCODE | readStart (SCIP *scip, REFINPUT *refinput) |
static SCIP_RETCODE | readNBlocks (SCIP *scip, REFINPUT *refinput) |
static SCIP_RETCODE | readBlockSizes (SCIP *scip, REFINPUT *refinput) |
static SCIP_RETCODE | readBlocks (SCIP *scip, REFINPUT *refinput) |
static SCIP_RETCODE | readREFFile (SCIP *scip, SCIP_READER *reader, REFINPUT *refinput, DEC_DECOMP *decomp, const char *filename) |
static SCIP_RETCODE | writeREFFile (SCIP *scip, SCIP_READER *reader, FILE *file) |
static | SCIP_DECL_READERREAD (readerReadRef) |
static | SCIP_DECL_READERWRITE (readerWriteRef) |
SCIP_RETCODE | SCIPincludeReaderRef (SCIP *scip) |
SCIP_RETCODE | SCIPreadRef (SCIP *scip, SCIP_READER *reader, const char *filename, SCIP_RESULT *result) |
Variables | |
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 "refreader" |
Definition at line 52 of file reader_ref.c.
◆ READER_DESC
#define READER_DESC "file reader for blocks corresponding to a mip in lpb format" |
Definition at line 53 of file reader_ref.c.
◆ READER_EXTENSION
#define READER_EXTENSION "ref" |
Definition at line 54 of file reader_ref.c.
◆ REF_MAX_LINELEN
#define REF_MAX_LINELEN 65536 |
Definition at line 59 of file reader_ref.c.
◆ REF_MAX_PUSHEDTOKENS
#define REF_MAX_PUSHEDTOKENS 2 |
Definition at line 60 of file reader_ref.c.
◆ readerFreeRef
#define readerFreeRef NULL |
destructor of reader to free user data (called when SCIP is exiting)
Definition at line 731 of file reader_ref.c.
Typedef Documentation
◆ REFSECTION
typedef enum RefSection REFSECTION |
Definition at line 67 of file reader_ref.c.
◆ REFEXPTYPE
typedef enum RefExpType REFEXPTYPE |
Definition at line 73 of file reader_ref.c.
◆ REFINPUT
Definition at line 100 of file reader_ref.c.
Enumeration Type Documentation
◆ RefSection
enum RefSection |
section in REF File
Enumerator | |
---|---|
REF_START | |
REF_NBLOCKS | |
REF_BLOCKSIZES | |
REF_BLOCKS | |
REF_END |
Definition at line 63 of file reader_ref.c.
◆ RefExpType
enum RefExpType |
Enumerator | |
---|---|
REF_EXP_NONE | |
REF_EXP_UNSIGNED | |
REF_EXP_SIGNED |
Definition at line 69 of file reader_ref.c.
Function Documentation
◆ syntaxError()
|
static |
issues an error message and marks the REF data to have errors
- Parameters
-
scip SCIP data structure refinput REF reading data msg error message
Definition at line 113 of file reader_ref.c.
References RefInput::haserror, RefInput::linebuf, RefInput::linenumber, RefInput::linepos, REF_END, RefInput::section, and RefInput::token.
Referenced by readBlocks(), readBlockSizes(), and readNBlocks().
◆ hasError()
|
static |
returns whether a syntax error was detected
- Parameters
-
refinput REF reading data
Definition at line 141 of file reader_ref.c.
References RefInput::haserror.
Referenced by readREFFile().
◆ isDelimChar()
|
static |
returns whether the given character is a token delimiter
- Parameters
-
c input character
Definition at line 152 of file reader_ref.c.
References delimchars.
Referenced by getNextToken().
◆ isTokenChar()
|
static |
returns whether the given character is a single token
- Parameters
-
c input character
Definition at line 161 of file reader_ref.c.
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 170 of file reader_ref.c.
References REF_EXP_NONE, REF_EXP_SIGNED, and REF_EXP_UNSIGNED.
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
-
refinput REF reading data
Definition at line 214 of file reader_ref.c.
References commentchars, RefInput::file, RefInput::haserror, RefInput::linebuf, RefInput::linenumber, RefInput::linepos, and REF_MAX_LINELEN.
Referenced by getNextToken().
◆ getNextToken()
|
static |
reads the next token from the input file into the token buffer; returns whether a token was read
- Parameters
-
refinput REF reading data
Definition at line 258 of file reader_ref.c.
References RefInput::blocknr, getNextLine(), isDelimChar(), isTokenChar(), isValueChar(), RefInput::linebuf, RefInput::linenumber, RefInput::linepos, RefInput::npushedtokens, RefInput::pushedtokens, REF_BLOCKS, REF_BLOCKSIZES, REF_END, REF_EXP_NONE, REF_MAX_LINELEN, REF_NBLOCKS, REF_START, RefInput::section, and RefInput::token.
Referenced by readBlocks(), readBlockSizes(), readNBlocks(), and readStart().
◆ isInt()
|
static |
returns whether the current token is a value
- Parameters
-
scip SCIP data structure refinput REF reading data value pointer to store the value (unchanged, if token is no value)
Definition at line 366 of file reader_ref.c.
References RefInput::token.
Referenced by readBlocks(), readBlockSizes(), and readNBlocks().
◆ readStart()
|
static |
reads the header of the file
- Parameters
-
scip SCIP data structure refinput REF reading data
Definition at line 395 of file reader_ref.c.
References getNextToken().
Referenced by readREFFile().
◆ readNBlocks()
|
static |
reads the nblocks section
- Parameters
-
scip SCIP data structure refinput REF reading data
Definition at line 409 of file reader_ref.c.
References RefInput::blocksizes, getNextToken(), isInt(), RefInput::nblocks, REF_BLOCKSIZES, RefInput::section, and syntaxError().
Referenced by readREFFile().
◆ readBlockSizes()
|
static |
reads the blocksizes section
- Parameters
-
scip SCIP data structure refinput REF reading data
Definition at line 443 of file reader_ref.c.
References RefInput::blocknr, RefInput::blocksizes, getNextToken(), isInt(), RefInput::nblocks, syntaxError(), and RefInput::totalconss.
Referenced by readREFFile().
◆ readBlocks()
|
static |
reads the blocks section
- Parameters
-
scip SCIP data structure refinput REF reading data
Definition at line 471 of file reader_ref.c.
References RefInput::blocknr, RefInput::blocksizes, RefInput::constoblock, getNextToken(), isInt(), RefInput::nassignedvars, RefInput::nblocks, syntaxError(), RefInput::totalreadconss, and RefInput::vartoblock.
Referenced by readREFFile().
◆ readREFFile()
|
static |
reads an REF file
- Parameters
-
scip SCIP data structure reader reader data structure refinput REF reading data decomp decomposition structure filename name of the input file
Definition at line 559 of file reader_ref.c.
References RefInput::constoblock, DECdecompSetDetector(), DECdecompSetNBlocks(), DECdecompSetPresolved(), DECfilloutDecompFromHashmaps(), RefInput::file, hasError(), RefInput::nblocks, readBlocks(), readBlockSizes(), readNBlocks(), readStart(), REF_BLOCKS, REF_BLOCKSIZES, REF_END, REF_NBLOCKS, REF_START, RefInput::section, and RefInput::vartoblock.
Referenced by SCIPreadRef().
◆ writeREFFile()
|
static |
writes a Ref file
- Parameters
-
scip SCIP data structure reader ref reader file target file
Definition at line 635 of file reader_ref.c.
References DECdecompFree(), DECdecompGetNBlocks(), DECdecompGetNSubscipconss(), DECdecompGetSubscipconss(), DECgetBestDecomp(), RefInput::file, GCGgetStructDecomp(), and RefInput::nblocks.
Referenced by SCIP_DECL_READERWRITE().
◆ SCIP_DECL_READERREAD()
|
static |
problem reading method of reader
Definition at line 735 of file reader_ref.c.
References SCIPreadRef().
◆ SCIP_DECL_READERWRITE()
|
static |
problem writing method of reader
Definition at line 751 of file reader_ref.c.
References RefInput::file, and writeREFFile().
◆ SCIPincludeReaderRef()
SCIP_RETCODE SCIPincludeReaderRef | ( | SCIP * | scip | ) |
includes the ref file reader in SCIP
- Parameters
-
scip SCIP data structure
Definition at line 764 of file reader_ref.c.
References READER_DESC, READER_EXTENSION, READER_NAME, and readerFreeRef.
Referenced by SCIPincludeGcgPlugins().
◆ SCIPreadRef()
SCIP_RETCODE SCIPreadRef | ( | SCIP * | scip, |
SCIP_READER * | reader, | ||
const char * | filename, | ||
SCIP_RESULT * | result | ||
) |
reads problem from file
- Parameters
-
scip SCIP data structure reader the file 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
Definition at line 778 of file reader_ref.c.
References RefInput::blocknr, RefInput::blocksizes, RefInput::constoblock, DECdecompCreate(), DECdecompFree(), RefInput::file, GCGconshdlrDecompAddPreexistingDecomp(), GCGvarGetBlock(), RefInput::haserror, RefInput::linebuf, RefInput::linenumber, RefInput::linepos, RefInput::masterconss, RefInput::nassignedvars, RefInput::nblocks, RefInput::nmasterconss, RefInput::npushedtokens, RefInput::pushedtokens, readREFFile(), REF_MAX_LINELEN, REF_MAX_PUSHEDTOKENS, RefInput::token, RefInput::tokenbuf, RefInput::totalconss, RefInput::totalreadconss, and RefInput::vartoblock.
Referenced by SCIP_DECL_READERREAD().
Variable Documentation
◆ delimchars
|
static |
Definition at line 102 of file reader_ref.c.
Referenced by isDelimChar().
◆ tokenchars
|
static |
Definition at line 103 of file reader_ref.c.
Referenced by isTokenChar().
◆ commentchars
|
static |
Definition at line 104 of file reader_ref.c.
Referenced by getNextLine().