SCIP Doxygen Documentation
Loading...
Searching...
No Matches

Detailed Description

functions for iterating over algebraic expressions

Author
Benjamin Mueller
Stefan Vigerske

Definition in file expriter.c.

#include <assert.h>
#include "scip/expr.h"
#include "scip/pub_misc.h"
#include "scip/pub_message.h"
#include "scip/struct_expr.h"
#include "scip/struct_stat.h"

Go to the source code of this file.

Macros

#define MINDFSSIZE   16
#define MINBFSSIZE   16
#define storeBacktrace(subscipdepth, iterpos)

Functions

static void printBacktraces (int subscipdepth)
static void deinit (SCIP_EXPRITER *iterator)
static SCIP_RETCODE ensureStackSize (SCIP_EXPRITER *iterator, int size)
static void reverseTopologicalInsert (SCIP_EXPRITER *iterator, SCIP_EXPR *expr)
static SCIP_EXPRdoReverseTopologicalNext (SCIP_EXPRITER *iterator)
static SCIP_EXPRdoBfsNext (SCIP_EXPRITER *iterator)
static SCIP_EXPRdoDfsNext (SCIP_EXPRITER *iterator)
SCIP_RETCODE SCIPexpriterCreate (SCIP_STAT *stat, BMS_BLKMEM *blkmem, SCIP_EXPRITER **iterator)
void SCIPexpriterFree (SCIP_EXPRITER **iterator)
SCIP_Bool SCIPexpriterIsInit (SCIP_EXPRITER *iterator)
SCIP_RETCODE SCIPexpriterInit (SCIP_EXPRITER *iterator, SCIP_EXPR *expr, SCIP_EXPRITER_TYPE type, SCIP_Bool allowrevisit)
SCIP_EXPRSCIPexpriterRestartDFS (SCIP_EXPRITER *iterator, SCIP_EXPR *expr)
void SCIPexpriterSetStagesDFS (SCIP_EXPRITER *iterator, SCIP_EXPRITER_STAGE stopstages)
SCIP_EXPRSCIPexpriterGetCurrent (SCIP_EXPRITER *iterator)
SCIP_EXPRITER_STAGE SCIPexpriterGetStageDFS (SCIP_EXPRITER *iterator)
int SCIPexpriterGetChildIdxDFS (SCIP_EXPRITER *iterator)
SCIP_EXPRSCIPexpriterGetChildExprDFS (SCIP_EXPRITER *iterator)
SCIP_EXPRSCIPexpriterGetParentDFS (SCIP_EXPRITER *iterator)
SCIP_EXPRITER_USERDATA SCIPexpriterGetCurrentUserData (SCIP_EXPRITER *iterator)
SCIP_EXPRITER_USERDATA SCIPexpriterGetChildUserDataDFS (SCIP_EXPRITER *iterator)
SCIP_EXPRITER_USERDATA SCIPexpriterGetExprUserData (SCIP_EXPRITER *iterator, SCIP_EXPR *expr)
void SCIPexpriterSetCurrentUserData (SCIP_EXPRITER *iterator, SCIP_EXPRITER_USERDATA userdata)
void SCIPexpriterSetExprUserData (SCIP_EXPRITER *iterator, SCIP_EXPR *expr, SCIP_EXPRITER_USERDATA userdata)
void SCIPexpriterSetChildUserData (SCIP_EXPRITER *iterator, SCIP_EXPRITER_USERDATA userdata)
SCIP_EXPRSCIPexpriterGetNext (SCIP_EXPRITER *iterator)
SCIP_EXPRSCIPexpriterSkipDFS (SCIP_EXPRITER *iterator)
SCIP_Bool SCIPexpriterIsEnd (SCIP_EXPRITER *iterator)

Macro Definition Documentation

◆ MINDFSSIZE

#define MINDFSSIZE   16

minimum stack size for DFS

Definition at line 45 of file expriter.c.

Referenced by SCIPexpriterInit().

◆ MINBFSSIZE

#define MINBFSSIZE   16

minimum queue size for BFS

Definition at line 46 of file expriter.c.

Referenced by SCIPexpriterInit().

◆ storeBacktrace

#define storeBacktrace ( subscipdepth,
iterpos )

Definition at line 130 of file expriter.c.

Referenced by SCIPexpriterInit().

Function Documentation

◆ printBacktraces()

void printBacktraces ( int subscipdepth)
static
Parameters
subscipdepthcurrent subscip depth

Definition at line 134 of file expriter.c.

References SCIPerrorMessage.

Referenced by SCIPexpriterInit().

◆ deinit()

◆ ensureStackSize()

SCIP_RETCODE ensureStackSize ( SCIP_EXPRITER * iterator,
int size )
static

ensures minimum stack size of iterator's data

Parameters
iteratorexpression iterator
sizeminimum requires size

Definition at line 195 of file expriter.c.

References assert(), SCIP_ExprIter::blkmem, BMSreallocBlockMemoryArray, SCIP_ExprIter::dfsexprs, SCIP_ExprIter::dfsnvisited, SCIP_ExprIter::dfssize, SCIP_ExprIter::itertype, NULL, SCIP_ALLOC, SCIP_EXPRITER_RTOPOLOGIC, and SCIP_OKAY.

Referenced by reverseTopologicalInsert(), and SCIPexpriterInit().

◆ reverseTopologicalInsert()

void reverseTopologicalInsert ( SCIP_EXPRITER * iterator,
SCIP_EXPR * expr )
static

adds an expression to the DFS stack

Parameters
iteratorexpression iterator
exprexpression

Definition at line 219 of file expriter.c.

References assert(), SCIP_ExprIter::dfsexprs, SCIP_ExprIter::dfsnexprs, SCIP_ExprIter::dfsnvisited, ensureStackSize(), NULL, and SCIP_CALL_ABORT.

Referenced by doReverseTopologicalNext(), and SCIPexpriterInit().

◆ doReverseTopologicalNext()

SCIP_EXPR * doReverseTopologicalNext ( SCIP_EXPRITER * iterator)
static

moves to the next expression according to a reverse topological order

Parameters
iteratorexpression iterator

Definition at line 235 of file expriter.c.

References assert(), SCIP_ExprIter::dfsexprs, SCIP_ExprIter::dfsnexprs, SCIP_ExprIter::dfsnvisited, SCIP_ExprIter::itertype, NULL, reverseTopologicalInsert(), SCIP_EXPRITER_RTOPOLOGIC, SCIPexprGetChildren(), and SCIPexprGetNChildren().

Referenced by SCIPexpriterGetNext().

◆ doBfsNext()

SCIP_EXPR * doBfsNext ( SCIP_EXPRITER * iterator)
static

◆ doDfsNext()

◆ SCIPexpriterCreate()

◆ SCIPexpriterFree()