47#ifdef SCIP_DEBUG_EXPRITER
52#define MAXSUBSCIPDEPTH 10
53#define MAXBACKTRACE 20
68#ifdef SCIP_DEBUG_EXPRITER
93 for(
i = 0;
i < size;
i++ )
110 assert(subscipdepth >= 0);
113 SCIPerrorMessage(
"subscip depth %d too high to report active iterators", subscipdepth);
129#define storeBacktrace(subscipdepth, iterpos)
137 SCIPerrorMessage(
"Rebuild with SCIP_DEBUG_EXPRITER defined in src/scip/expriter.c to see where currently "
138 "active iterators were initialized.\n");
356 ++iterdata->currentchild;
371 ++iterdata->currentchild;
381 return iterator->
curr;
391 child = iterator->
curr->
children[iterdata->currentchild];
411 return iterdata->parent;
438 (*iterator)->stat = stat;
439 (*iterator)->blkmem = blkmem;
468#undef SCIPexpriterIsInit
469#undef SCIPexpriterGetCurrent
470#undef SCIPexpriterGetStageDFS
471#undef SCIPexpriterGetChildIdxDFS
472#undef SCIPexpriterGetChildExprDFS
473#undef SCIPexpriterGetParentDFS
474#undef SCIPexpriterGetCurrentUserData
475#undef SCIPexpriterGetChildUserDataDFS
476#undef SCIPexpriterGetExprUserData
477#undef SCIPexpriterSetCurrentUserData
478#undef SCIPexpriterSetExprUserData
479#undef SCIPexpriterSetChildUserData
480#undef SCIPexpriterIsEnd
519 SCIPerrorMessage(
"Maximal number of active expression iterators reached at subscip-depth %d.\n",
597 iterator->
curr = expr;
646 iterator->
curr = expr;
654 return iterator->
curr;
670 if( (iterator->
dfsstage & stopstages) == 0 )
688 return iterator->
curr;
916 return iterator->
curr;
948 return iterator->
curr;
963 return iterator->
curr;
#define SCIP_CALL_ABORT(x)
private functions to work with algebraic expressions
static SCIP_EXPR * doBfsNext(SCIP_EXPRITER *iterator)
static SCIP_EXPR * doDfsNext(SCIP_EXPRITER *iterator)
#define storeBacktrace(subscipdepth, iterpos)
static void printBacktraces(int subscipdepth)
static SCIP_RETCODE ensureStackSize(SCIP_EXPRITER *iterator, int size)
static void deinit(SCIP_EXPRITER *iterator)
void SCIPexpriterFree(SCIP_EXPRITER **iterator)
static void reverseTopologicalInsert(SCIP_EXPRITER *iterator, SCIP_EXPR *expr)
static SCIP_EXPR * doReverseTopologicalNext(SCIP_EXPRITER *iterator)
SCIP_RETCODE SCIPexpriterCreate(SCIP_STAT *stat, BMS_BLKMEM *blkmem, SCIP_EXPRITER **iterator)
int SCIPexprGetNChildren(SCIP_EXPR *expr)
SCIP_Bool SCIPexpriterIsEnd(SCIP_EXPRITER *iterator)
SCIP_EXPR * SCIPexpriterSkipDFS(SCIP_EXPRITER *iterator)
SCIP_EXPRITER_USERDATA SCIPexpriterGetCurrentUserData(SCIP_EXPRITER *iterator)
void SCIPexpriterSetExprUserData(SCIP_EXPRITER *iterator, SCIP_EXPR *expr, SCIP_EXPRITER_USERDATA userdata)
SCIP_EXPR * SCIPexpriterGetCurrent(SCIP_EXPRITER *iterator)
void SCIPexpriterSetStagesDFS(SCIP_EXPRITER *iterator, SCIP_EXPRITER_STAGE stopstages)
SCIP_Bool SCIPexpriterIsInit(SCIP_EXPRITER *iterator)
SCIP_EXPR * SCIPexpriterRestartDFS(SCIP_EXPRITER *iterator, SCIP_EXPR *expr)
SCIP_EXPR * SCIPexpriterGetParentDFS(SCIP_EXPRITER *iterator)
void SCIPexpriterSetCurrentUserData(SCIP_EXPRITER *iterator, SCIP_EXPRITER_USERDATA userdata)
SCIP_EXPR * SCIPexpriterGetNext(SCIP_EXPRITER *iterator)
SCIP_EXPR ** SCIPexprGetChildren(SCIP_EXPR *expr)
void SCIPexpriterSetChildUserData(SCIP_EXPRITER *iterator, SCIP_EXPRITER_USERDATA userdata)
int SCIPexpriterGetChildIdxDFS(SCIP_EXPRITER *iterator)
SCIP_EXPRITER_USERDATA SCIPexpriterGetChildUserDataDFS(SCIP_EXPRITER *iterator)
SCIP_EXPRITER_STAGE SCIPexpriterGetStageDFS(SCIP_EXPRITER *iterator)
SCIP_RETCODE SCIPexpriterInit(SCIP_EXPRITER *iterator, SCIP_EXPR *expr, SCIP_EXPRITER_TYPE type, SCIP_Bool allowrevisit)
SCIP_EXPRITER_USERDATA SCIPexpriterGetExprUserData(SCIP_EXPRITER *iterator, SCIP_EXPR *expr)
SCIP_EXPR * SCIPexpriterGetChildExprDFS(SCIP_EXPRITER *iterator)
void SCIPqueueFree(SCIP_QUEUE **queue)
SCIP_RETCODE SCIPqueueCreate(SCIP_QUEUE **queue, int initsize, SCIP_Real sizefac)
void SCIPqueueClear(SCIP_QUEUE *queue)
SCIP_RETCODE SCIPqueueInsert(SCIP_QUEUE *queue, void *elem)
SCIP_Bool SCIPqueueIsEmpty(SCIP_QUEUE *queue)
void * SCIPqueueRemove(SCIP_QUEUE *queue)
assert(minobj< SCIPgetCutoffbound(scip))
#define BMSfreeBlockMemory(mem, ptr)
#define BMSfreeBlockMemoryArray(mem, ptr, num)
#define BMSreallocBlockMemoryArray(mem, ptr, oldnum, newnum)
#define BMSallocClearBlockMemory(mem, ptr)
struct BMS_BlkMem BMS_BLKMEM
public data structures and miscellaneous methods
SCIP_EXPRITER_TYPE itertype
SCIP_EXPRITER_STAGE dfsstage
SCIP_EXPRITERDATA iterdata[SCIP_EXPRITER_MAXNACTIVE]
SCIP_Longint exprlastvisitedtag
structure definitions related to algebraic expressions
datastructures for problem statistics
#define SCIP_EXPRITER_MAXNACTIVE
struct SCIP_ExprIterData SCIP_EXPRITERDATA
#define SCIP_EXPRITER_VISITINGCHILD
@ SCIP_EXPRITER_RTOPOLOGIC
#define SCIP_EXPRITER_VISITEDCHILD
#define SCIP_EXPRITER_LEAVEEXPR
#define SCIP_EXPRITER_ENTEREXPR
unsigned int SCIP_EXPRITER_STAGE
enum SCIP_Retcode SCIP_RETCODE