Scippy

SCIP

Solving Constraint Integer Programs

dialog.c File Reference

Detailed Description

methods for user interface dialog

Author
Tobias Achterberg

Definition in file dialog.c.

#include <assert.h>
#include <string.h>
#include <ctype.h>
#include "scip/scip.h"
#include "scip/def.h"
#include "blockmemshell/memory.h"
#include "scip/set.h"
#include "scip/pub_misc.h"
#include "scip/dialog.h"
#include "scip/struct_dialog.h"

Go to the source code of this file.

Functions

static SCIP_RETCODE readLine (SCIP_DIALOGHDLR *dialoghdlr, const char *prompt, SCIP_Bool *endoffile)
 
static SCIP_RETCODE addHistory (const char *s)
 
static int getHistoryLength (void)
 
static SCIP_RETCODE removeHistory (int pos)
 
static SCIP_RETCODE writeHistory (const char *filename)
 
static void linelistFree (SCIP_LINELIST **linelist)
 
static void linelistFreeAll (SCIP_LINELIST **linelist)
 
static SCIP_RETCODE readInputLine (SCIP_DIALOGHDLR *dialoghdlr, const char *prompt, SCIP_Bool *endoffile)
 
SCIP_RETCODE SCIPdialogCopyInclude (SCIP_DIALOG *dialog, SCIP_SET *set)
 
SCIP_RETCODE SCIPdialoghdlrCreate (SCIP_SET *set, SCIP_DIALOGHDLR **dialoghdlr)
 
SCIP_RETCODE SCIPdialoghdlrFree (SCIP *scip, SCIP_DIALOGHDLR **dialoghdlr)
 
SCIP_RETCODE SCIPdialoghdlrExec (SCIP_DIALOGHDLR *dialoghdlr, SCIP_SET *set)
 
SCIP_RETCODE SCIPdialoghdlrSetRoot (SCIP *scip, SCIP_DIALOGHDLR *dialoghdlr, SCIP_DIALOG *dialog)
 
SCIP_DIALOGSCIPdialoghdlrGetRoot (SCIP_DIALOGHDLR *dialoghdlr)
 
void SCIPdialoghdlrClearBuffer (SCIP_DIALOGHDLR *dialoghdlr)
 
SCIP_Bool SCIPdialoghdlrIsBufferEmpty (SCIP_DIALOGHDLR *dialoghdlr)
 
SCIP_RETCODE SCIPdialoghdlrGetLine (SCIP_DIALOGHDLR *dialoghdlr, SCIP_DIALOG *dialog, const char *prompt, char **inputline, SCIP_Bool *endoffile)
 
SCIP_RETCODE SCIPdialoghdlrGetWord (SCIP_DIALOGHDLR *dialoghdlr, SCIP_DIALOG *dialog, const char *prompt, char **inputword, SCIP_Bool *endoffile)
 
SCIP_RETCODE SCIPdialoghdlrAddInputLine (SCIP_DIALOGHDLR *dialoghdlr, const char *inputline)
 
SCIP_RETCODE SCIPdialoghdlrAddHistory (SCIP_DIALOGHDLR *dialoghdlr, SCIP_DIALOG *dialog, const char *command, SCIP_Bool escapecommand)
 
static SCIP_RETCODE ensureSubdialogMem (SCIP_DIALOG *dialog, SCIP_SET *set, int num)
 
SCIP_RETCODE SCIPdialogCreate (SCIP_DIALOG **dialog, SCIP_DECL_DIALOGCOPY((*dialogcopy)), SCIP_DECL_DIALOGEXEC((*dialogexec)), SCIP_DECL_DIALOGDESC((*dialogdesc)), SCIP_DECL_DIALOGFREE((*dialogfree)), const char *name, const char *desc, SCIP_Bool issubmenu, SCIP_DIALOGDATA *dialogdata)
 
static SCIP_RETCODE dialogFree (SCIP *scip, SCIP_DIALOG **dialog)
 
void SCIPdialogCapture (SCIP_DIALOG *dialog)
 
SCIP_RETCODE SCIPdialogRelease (SCIP *scip, SCIP_DIALOG **dialog)
 
SCIP_RETCODE SCIPdialogExec (SCIP_DIALOG *dialog, SCIP_SET *set, SCIP_DIALOGHDLR *dialoghdlr, SCIP_DIALOG **nextdialog)
 
