#include "Functions.all.h"

void add_functions()
{
  script_add_function("quit",                            0x1, script_quit,                          0,  "v_"             ) ;
  script_add_function("init",                            0x2, script_init,                          5,  "i_ssssi"        ) ;
  script_add_function("lock_heap",                       0x3, script_lock_heap,                     0,  "i_"             ) ;
  script_add_function("unlock_heap",                     0x4, script_unlock_heap,                   0,  "v_"             ) ;

  script_add_function("open_display",                 0x1000, script_open_display,                  4,  "i_iiis"         ) ;
  script_add_function("close_display",                0x1001, script_open_display,                  1,  "v_i"            ) ;
  script_add_function("hide_display",                 0x1004, script_hide_display,                  1,  "v_i"            ) ;
  script_add_function("raise_display",                0x1006, script_raise_display,                 1,  "v_i"            ) ;
  script_add_function("read_display_colours",         0x1008, script_read_display_colours,          4,  "v_iIII"         ) ;
  script_add_function("set_display_colours",          0x1010, script_set_display_colours,           4,  "v_iiii"         ) ;
  script_add_function("set_display_character",        0x1020, script_set_display_character,         4,  "v_iiii"         ) ;
  script_add_function("set_display_character_colour", 0x1021, script_set_display_character_colour,  4,  "v_iiii"         ) ;
  script_add_function("text_to_display",              0x1040, script_text_to_display,               4,  "v_iiss"         ) ;
  script_add_function("display_set_line",             0x1050, script_display_set_line,              3,  "v_iis"          ) ;

  script_add_function("create_pane",                  0x1400, script_create_pane,                   9,  "i_iiiiiiiii"    ) ;
  script_add_function("remove_pane",                  0x1401, script_remove_pane,                   2,  "i_ii"           ) ;

  script_add_function("create_icon",                  0x1600, script_create_icon,                  13,  "i_iiiiiiiiiiiss") ;
  script_add_function("remove_icon",                  0x1601, script_remove_icon,                   3,  "v_iii"          ) ;
  script_add_function("icon_contents",                0x1610, script_icon_contents,                 3,  "s_iii"          ) ;
  script_add_function("caret_to_icon",                0x1620, script_caret_to_icon,                 4,  "v_iiii"         ) ;
  script_add_function("index_from_x",                 0x1630, script_index_from_x,                  4,  "i_iiii"         ) ;
  script_add_function("set_icon_text",                0x1640, script_set_icon_text,                 4,  "v_iiis"         ) ;
  script_add_function("change_icon_flags",            0x1650, script_change_icon_flags,             5,  "i_iiiii"        ) ;
  script_add_function("change_icon_colours",          0x1660, script_change_icon_colours,           5,  "v_iiiii"        ) ;

  script_add_function("create_listening_socket",      0x2000, script_create_listening_socket,       1,  "i_I"            ) ;
  script_add_function("create_socket",                0x2010, script_create_socket,                 2,  "i_ii"           ) ;
  script_add_function("create_socket_nonblock",       0x2018, script_create_socket_nonblock,        2,  "i_ii"           ) ;
  script_add_function("line_to_socket",               0x2020, script_line_to_socket,                2,  "v_is"           ) ;
  script_add_function("data_to_socket",               0x2030, script_data_to_socket,                2,  "v_is"           ) ;
  script_add_function("close_socket",                 0x2040, script_close_socket,                  1,  "v_i"            ) ;

  script_add_function("define_socket_to_text",        0x2101, script_define_socket_to_text,         4,  "i_isii"         ) ;
  script_add_function("define_socket_to_get_file",    0x2102, script_define_socket_to_get_file,     2,  "i_is"           ) ;
  script_add_function("define_socket_to_dcc_get",     0x2103, script_define_socket_to_dcc_get,      2,  "i_is"           ) ;
  script_add_function("define_socket_to_send_file",   0x2104, script_define_socket_to_send_file,    2,  "i_is"           ) ;
  script_add_function("define_socket_to_raw",         0x2105, script_define_socket_to_raw,          1,  "i_i"            ) ;
  script_add_function("define_sockets_to_proxy",      0x2106, script_define_sockets_to_proxy,       3,  "i_iii"          ) ;

  script_add_function("int_to_string",                0x3000, script_int_to_string,                 1,  "s_i"            ) ;
  script_add_function("string_to_int",                0x3001, script_string_to_int,                 1,  "i_s"            ) ;
  script_add_function("string_len",                   0x3002, script_string_len,                    1,  "i_s"            ) ;
  script_add_function("string_trunc",                 0x3003, script_string_truncate,               2,  "v_Si"           ) ;
  script_add_function("strip_leading_crap",           0x3004, script_strip_leading_crap,            1,  "i_S"            ) ;
  script_add_function("string_cat",                   0x3005, script_string_cat,                    2,  "v_Ss"           ) ;
  script_add_function("string_compare",               0x3006, script_string_compare,                2,  "i_ss"           ) ;
  script_add_function("search_for_tag",               0x3007, script_search_for_tag,                2,  "i_ss"           ) ;
  script_add_function("find_string",                  0x3008, script_find_string,                   2,  "i_ss"           ) ;
  script_add_function("string_compare_n",             0x3009, script_string_compare_n,              3,  "i_ssi"          ) ;
  script_add_function("left_string",                  0x300A, script_left_string,                   2,  "s_si"           ) ;
  script_add_function("mid_string",                   0x300B, script_mid_string,                    2,  "s_si"           ) ;
  script_add_function("string_char",                  0x300C, script_string_char,                   2,  "i_si"           ) ;
  script_add_function("set_string_char",              0x300D, script_set_string_char,               3,  "v_Sii"          ) ;
  script_add_function("int_to_dotted_ip",             0x300E, script_int_to_dotted_ip,              1,  "s_i"            ) ;
  script_add_function("dotted_ip_to_int",             0x3100, script_dotted_ip_to_int,              1,  "i_s"            ) ;
  script_add_function("read_time_string",             0x300F, script_read_time_string,              1,  "s_s"            ) ;
  script_add_function("string_reverse",               0x3010, script_string_reverse,                1,  "v_S"            ) ;
  script_add_function("replace_substring",            0x3011, script_replace_substring,             4,  "v_Siis"         ) ;
  script_add_function("int_to_hex",                   0x3040, script_int_to_hex,                    2,  "s_ii"           ) ;

  script_add_function("wild_match",                   0x5000, script_wild_match,                    2,  "i_ss"           ) ;
  script_add_function("search_and_replace",           0x5001, script_search_and_replace,            4,  "i_sssS"         ) ;

  script_add_function("open_file",                    0x6000, script_open_file,                     2,  "i_si"           ) ;
  script_add_function("close_file",                   0x6001, script_close_file,                    1,  "v_i"            ) ;
  script_add_function("write_byte",                   0x6010, script_write_byte,                    2,  "i_ii"           ) ;
  script_add_function("read_byte",                    0x6011, script_read_byte,                     2,  "i_iI"           ) ;
  script_add_function("write_word",                   0x6020, script_write_word,                    2,  "i_ii"           ) ;
  script_add_function("read_word",                    0x6021, script_read_word,                     2,  "i_iI"           ) ;
  script_add_function("write_line",                   0x6030, script_write_line,                    2,  "i_is"           ) ;
  script_add_function("read_line",                    0x6031, script_read_line,                     2,  "i_iS"           ) ;
  script_add_function("write_raw",                    0x6040, script_write_raw,                     2,  "i_is"           ) ;
  script_add_function("read_raw",                     0x6048, script_read_raw,                      3,  "i_iSi"          ) ;

  script_add_function("reset_menu",                   0x7000, script_reset_menu,                    2,  "v_si"           ) ;
  script_add_function("add_menu_item",                0x7010, script_add_menu_item,                 2,  "v_si"           ) ;
  script_add_function("change_menu_item",             0x7020, script_change_menu_item,              3,  "v_isi"          ) ;
  script_add_function("open_menu",                    0x7030, script_open_menu,                     0,  "v_"             ) ;

  script_add_function("read_user_name",               0x8000, script_read_user_name,                0,  "s_"             ) ;
  script_add_function("read_user_email",              0x8001, script_read_user_email,               0,  "s_"             ) ;
  script_add_function("read_user_id",                 0x8002, script_read_user_id,                  0,  "s_"             ) ;
  script_add_function("bar_icon",                     0x8010, script_bar_icon,                      4,  "i_iiis"         ) ;
  script_add_function("remove_bar_icon",              0x8020, script_remove_bar_icon,               1,  "v_i"         ) ;

  script_add_function("report_error",                 0x9000, script_report_wimp_error,             1,  "v_s"            ) ;
}
