00001
00002 #ifndef _SIC_COMM_H_
00003 #define _SIC_COMM_H_
00004
00010
00011
00012
00013
00014 #ifndef WIN32
00015 #define _XOPEN_SOURCE 600
00016 #include "sys/types.h"
00017 #else
00018 #include "win32.h"
00019 #endif
00020 #include <signal.h>
00021 #include <stdarg.h>
00022
00023 #include "sic_structures.h"
00024 #include "sic_command_line.h"
00025
00026
00027
00028
00029
00031 #if defined(cygwin)
00032 typedef _sig_func_ptr sic_sighandler_t;
00033 #elif defined(darwin) || defined(WIN32) || defined(GAG_SYSV)
00034 typedef void (* sic_sighandler_t)(int);
00035 #else
00036 typedef __sighandler_t sic_sighandler_t;
00037 #endif
00038
00040 #ifndef WIN32
00041 typedef pid_t task_t;
00042 typedef pid_t task_id_t;
00043 #define SIC_TASK_NULL (-1)
00044 #else
00045 typedef HANDLE task_t;
00046 typedef DWORD task_id_t;
00047 #define SIC_TASK_NULL (NULL)
00048 #endif
00049
00050 typedef global_struct sic_widget_def_t;
00052 typedef void (*sic_modified_variable_listener_t)( sic_widget_def_t *widget);
00054 typedef void (*sic_redraw_prompt_listener_t)( command_line_t *command_line);
00055
00057 typedef enum {
00059 SIC_DEFAULT,
00061 SIC_KEYBOARD,
00063 SIC_SILENT_MODE,
00064 } sic_command_from_t;
00065
00066
00067
00068
00069
00070 void sic_create_comm_board( );
00071 void sic_destroy_comm_board( );
00072 char **sic_get_static_argv( );
00073 int sic_execvp( char *argv[]);
00074 task_t sic_launch( int (*start_entry)( void *), void *data);
00075 int sic_terminate( task_t task);
00076 void sic_on_exit( );
00077 void sic_do_exit( int status);
00078 int sic_get_comm_id( );
00079 int sic_open_comm_board( int comm_board_id);
00080 void sic_close_comm_board( );
00081 task_id_t sic_get_task_id( task_t task);
00082 task_t sic_get_master_task( );
00083 task_id_t sic_get_master_task_id( );
00084 task_t sic_get_current_task( );
00085 task_id_t sic_get_current_task_id( );
00086 void sic_set_ctrlc_handled( int handled);
00087 void sic_send_ctrlc( );
00088 void sic_post_prompt( const command_line_t *command_line);
00089 int sic_wait_prompt( command_line_t *command_line, int timeout);
00090 void sic_get_current_prompt( char prompt[]);
00091 int sic_push_command_text( const char *text);
00092 int sic_post_command_from( const command_line_t *command_line, sic_command_from_t from);
00093 int sic_post_command( const command_line_t *command_line);
00094 void sic_post_command_from_prompt( const command_line_t *command_line);
00095 int sic_post_command_text_from( const char *text, sic_command_from_t from);
00096 int sic_post_command_text( const char *text);
00097 int sic_post_command_va( const char *args, va_list l);
00098 int sic_post_command_args( const char *args, ...);
00099 void sic_wait_command( command_line_t *command_line, sic_command_from_t *from);
00100 void sic_create_widget_board( );
00101 void sic_set_widget_global_infos( const char window_title[], const char help_filename[], const char returned_command[]);
00102 void sic_set_widget_returned_command( const char returned_command[]);
00103 void sic_get_widget_returned_command( char returned_command[]);
00104 void sic_set_widget_returned_code( int code);
00105 int sic_get_widget_returned_code( );
00106 void sic_add_modified_variable_listener( sic_modified_variable_listener_t l);
00107 void sic_fire_modified_variable_event( const sic_widget_def_t *widget);
00108 void sic_add_redraw_prompt_listener( sic_redraw_prompt_listener_t l);
00109 void sic_fire_redraw_prompt_event( const command_line_t *command_line);
00110 void sic_suspend_prompt( );
00111 int sic_add_widget_def( sic_widget_def_t *def);
00112 void sic_set_widget_def( int index, const sic_widget_def_t *widget);
00113 void sic_destroy_widget_board( );
00114 int sic_open_widget_board( );
00115 void sic_get_widget_global_infos( char window_title[], char help_filename[], char returned_command[]);
00116 void sic_get_widget_def( int index, sic_widget_def_t *widget);
00117 void sic_close_widget_board( );
00118 void sic_post_widget_created( );
00119 void sic_wait_widget_created( );
00120
00121 #endif
00122