%===========================================================================%
%                                                                           %
% This file is part of the documentation for the SYMPHONY MILP Solver.      %
%                                                                           %
% SYMPHONY was jointly developed by Ted Ralphs (ted@lehigh.edu) and         %
% Laci Ladanyi (ladanyi@us.ibm.com).                                        %
%                                                                           %
% (c) Copyright 2000-2015 Ted Ralphs. All Rights Reserved.                  %
%                                                                           %
% SYMPHONY is licensed under the Eclipse Public License. Please see         %
% accompanying file for terms.                                              %
%                                                                           %
%===========================================================================%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Draw graph module callbacks}

Due to the relative simplicity of the cut pool, there are no wrapper
functions implemented for DG. Consequently, there are no default
options and no post-processing.

%begin{latexonly}
\bd
%end{latexonly}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% user_dg_process_message
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\firstfuncdef{user\_dg\_process\_message}
\sindex[cf]{user\_dg\_process\_message}
\begin{verbatim}
void user_dg_process_message(void *user, window *win, FILE *write_to)
			     
\end{verbatim}

\bd

\describe

The user has to process whatever user-defined messages are sent to the
process. A write-to pipe to the wish process is provided so that the
user can directly issue commands there.

\args

\bt{llp{250pt}}
{\tt void *user} & INOUT & Pointer to the user-defined data structure. \\
{\tt window *win} & INOUT & The window that received the message. \\
{\tt FILE *write\_to} & IN & Pipe to the wish process. \\
\et

\returns

\bt{lp{300pt}}
{\tt USER\_ERROR} & Error. Message ignored. \\
{\tt USER\_SUCCESS} & The user processed the message. \\
\et

\ed

\vspace{1ex}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% user_dg_init_window
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\functiondef{user\_dg\_init\_window}
\sindex[cf]{user\_dg\_init\_window}
\begin{verbatim}
void user_dg_init_window(void **user, window *win) 
\end{verbatim}

\bd

\describe

The user must perform whatever initialization is necessary for
processing later commands. This usually includes setting up the user's
data structure for receiving and storing display data.

\args

\bt{llp{275pt}}
{\tt void **user} & INOUT & Pointer to the user-defined data structure. \\
{\tt window *win} & INOUT & \\
\et

\returns

\bt{lp{300pt}}
{\tt USER\_ERROR} & Error. Ignored. \\
{\tt USER\_SUCCESS} & The user successfully performed initialization. \\
\et

\ed

\vspace{1ex}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% user_dg_free_window
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\functiondef{user\_dg\_free\_window}
\sindex[cf]{user\_dg\_free\_window}
\begin{verbatim}
void user_dg_free_window(void **user, window *win) 
\end{verbatim}

\bd

\describe

The user must free any data structures allocated.

\args

\bt{llp{275pt}}
{\tt void **user} & INOUT & Pointer to the user-defined data structure. \\
{\tt window *win} & INOUT & \\
\et

\returns

\bt{lp{300pt}}
{\tt USER\_ERROR} & Error. Ignored. \\
{\tt USER\_SUCCESS} & The user successfully freed the data structures. \\
\et

\ed

\vspace{1ex}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% user_interpret_text
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\functiondef{user\_interpret\_text}
\sindex[cf]{user\_interpret\_text}
\begin{verbatim}
void user_interpret_text(void *user, int text_length,
			 char *text, int owner_tid)
\end{verbatim}

\bd

\describe

The user can interpret text input from the window.

\args

\bt{llp{250pt}}
{\tt void *user} & INOUT & Pointer to the user-defined data structure. \\
{\tt int text\_length} & IN & The length of {\tt text}. \\
{\tt char *text} & IN &  \\
{\tt int owner\_tid} & IN & The tid of the process that initiated this window.
\\ 
\et

\returns

\bt{lp{300pt}}
{\tt USER\_ERROR} & Error. Ignored. \\
{\tt USER\_SUCCESS} & The user successfully interpreted the text. \\
\et

\ed

\vspace{1ex}

%begin{latexonly}
\ed
%end{latexonly}