static SCIP_DECL_SORTPTRCOMP (dialogComp)
 
SCIP_RETCODE SCIPdialogAddEntry (SCIP_DIALOG *dialog, SCIP_SET *set, SCIP_DIALOG *subdialog)
 
SCIP_Bool SCIPdialogHasEntry (SCIP_DIALOG *dialog, const char *entryname)
 
int SCIPdialogFindEntry (SCIP_DIALOG *dialog, const char *entryname, SCIP_DIALOG **subdialog)
 
SCIP_RETCODE SCIPdialogDisplayMenu (SCIP_DIALOG *dialog, SCIP *scip)
 
SCIP_RETCODE SCIPdialogDisplayMenuEntry (SCIP_DIALOG *dialog, SCIP *scip)
 
SCIP_RETCODE SCIPdialogDisplayCompletions (SCIP_DIALOG *dialog, SCIP *scip, const char *entryname)
 
void SCIPdialogGetPath (SCIP_DIALOG *dialog, const char sepchar, char *path)
 
const char * SCIPdialogGetName (SCIP_DIALOG *dialog)
 
const char * SCIPdialogGetDesc (SCIP_DIALOG *dialog)
 
SCIP_Bool SCIPdialogIsSubmenu (SCIP_DIALOG *dialog)
 
SCIP_DIALOGSCIPdialogGetParent (SCIP_DIALOG *dialog)
 
SCIP_DIALOG ** SCIPdialogGetSubdialogs (SCIP_DIALOG *dialog)
 
int SCIPdialogGetNSubdialogs (SCIP_DIALOG *dialog)
 
SCIP_DIALOGDATASCIPdialogGetData (SCIP_DIALOG *dialog)
 
void SCIPdialogSetData (SCIP_DIALOG *dialog, SCIP_DIALOGDATA *dialogdata)
 
SCIP_RETCODE SCIPdialogWriteHistory (const char *filename)
 

Function Documentation

◆ readLine()

static SCIP_RETCODE readLine ( SCIP_DIALOGHDLR dialoghdlr,
const char *  prompt,
SCIP_Bool endoffile 
)
static

reads a line of input from stdin

Parameters
dialoghdlrdialog handler
promptprompt to display
endoffilepointer to store whether the end of the input file was reached

Definition at line 146 of file dialog.c.

References SCIP_Dialoghdlr::buffer, SCIP_Dialoghdlr::bufferpos, SCIP_Dialoghdlr::buffersize, FALSE, NULL, SCIP_OKAY, and TRUE.

Referenced by readInputLine().

◆ addHistory()

static SCIP_RETCODE addHistory ( const char *  s)
static

puts the given string on the command history

Parameters
sstring to add to the command history

Definition at line 187 of file dialog.c.

References SCIP_OKAY.

Referenced by SCIPdialoghdlrAddHistory().

◆ getHistoryLength()

static int getHistoryLength ( void  )
static

returns the current length of the history list

Definition at line 197 of file dialog.c.

Referenced by SCIPdialoghdlrAddHistory().

◆ removeHistory()

static SCIP_RETCODE removeHistory ( int  pos)
static

removes a single element from the history list

Parameters
poslist position of history entry to remove

Definition at line 206 of file dialog.c.

References SCIP_OKAY.

Referenced by SCIPdialoghdlrAddHistory().

◆ writeHistory()

static SCIP_RETCODE writeHistory ( const char *  filename)
static

writes command history into file of the specified name

Parameters
filenamename of file to (over)write history to

Definition at line 217 of file dialog.c.

References SCIP_OKAY.

Referenced by SCIPdialogWriteHistory().

◆ linelistFree()

static void linelistFree ( SCIP_LINELIST **  linelist)
static

frees a single linelist entry, but not its successors

Parameters
linelistpointer to line list

Definition at line 229 of file dialog.c.

References BMSfreeMemory, BMSfreeMemoryArray, and NULL.

Referenced by linelistFreeAll(), and readInputLine().

◆ linelistFreeAll()

static void linelistFreeAll ( SCIP_LINELIST **  linelist)
static

frees a linelist entry and all of its successors

Parameters
linelistpointer to line list

Definition at line 241 of file dialog.c.

References linelistFree(), SCIP_Linelist::nextline, and NULL.

Referenced by SCIPdialoghdlrFree().

◆ readInputLine()

