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

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()

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 156 of file dialog.c.

References assert(), SCIP_Dialoghdlr::buffer, SCIP_Dialoghdlr::bufferpos, SCIP_Dialoghdlr::buffersize, FALSE, NULL, result, SCIP_Bool, SCIP_OKAY, and TRUE.

Referenced by readInputLine().

◆ addHistory()

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 197 of file dialog.c.

References SCIP_OKAY.

Referenced by SCIPdialoghdlrAddHistory().

◆ getHistoryLength()

int getHistoryLength ( void )
static

returns the current length of the history list

Definition at line 207 of file dialog.c.

Referenced by SCIPdialoghdlrAddHistory().

◆ removeHistory()

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 216 of file dialog.c.

References SCIP_OKAY.

Referenced by SCIPdialoghdlrAddHistory().

◆ writeHistory()

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 227 of file dialog.c.

References assert(), NULL, and SCIP_OKAY.

Referenced by SCIPdialogWriteHistory().

◆ linelistFree()

void linelistFree ( SCIP_LINELIST ** linelist)
static

frees a single linelist entry, but not its successors

Parameters
linelistpointer to line list

Definition at line 241 of file dialog.c.

References assert(), BMSfreeMemory, BMSfreeMemoryArray, and NULL.

Referenced by linelistFreeAll(), and readInputLine().

◆ linelistFreeAll()

void linelistFreeAll ( SCIP_LINELIST ** linelist)
static

frees a linelist entry and all of its successors

Parameters
linelistpointer to line list

Definition at line 253 of file dialog.c.

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

Referenced by SCIPdialoghdlrFree().

◆ readInputLine()

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 271 of file dialog.c.

References assert(), 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_Bool, 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 318 of file dialog.c.

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

Referenced by SCIPsetCopyPlugins().

◆ 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 336 of file dialog.c.

References assert(), 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 367 of file dialog.c.

References assert(), 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 385 of file dialog.c.

References assert(), 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 413 of file dialog.c.

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

Referenced by SCIPdialoghdlrFree(), and SCIPsetRootDialog().

◆ ensureSubdialogMem()

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 802 of file dialog.c.

References assert(), 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 824 of file dialog.c.

References assert(), BMSallocMemory, BMSduplicateMemoryArray, BMSfreeMemory, BMSfreeMemoryArrayNull, NULL, SCIP_ALLOC, SCIP_ALLOC_TERMINATE, SCIP_Bool, SCIP_DECL_DIALOGCOPY, SCIP_DECL_DIALOGDESC, SCIP_DECL_DIALOGEXEC, SCIP_DECL_DIALOGFREE, SCIP_OKAY, and SCIPdialogCapture().

Referenced by SCIPincludeDialog().

◆ dialogFree()

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 880 of file dialog.c.

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

Referenced by SCIPdialogRelease().

◆ SCIPdialogCapture()

void SCIPdialogCapture ( SCIP_DIALOG * dialog)

captures a dialog

Parameters
dialogdialog

Definition at line 912 of file dialog.c.

References assert(), 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 922 of file dialog.c.

References assert(), 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 939 of file dialog.c.

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

Referenced by SCIPdialoghdlrExec().

◆ SCIP_DECL_SORTPTRCOMP()

SCIP_DECL_SORTPTRCOMP ( dialogComp )
static

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

Definition at line 958 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 964 of file dialog.c.

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

Referenced by SCIPaddDialogEntry().