#ifndef GUARD_UNIBILIUM_H_
#define GUARD_UNIBILIUM_H_
/*
Copyright 2008, 2010-2013, 2015 Lukas Mai.
This file is part of unibilium.
Unibilium is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Unibilium is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with unibilium. If not, see .
*/
#include
enum unibi_boolean {
unibi_boolean_begin_,
unibi_auto_left_margin,
unibi_auto_right_margin,
unibi_no_esc_ctlc,
unibi_ceol_standout_glitch,
unibi_eat_newline_glitch,
unibi_erase_overstrike,
unibi_generic_type,
unibi_hard_copy,
unibi_has_meta_key,
unibi_has_status_line,
unibi_insert_null_glitch,
unibi_memory_above,
unibi_memory_below,
unibi_move_insert_mode,
unibi_move_standout_mode,
unibi_over_strike,
unibi_status_line_esc_ok,
unibi_dest_tabs_magic_smso,
unibi_tilde_glitch,
unibi_transparent_underline,
unibi_xon_xoff,
unibi_needs_xon_xoff,
unibi_prtr_silent,
unibi_hard_cursor,
unibi_non_rev_rmcup,
unibi_no_pad_char,
unibi_non_dest_scroll_region,
unibi_can_change,
unibi_back_color_erase,
unibi_hue_lightness_saturation,
unibi_col_addr_glitch,
unibi_cr_cancels_micro_mode,
unibi_has_print_wheel,
unibi_row_addr_glitch,
unibi_semi_auto_right_margin,
unibi_cpi_changes_res,
unibi_lpi_changes_res,
unibi_backspaces_with_bs,
unibi_crt_no_scrolling,
unibi_no_correctly_working_cr,
unibi_gnu_has_meta_key,
unibi_linefeed_is_newline,
unibi_has_hardware_tabs,
unibi_return_does_clr_eol,
unibi_boolean_end_
};
enum unibi_numeric {
unibi_numeric_begin_ = unibi_boolean_end_,
unibi_columns,
unibi_init_tabs,
unibi_lines,
unibi_lines_of_memory,
unibi_magic_cookie_glitch,
unibi_padding_baud_rate,
unibi_virtual_terminal,
unibi_width_status_line,
unibi_num_labels,
unibi_label_height,
unibi_label_width,
unibi_max_attributes,
unibi_maximum_windows,
unibi_max_colors,
unibi_max_pairs,
unibi_no_color_video,
unibi_buffer_capacity,
unibi_dot_vert_spacing,
unibi_dot_horz_spacing,
unibi_max_micro_address,
unibi_max_micro_jump,
unibi_micro_col_size,
unibi_micro_line_size,
unibi_number_of_pins,
unibi_output_res_char,
unibi_output_res_line,
unibi_output_res_horz_inch,
unibi_output_res_vert_inch,
unibi_print_rate,
unibi_wide_char_size,
unibi_buttons,
unibi_bit_image_entwining,
unibi_bit_image_type,
unibi_magic_cookie_glitch_ul,
unibi_carriage_return_delay,
unibi_new_line_delay,
unibi_backspace_delay,
unibi_horizontal_tab_delay,
unibi_number_of_function_keys,
unibi_numeric_end_
};
enum unibi_string {
unibi_string_begin_ = unibi_numeric_end_,
unibi_back_tab,
unibi_bell,
unibi_carriage_return,
unibi_change_scroll_region,
unibi_clear_all_tabs,
unibi_clear_screen,
unibi_clr_eol,
unibi_clr_eos,
unibi_column_address,
unibi_command_character,
unibi_cursor_address,
unibi_cursor_down,
unibi_cursor_home,
unibi_cursor_invisible,
unibi_cursor_left,
unibi_cursor_mem_address,
unibi_cursor_normal,
unibi_cursor_right,
unibi_cursor_to_ll,
unibi_cursor_up,
unibi_cursor_visible,
unibi_delete_character,
unibi_delete_line,
unibi_dis_status_line,
unibi_down_half_line,
unibi_enter_alt_charset_mode,
unibi_enter_blink_mode,
unibi_enter_bold_mode,
unibi_enter_ca_mode,
unibi_enter_delete_mode,
unibi_enter_dim_mode,
unibi_enter_insert_mode,
unibi_enter_secure_mode,
unibi_enter_protected_mode,
unibi_enter_reverse_mode,
unibi_enter_standout_mode,
unibi_enter_underline_mode,
unibi_erase_chars,
unibi_exit_alt_charset_mode,
unibi_exit_attribute_mode,
unibi_exit_ca_mode,
unibi_exit_delete_mode,
unibi_exit_insert_mode,
unibi_exit_standout_mode,
unibi_exit_underline_mode,
unibi_flash_screen,
unibi_form_feed,
unibi_from_status_line,
unibi_init_1string,
unibi_init_2string,
unibi_init_3string,
unibi_init_file,
unibi_insert_character,
unibi_insert_line,
unibi_insert_padding,
unibi_key_backspace,
unibi_key_catab,
unibi_key_clear,
unibi_key_ctab,
unibi_key_dc,
unibi_key_dl,
unibi_key_down,
unibi_key_eic,
unibi_key_eol,
unibi_key_eos,
unibi_key_f0,
unibi_key_f1,
unibi_key_f10,
unibi_key_f2,
unibi_key_f3,
unibi_key_f4,
unibi_key_f5,
unibi_key_f6,
unibi_key_f7,
unibi_key_f8,
unibi_key_f9,
unibi_key_home,
unibi_key_ic,
unibi_key_il,
unibi_key_left,
unibi_key_ll,
unibi_key_npage,
unibi_key_ppage,
unibi_key_right,
unibi_key_sf,
unibi_key_sr,
unibi_key_stab,
unibi_key_up,
unibi_keypad_local,
unibi_keypad_xmit,
unibi_lab_f0,
unibi_lab_f1,
unibi_lab_f10,
unibi_lab_f2,
unibi_lab_f3,
unibi_lab_f4,
unibi_lab_f5,
unibi_lab_f6,
unibi_lab_f7,
unibi_lab_f8,
unibi_lab_f9,
unibi_meta_off,
unibi_meta_on,
unibi_newline,
unibi_pad_char,
unibi_parm_dch,
unibi_parm_delete_line,
unibi_parm_down_cursor,
unibi_parm_ich,
unibi_parm_index,
unibi_parm_insert_line,
unibi_parm_left_cursor,
unibi_parm_right_cursor,
unibi_parm_rindex,
unibi_parm_up_cursor,
unibi_pkey_key,
unibi_pkey_local,
unibi_pkey_xmit,
unibi_print_screen,
unibi_prtr_off,
unibi_prtr_on,
unibi_repeat_char,
unibi_reset_1string,
unibi_reset_2string,
unibi_reset_3string,
unibi_reset_file,
unibi_restore_cursor,
unibi_row_address,
unibi_save_cursor,
unibi_scroll_forward,
unibi_scroll_reverse,
unibi_set_attributes,
unibi_set_tab,
unibi_set_window,
unibi_tab,
unibi_to_status_line,
unibi_underline_char,
unibi_up_half_line,
unibi_init_prog,
unibi_key_a1,
unibi_key_a3,
unibi_key_b2,
unibi_key_c1,
unibi_key_c3,
unibi_prtr_non,
unibi_char_padding,
unibi_acs_chars,
unibi_plab_norm,
unibi_key_btab,
unibi_enter_xon_mode,
unibi_exit_xon_mode,
unibi_enter_am_mode,
unibi_exit_am_mode,
unibi_xon_character,
unibi_xoff_character,
unibi_ena_acs,
unibi_label_on,
unibi_label_off,
unibi_key_beg,
unibi_key_cancel,
unibi_key_close,
unibi_key_command,
unibi_key_copy,
unibi_key_create,
unibi_key_end,
unibi_key_enter,
unibi_key_exit,
unibi_key_find,
unibi_key_help,
unibi_key_mark,
unibi_key_message,
unibi_key_move,
unibi_key_next,
unibi_key_open,
unibi_key_options,
unibi_key_previous,
unibi_key_print,
unibi_key_redo,
unibi_key_reference,
unibi_key_refresh,
unibi_key_replace,
unibi_key_restart,
unibi_key_resume,
unibi_key_save,
unibi_key_suspend,
unibi_key_undo,
unibi_key_sbeg,
unibi_key_scancel,
unibi_key_scommand,
unibi_key_scopy,
unibi_key_screate,
unibi_key_sdc,
unibi_key_sdl,
unibi_key_select,
unibi_key_send,
unibi_key_seol,
unibi_key_sexit,
unibi_key_sfind,
unibi_key_shelp,
unibi_key_shome,
unibi_key_sic,
unibi_key_sleft,
unibi_key_smessage,
unibi_key_smove,
unibi_key_snext,
unibi_key_soptions,
unibi_key_sprevious,
unibi_key_sprint,
unibi_key_sredo,
unibi_key_sreplace,
unibi_key_sright,
unibi_key_srsume,
unibi_key_ssave,
unibi_key_ssuspend,
unibi_key_sundo,
unibi_req_for_input,
unibi_key_f11,
unibi_key_f12,
unibi_key_f13,
unibi_key_f14,
unibi_key_f15,
unibi_key_f16,
unibi_key_f17,
unibi_key_f18,
unibi_key_f19,
unibi_key_f20,
unibi_key_f21,
unibi_key_f22,
unibi_key_f23,
unibi_key_f24,
unibi_key_f25,
unibi_key_f26,
unibi_key_f27,
unibi_key_f28,
unibi_key_f29,
unibi_key_f30,
unibi_key_f31,
unibi_key_f32,
unibi_key_f33,
unibi_key_f34,
unibi_key_f35,
unibi_key_f36,
unibi_key_f37,
unibi_key_f38,
unibi_key_f39,
unibi_key_f40,
unibi_key_f41,
unibi_key_f42,
unibi_key_f43,
unibi_key_f44,
unibi_key_f45,
unibi_key_f46,
unibi_key_f47,
unibi_key_f48,
unibi_key_f49,
unibi_key_f50,
unibi_key_f51,
unibi_key_f52,
unibi_key_f53,
unibi_key_f54,
unibi_key_f55,
unibi_key_f56,
unibi_key_f57,
unibi_key_f58,
unibi_key_f59,
unibi_key_f60,
unibi_key_f61,
unibi_key_f62,
unibi_key_f63,
unibi_clr_bol,
unibi_clear_margins,
unibi_set_left_margin,
unibi_set_right_margin,
unibi_label_format,
unibi_set_clock,
unibi_display_clock,
unibi_remove_clock,
unibi_create_window,
unibi_goto_window,
unibi_hangup,
unibi_dial_phone,
unibi_quick_dial,
unibi_tone,
unibi_pulse,
unibi_flash_hook,
unibi_fixed_pause,
unibi_wait_tone,
unibi_user0,
unibi_user1,
unibi_user2,
unibi_user3,
unibi_user4,
unibi_user5,
unibi_user6,
unibi_user7,
unibi_user8,
unibi_user9,
unibi_orig_pair,
unibi_orig_colors,
unibi_initialize_color,
unibi_initialize_pair,
unibi_set_color_pair,
unibi_set_foreground,
unibi_set_background,
unibi_change_char_pitch,
unibi_change_line_pitch,
unibi_change_res_horz,
unibi_change_res_vert,
unibi_define_char,
unibi_enter_doublewide_mode,
unibi_enter_draft_quality,
unibi_enter_italics_mode,
unibi_enter_leftward_mode,
unibi_enter_micro_mode,
unibi_enter_near_letter_quality,
unibi_enter_normal_quality,
unibi_enter_shadow_mode,
unibi_enter_subscript_mode,
unibi_enter_superscript_mode,
unibi_enter_upward_mode,
unibi_exit_doublewide_mode,
unibi_exit_italics_mode,
unibi_exit_leftward_mode,
unibi_exit_micro_mode,
unibi_exit_shadow_mode,
unibi_exit_subscript_mode,
unibi_exit_superscript_mode,
unibi_exit_upward_mode,
unibi_micro_column_address,
unibi_micro_down,
unibi_micro_left,
unibi_micro_right,
unibi_micro_row_address,
unibi_micro_up,
unibi_order_of_pins,
unibi_parm_down_micro,
unibi_parm_left_micro,
unibi_parm_right_micro,
unibi_parm_up_micro,
unibi_select_char_set,
unibi_set_bottom_margin,
unibi_set_bottom_margin_parm,
unibi_set_left_margin_parm,
unibi_set_right_margin_parm,
unibi_set_top_margin,
unibi_set_top_margin_parm,
unibi_start_bit_image,
unibi_start_char_set_def,
unibi_stop_bit_image,
unibi_stop_char_set_def,
unibi_subscript_characters,
unibi_superscript_characters,
unibi_these_cause_cr,
unibi_zero_motion,
unibi_char_set_names,
unibi_key_mouse,
unibi_mouse_info,
unibi_req_mouse_pos,
unibi_get_mouse,
unibi_set_a_foreground,
unibi_set_a_background,
unibi_pkey_plab,
unibi_device_type,
unibi_code_set_init,
unibi_set0_des_seq,
unibi_set1_des_seq,
unibi_set2_des_seq,
unibi_set3_des_seq,
unibi_set_lr_margin,
unibi_set_tb_margin,
unibi_bit_image_repeat,
unibi_bit_image_newline,
unibi_bit_image_carriage_return,
unibi_color_names,
unibi_define_bit_image_region,
unibi_end_bit_image_region,
unibi_set_color_band,
unibi_set_page_length,
unibi_display_pc_char,
unibi_enter_pc_charset_mode,
unibi_exit_pc_charset_mode,
unibi_enter_scancode_mode,
unibi_exit_scancode_mode,
unibi_pc_term_options,
unibi_scancode_escape,
unibi_alt_scancode_esc,
unibi_enter_horizontal_hl_mode,
unibi_enter_left_hl_mode,
unibi_enter_low_hl_mode,
unibi_enter_right_hl_mode,
unibi_enter_top_hl_mode,
unibi_enter_vertical_hl_mode,
unibi_set_a_attributes,
unibi_set_pglen_inch,
unibi_termcap_init2,
unibi_termcap_reset,
unibi_linefeed_if_not_lf,
unibi_backspace_if_not_bs,
unibi_other_non_function_keys,
unibi_arrow_key_map,
unibi_acs_ulcorner,
unibi_acs_llcorner,
unibi_acs_urcorner,
unibi_acs_lrcorner,
unibi_acs_ltee,
unibi_acs_rtee,
unibi_acs_btee,
unibi_acs_ttee,
unibi_acs_hline,
unibi_acs_vline,
unibi_acs_plus,
unibi_memory_lock,
unibi_memory_unlock,
unibi_box_chars_1,
unibi_string_end_
};
typedef struct unibi_term unibi_term;
unibi_term *unibi_dummy(void);
unibi_term *unibi_from_mem(const char *, size_t);
void unibi_destroy(unibi_term *);
size_t unibi_dump(const unibi_term *, char *, size_t);
const char *unibi_get_name(const unibi_term *);
void unibi_set_name(unibi_term *, const char *);
const char **unibi_get_aliases(const unibi_term *);
void unibi_set_aliases(unibi_term *, const char **);
int unibi_get_bool(const unibi_term *, enum unibi_boolean);
void unibi_set_bool(unibi_term *, enum unibi_boolean, int);
int unibi_get_num(const unibi_term *, enum unibi_numeric);
void unibi_set_num(unibi_term *, enum unibi_numeric, int);
const char *unibi_get_str(const unibi_term *, enum unibi_string);
void unibi_set_str(unibi_term *, enum unibi_string, const char *);
unibi_term *unibi_from_fp(FILE *);
unibi_term *unibi_from_fd(int);
unibi_term *unibi_from_file(const char *);
unibi_term *unibi_from_term(const char *);
unibi_term *unibi_from_env(void);
extern const char *const unibi_terminfo_dirs;
const char *unibi_name_bool(enum unibi_boolean);
const char *unibi_short_name_bool(enum unibi_boolean);
const char *unibi_name_num(enum unibi_numeric);
const char *unibi_short_name_num(enum unibi_numeric);
const char *unibi_name_str(enum unibi_string);
const char *unibi_short_name_str(enum unibi_string);
size_t unibi_count_ext_bool(const unibi_term *);
size_t unibi_count_ext_num(const unibi_term *);
size_t unibi_count_ext_str(const unibi_term *);
int unibi_get_ext_bool(const unibi_term *, size_t);
int unibi_get_ext_num(const unibi_term *, size_t);
const char *unibi_get_ext_str(const unibi_term *, size_t);
void unibi_set_ext_bool(unibi_term *, size_t, int);
void unibi_set_ext_num(unibi_term *, size_t, int);
void unibi_set_ext_str(unibi_term *, size_t, const char *);
const char *unibi_get_ext_bool_name(const unibi_term *, size_t);
const char *unibi_get_ext_num_name(const unibi_term *, size_t);
const char *unibi_get_ext_str_name(const unibi_term *, size_t);
void unibi_set_ext_bool_name(unibi_term *, size_t, const char *);
void unibi_set_ext_num_name(unibi_term *, size_t, const char *);
void unibi_set_ext_str_name(unibi_term *, size_t, const char *);
size_t unibi_add_ext_bool(unibi_term *, const char *, int);
size_t unibi_add_ext_num(unibi_term *, const char *, int);
size_t unibi_add_ext_str(unibi_term *, const char *, const char *);
void unibi_del_ext_bool(unibi_term *, size_t);
void unibi_del_ext_num(unibi_term *, size_t);
void unibi_del_ext_str(unibi_term *, size_t);
typedef struct {
int i_;
char *p_;
} unibi_var_t;
unibi_var_t unibi_var_from_num(int);
unibi_var_t unibi_var_from_str(char *);
int unibi_num_from_var(unibi_var_t);
const char *unibi_str_from_var(unibi_var_t);
void unibi_format(
unibi_var_t [26],
unibi_var_t [26],
const char *,
unibi_var_t [9],
void (*)(void *, const char *, size_t),
void *,
void (*)(void *, size_t, int, int),
void *
);
size_t unibi_run(const char *, unibi_var_t [9], char *, size_t);
#endif /* GUARD_UNIBILIUM_H_ */