static SCIP_RETCODE readInputLine ( SCIP_DIALOGHDLR dialoghdlr,
const char *  prompt,
SCIP_Bool endoffile 
)
static

reads a line of input from stdin or from the stored input lines in the input list

Parameters
dialoghdlrdialog handler
promptprompt to display
endoffilepointer to store whether the end of the input file was reached

Definition at line 259 of file dialog.c.

References SCIP_Dialoghdlr::buffer, SCIP_Dialoghdlr::bufferpos, SCIP_Dialoghdlr::buffersize, FALSE, SCIP_Linelist::inputline, SCIP_Dialoghdlr::inputlist, SCIP_Dialoghdlr::inputlistptr, linelistFree(), SCIP_Linelist::nextline, NULL, readLine(), SCIP_CALL, SCIP_OKAY, and SCIPstrncpy().

Referenced by SCIPdialoghdlrGetLine(), and SCIPdialoghdlrGetWord().

◆ SCIPdialogCopyInclude()

SCIP_RETCODE SCIPdialogCopyInclude ( SCIP_DIALOG dialog,
SCIP_SET set 
)

copies the given dialog to a new scip

Parameters
dialogdialog
setSCIP_SET of SCIP to copy to

Definition at line 306 of file dialog.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPdialogGetName(), and SCIPsetDebugMsg.

◆ SCIPdialoghdlrCreate()

SCIP_RETCODE SCIPdialoghdlrCreate ( SCIP_SET set,
SCIP_DIALOGHDLR **  dialoghdlr 
)

creates a dialog handler

Parameters
setglobal SCIP settings
dialoghdlrpointer to store dialog handler

Definition at line 324 of file dialog.c.

References BMSallocMemory, BMSallocMemoryArray, NULL, SCIP_ALLOC, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIPdialoghdlrClearBuffer(), SCIPsetIncludeExternalCode(), and SCIPsnprintf().

Referenced by doScipCreate().

◆ SCIPdialoghdlrFree()

SCIP_RETCODE SCIPdialoghdlrFree ( SCIP scip,
SCIP_DIALOGHDLR **  dialoghdlr 
)

frees a dialog handler and it's dialog tree

Parameters
scipSCIP data structure
dialoghdlrpointer to dialog handler

Definition at line 354 of file dialog.c.

References BMSfreeMemory, BMSfreeMemoryArray, linelistFreeAll(), NULL, SCIP_CALL, SCIP_OKAY, and SCIPdialoghdlrSetRoot().

Referenced by SCIPfree().

◆ SCIPdialoghdlrExec()

SCIP_RETCODE SCIPdialoghdlrExec ( SCIP_DIALOGHDLR dialoghdlr,
SCIP_SET set 
)

executes the root dialog of the dialog handler

Parameters
dialoghdlrdialog handler
setglobal SCIP settings

Definition at line 372 of file dialog.c.

References SCIP_Dialoghdlr::buffer, SCIP_Dialoghdlr::bufferpos, NULL, SCIP_Dialoghdlr::rootdialog, SCIP_CALL, SCIP_OKAY, SCIPdialogExec(), and SCIPdialoghdlrClearBuffer().

Referenced by SCIPstartInteraction().

◆ SCIPdialoghdlrSetRoot()

SCIP_RETCODE SCIPdialoghdlrSetRoot ( SCIP scip,
SCIP_DIALOGHDLR dialoghdlr,
SCIP_DIALOG dialog 
)

makes given dialog the root dialog of dialog handler; captures dialog and releases former root dialog

Parameters
scipSCIP data structure
dialoghdlrdialog handler
dialogdialog to be the root

Definition at line 400 of file dialog.c.

References NULL, SCIP_Dialoghdlr::rootdialog, SCIP_CALL, SCIP_OKAY, SCIPdialogCapture(), and SCIPdialogRelease().

Referenced by SCIPdialoghdlrFree(), and SCIPsetRootDialog().

◆ ensureSubdialogMem()

static SCIP_RETCODE ensureSubdialogMem ( SCIP_DIALOG dialog,
SCIP_SET set,
int  num 
)
static

ensures, that sub-dialogs array can store at least the given number of sub-dialogs

Parameters
dialogdialog
setglobal SCIP settings
numminimal storage size for sub-dialogs

Definition at line 789 of file dialog.c.

References BMSreallocMemoryArray, NULL, SCIP_ALLOC, SCIP_OKAY, SCIPsetCalcMemGrowSize(), SCIP_Dialog::subdialogs, and SCIP_Dialog::subdialogssize.

Referenced by SCIPdialogAddEntry().

◆ SCIPdialogCreate()

SCIP_RETCODE SCIPdialogCreate ( SCIP_DIALOG **  dialog,
SCIP_DECL_DIALOGCOPY((*dialogcopy))  ,
SCIP_DECL_DIALOGEXEC((*dialogexec))  ,
SCIP_DECL_DIALOGDESC((*dialogdesc))  ,
SCIP_DECL_DIALOGFREE((*dialogfree))  ,
const char *  name,
const char *  desc,
SCIP_Bool  issubmenu,
SCIP_DIALOGDATA dialogdata 
)

creates and captures a user interface dialog

Parameters
dialogpointer to store the dialog
namename of dialog: command name appearing in parent's dialog menu
descdescription of dialog used if description output method is NULL
issubmenuis the dialog a sub-menu?
dialogdatauser defined dialog data

Definition at line 811 of file dialog.c.

References BMSallocMemory, BMSduplicateMemoryArray, BMSfreeMemory, BMSfreeMemoryArrayNull, NULL, SCIP_ALLOC, SCIP_ALLOC_TERMINATE, SCIP_OKAY, and SCIPdialogCapture().

Referenced by SCIPincludeDialog().

◆ dialogFree()

static SCIP_RETCODE dialogFree ( SCIP scip,
SCIP_DIALOG **  dialog 
)
static

frees dialog and all of its sub-dialogs

Parameters
scipSCIP data structure
dialogpointer to dialog

Definition at line 867 of file dialog.c.

References BMSfreeMemory, BMSfreeMemoryArrayNull, NULL, SCIP_CALL, SCIP_OKAY, and SCIPdialogRelease().

Referenced by SCIPdialogRelease().

◆ SCIPdialogCapture()

void SCIPdialogCapture ( SCIP_DIALOG dialog)

captures a dialog

Parameters
dialogdialog

Definition at line 899 of file dialog.c.

References NULL, and SCIP_Dialog::nuses.

Referenced by SCIPcaptureDialog(), SCIPdialogAddEntry(), SCIPdialogCreate(), and SCIPdialoghdlrSetRoot().

◆ SCIPdialogRelease()

SCIP_RETCODE SCIPdialogRelease ( SCIP scip,
SCIP_DIALOG **  dialog 
)

releases a dialog

Parameters
scipSCIP data structure
dialogpointer to dialog

Definition at line 909 of file dialog.c.

References dialogFree(), NULL, SCIP_CALL, and SCIP_OKAY.

Referenced by dialogFree(), SCIPdialoghdlrSetRoot(), and SCIPreleaseDialog().

◆ SCIPdialogExec()

SCIP_RETCODE SCIPdialogExec ( SCIP_DIALOG dialog,
SCIP_SET set,
SCIP_DIALOGHDLR dialoghdlr,
SCIP_DIALOG **  nextdialog 
)

executes dialog

Parameters
dialogdialog
setglobal SCIP settings
dialoghdlrdialog handler
nextdialogpointer to store the next dialog to process

Definition at line 926 of file dialog.c.

References NULL, SCIP_CALL, and SCIP_OKAY.

Referenced by SCIPdialoghdlrExec().

◆ SCIP_DECL_SORTPTRCOMP()

static SCIP_DECL_SORTPTRCOMP ( dialogComp  )
static

comparison method for sorting dialogs w.r.t. to their name

Definition at line 945 of file dialog.c.

References SCIPdialogGetName().

◆ SCIPdialogAddEntry()

SCIP_RETCODE SCIPdialogAddEntry ( SCIP_DIALOG dialog,
SCIP_SET set,
SCIP_DIALOG subdialog 
)

adds a sub-dialog to the given dialog as menu entry and captures the sub-dialog

Parameters
dialogdialog
setglobal SCIP settings
subdialogsub-dialog to add as menu entry in dialog

Definition at line 951 of file dialog.c.

References ensureSubdialogMem(), SCIP_Dialog::nsubdialogs, NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPdialogCapture(), SCIPdialogGetName(), SCIPdialogHasEntry(), SCIPerrorMessage, SCIPsortedvecInsertPtr(), and SCIP_Dialog::subdialogs.

Referenced by SCIPaddDialogEntry().