📄 curses.priv.h
字号:
#define T(a) TR(TRACE_CALLS, a)#define TPUTS_TRACE(s) _nc_tputs_trace = s;#define TRACE_RETURN(value,type) return _nc_retrace_##type(value)#define returnAttr(code) TRACE_RETURN(code,attr_t)#define returnBits(code) TRACE_RETURN(code,unsigned)#define returnBool(code) TRACE_RETURN(code,bool)#define returnCPtr(code) TRACE_RETURN(code,cptr)#define returnCVoidPtr(code) TRACE_RETURN(code,cvoid_ptr)#define returnChar(code) TRACE_RETURN(code,chtype)#define returnCode(code) TRACE_RETURN(code,int)#define returnPtr(code) TRACE_RETURN(code,ptr)#define returnSP(code) TRACE_RETURN(code,sp)#define returnVoid T((T_RETURN(""))); return#define returnVoidPtr(code) TRACE_RETURN(code,void_ptr)#define returnWin(code) TRACE_RETURN(code,win)extern NCURSES_EXPORT(NCURSES_BOOL) _nc_retrace_bool (NCURSES_BOOL);extern NCURSES_EXPORT(NCURSES_CONST void *) _nc_retrace_cvoid_ptr (NCURSES_CONST void *);extern NCURSES_EXPORT(SCREEN *) _nc_retrace_sp (SCREEN *);extern NCURSES_EXPORT(WINDOW *) _nc_retrace_win (WINDOW *);extern NCURSES_EXPORT(attr_t) _nc_retrace_attr_t (attr_t);extern NCURSES_EXPORT(char *) _nc_retrace_ptr (char *);extern NCURSES_EXPORT(char *) _nc_trace_ttymode(TTY *tty);extern NCURSES_EXPORT(char *) _nc_varargs (const char *, va_list);extern NCURSES_EXPORT(chtype) _nc_retrace_chtype (chtype);extern NCURSES_EXPORT(const char *) _nc_altcharset_name(attr_t, chtype);extern NCURSES_EXPORT(const char *) _nc_retrace_cptr (const char *);extern NCURSES_EXPORT(int) _nc_retrace_int (int);extern NCURSES_EXPORT(unsigned) _nc_retrace_unsigned (unsigned);extern NCURSES_EXPORT(void *) _nc_retrace_void_ptr (void *);extern NCURSES_EXPORT(void) _nc_fifo_dump (void);extern NCURSES_EXPORT_VAR(const char *) _nc_tputs_trace;extern NCURSES_EXPORT_VAR(long) _nc_outchars;extern NCURSES_EXPORT_VAR(unsigned) _nc_tracing;#if USE_WIDEC_SUPPORTextern NCURSES_EXPORT(const char *) _nc_viswbuf2 (int, const wchar_t *);extern NCURSES_EXPORT(const char *) _nc_viswbufn (const wchar_t *, int);extern NCURSES_EXPORT(const char *) _nc_viscbuf2 (int, const cchar_t *, int);extern NCURSES_EXPORT(const char *) _nc_viscbuf (const cchar_t *, int);#endif#else /* !TRACE */#define START_TRACE() /* nothing */#define T(a)#define TR(n, a)#define TPUTS_TRACE(s)#define returnAttr(code) return code#define returnBits(code) return code#define returnBool(code) return code#define returnCPtr(code) return code#define returnCVoidPtr(code) return code#define returnChar(code) return code#define returnCode(code) return code#define returnPtr(code) return code#define returnSP(code) return code#define returnVoid return#define returnVoidPtr(code) return code#define returnWin(code) return code#endif /* TRACE/!TRACE */extern NCURSES_EXPORT(const char *) _nc_visbuf2 (int, const char *);extern NCURSES_EXPORT(const char *) _nc_visbufn (const char *, int);#define empty_module(name) \extern NCURSES_EXPORT(void) name (void); \ NCURSES_EXPORT(void) name (void) { }#define ALL_BUT_COLOR ((chtype)~(A_COLOR))#define NONBLANK_ATTR (A_NORMAL|A_BOLD|A_DIM|A_BLINK)#define XMC_CHANGES(c) ((c) & SP->_xmc_suppress)#define toggle_attr_on(S,at) {\ if (PAIR_NUMBER(at) > 0) {\ (S) = ((S) & ALL_BUT_COLOR) | (at);\ } else {\ (S) |= (at);\ }\ TR(TRACE_ATTRS, ("new attribute is %s", _traceattr((S))));}#define toggle_attr_off(S,at) {\ if (PAIR_NUMBER(at) > 0) {\ (S) &= ~(at|A_COLOR);\ } else {\ (S) &= ~(at);\ }\ TR(TRACE_ATTRS, ("new attribute is %s", _traceattr((S))));}#define DelCharCost(count) \ ((parm_dch != 0) \ ? SP->_dch_cost \ : ((delete_character != 0) \ ? (SP->_dch1_cost * count) \ : INFINITY))#define InsCharCost(count) \ ((parm_ich != 0) \ ? SP->_ich_cost \ : ((enter_insert_mode && exit_insert_mode) \ ? SP->_smir_cost + SP->_rmir_cost + (SP->_ip_cost * count) \ : ((insert_character != 0) \ ? ((SP->_ich1_cost + SP->_ip_cost) * count) \ : INFINITY)))#if USE_XMC_SUPPORT#define UpdateAttrs(c) if (!SameAttrOf(SCREEN_ATTRS(SP), c)) { \ attr_t chg = AttrOf(SCREEN_ATTRS(SP)); \ VIDATTR(AttrOf(c), GetPair(c)); \ if (magic_cookie_glitch > 0 \ && XMC_CHANGES((chg ^ AttrOf(SCREEN_ATTRS(SP))))) { \ T(("%s @%d before glitch %d,%d", \ __FILE__, __LINE__, \ SP->_cursrow, \ SP->_curscol)); \ _nc_do_xmc_glitch(chg); \ } \ }#else#define UpdateAttrs(c) if (!SameAttrOf(SCREEN_ATTRS(SP), c)) \ VIDATTR(AttrOf(c), GetPair(c));#endif/* * Macros to make additional parameter to implement wgetch_events() */#ifdef NCURSES_WGETCH_EVENTS#define EVENTLIST_0th(param) param#define EVENTLIST_1st(param) param#define EVENTLIST_2nd(param) , param#else#define EVENTLIST_0th(param) void#define EVENTLIST_1st(param) /* nothing */#define EVENTLIST_2nd(param) /* nothing */#endif#if NCURSES_EXPANDED && NCURSES_EXT_FUNCS#undef toggle_attr_on#define toggle_attr_on(S,at) _nc_toggle_attr_on(&(S), at)extern NCURSES_EXPORT(void) _nc_toggle_attr_on (attr_t *, attr_t);#undef toggle_attr_off#define toggle_attr_off(S,at) _nc_toggle_attr_off(&(S), at)extern NCURSES_EXPORT(void) _nc_toggle_attr_off (attr_t *, attr_t);#undef DelCharCost#define DelCharCost(count) _nc_DelCharCost(count)extern NCURSES_EXPORT(int) _nc_DelCharCost (int);#undef InsCharCost#define InsCharCost(count) _nc_InsCharCost(count)extern NCURSES_EXPORT(int) _nc_InsCharCost (int);#undef UpdateAttrs#define UpdateAttrs(c) _nc_UpdateAttrs(c)extern NCURSES_EXPORT(void) _nc_UpdateAttrs (NCURSES_CH_T);#elseextern NCURSES_EXPORT(void) _nc_expanded (void);#endif#if !HAVE_GETCWD#define getcwd(buf,len) getwd(buf)#endif/* charable.c */#if USE_WIDEC_SUPPORTextern NCURSES_EXPORT(bool) _nc_is_charable(wchar_t);extern NCURSES_EXPORT(int) _nc_to_char(wint_t);extern NCURSES_EXPORT(wint_t) _nc_to_widechar(int);#endif/* doupdate.c */#if USE_XMC_SUPPORTextern NCURSES_EXPORT(void) _nc_do_xmc_glitch (attr_t);#endif/* hardscroll.c */#if defined(TRACE) || defined(SCROLLDEBUG) || defined(HASHDEBUG)extern NCURSES_EXPORT(void) _nc_linedump (void);#endif/* lib_acs.c */extern NCURSES_EXPORT(void) _nc_init_acs (void); /* corresponds to traditional 'init_acs()' */extern NCURSES_EXPORT(int) _nc_msec_cost (const char *const, int); /* used by 'tack' program *//* lib_addch.c */#if USE_WIDEC_SUPPORTNCURSES_EXPORT(int) _nc_build_wch(WINDOW *win, ARG_CH_T ch);#endif/* lib_addstr.c */#if USE_WIDEC_SUPPORT && !defined(USE_TERMLIB)extern NCURSES_EXPORT(int) _nc_wchstrlen(const cchar_t *);#endif/* lib_color.c */extern NCURSES_EXPORT(bool) _nc_reset_colors(void);/* lib_getch.c */extern NCURSES_EXPORT(int) _nc_wgetch(WINDOW *, unsigned long *, int EVENTLIST_2nd(_nc_eventlist *));/* lib_insch.c */extern NCURSES_EXPORT(int) _nc_insert_ch(WINDOW *, chtype);/* lib_mvcur.c */#define INFINITY 1000000 /* cost: too high to use */extern NCURSES_EXPORT(void) _nc_mvcur_init (void);extern NCURSES_EXPORT(void) _nc_mvcur_resume (void);extern NCURSES_EXPORT(void) _nc_mvcur_wrap (void);extern NCURSES_EXPORT(int) _nc_scrolln (int, int, int, int);extern NCURSES_EXPORT(void) _nc_screen_init (void);extern NCURSES_EXPORT(void) _nc_screen_resume (void);extern NCURSES_EXPORT(void) _nc_screen_wrap (void);/* lib_mouse.c */extern NCURSES_EXPORT(int) _nc_has_mouse (void);/* lib_mvcur.c */#define INFINITY 1000000 /* cost: too high to use */#define BAUDBYTE 9 /* 9 = 7 bits + 1 parity + 1 stop *//* lib_setup.c */extern NCURSES_EXPORT(char *) _nc_get_locale(void);extern NCURSES_EXPORT(int) _nc_unicode_locale(void);extern NCURSES_EXPORT(int) _nc_locale_breaks_acs(void);extern NCURSES_EXPORT(int) _nc_setupterm(NCURSES_CONST char *, int , int *, bool);/* lib_wacs.c */#if USE_WIDEC_SUPPORTextern NCURSES_EXPORT(void) _nc_init_wacs(void);#endiftypedef struct { char *s_head; /* beginning of the string (may be null) */ char *s_tail; /* end of the string (may be null) */ size_t s_size; /* current remaining size available */ size_t s_init; /* total size available */} string_desc;/* strings.c */extern NCURSES_EXPORT(string_desc *) _nc_str_init (string_desc *, char *, size_t);extern NCURSES_EXPORT(string_desc *) _nc_str_null (string_desc *, size_t);extern NCURSES_EXPORT(string_desc *) _nc_str_copy (string_desc *, string_desc *);extern NCURSES_EXPORT(bool) _nc_safe_strcat (string_desc *, const char *);extern NCURSES_EXPORT(bool) _nc_safe_strcpy (string_desc *, const char *);#if !HAVE_STRSTR#define strstr _nc_strstrextern NCURSES_EXPORT(char *) _nc_strstr (const char *, const char *);#endif/* safe_sprintf.c */extern NCURSES_EXPORT(char *) _nc_printf_string (const char *, va_list);/* tries.c */extern NCURSES_EXPORT(void) _nc_add_to_try (struct tries **, const char *, unsigned short);extern NCURSES_EXPORT(char *) _nc_expand_try (struct tries *, unsigned short, int *, size_t);extern NCURSES_EXPORT(int) _nc_remove_key (struct tries **, unsigned short);extern NCURSES_EXPORT(int) _nc_remove_string (struct tries **, const char *);/* elsewhere ... */extern NCURSES_EXPORT(ENTRY *) _nc_delink_entry(ENTRY *, TERMTYPE *);extern NCURSES_EXPORT(WINDOW *) _nc_makenew (int, int, int, int, int);extern NCURSES_EXPORT(char *) _nc_home_terminfo (void);extern NCURSES_EXPORT(char *) _nc_trace_buf (int, size_t);extern NCURSES_EXPORT(char *) _nc_trace_bufcat (int, const char *);extern NCURSES_EXPORT(int) _nc_access (const char *, int);extern NCURSES_EXPORT(int) _nc_baudrate (int);extern NCURSES_EXPORT(int) _nc_freewin (WINDOW *);extern NCURSES_EXPORT(int) _nc_getenv_num (const char *);extern NCURSES_EXPORT(int) _nc_keypad (bool);extern NCURSES_EXPORT(int) _nc_ospeed (int);extern NCURSES_EXPORT(int) _nc_outch (int);extern NCURSES_EXPORT(int) _nc_setupscreen (short, short const, FILE *);extern NCURSES_EXPORT(int) _nc_timed_wait(int, int, int * EVENTLIST_2nd(_nc_eventlist *));extern NCURSES_EXPORT(void) _nc_do_color (int, int, bool, int (*)(int));extern NCURSES_EXPORT(void) _nc_flush (void);extern NCURSES_EXPORT(void) _nc_free_entry(ENTRY *, TERMTYPE *);extern NCURSES_EXPORT(void) _nc_freeall (void);extern NCURSES_EXPORT(void) _nc_hash_map (void);extern NCURSES_EXPORT(void) _nc_init_keytry (void);extern NCURSES_EXPORT(void) _nc_keep_tic_dir (const char *);extern NCURSES_EXPORT(void) _nc_make_oldhash (int i);extern NCURSES_EXPORT(void) _nc_scroll_oldhash (int n, int top, int bot);extern NCURSES_EXPORT(void) _nc_scroll_optimize (void);extern NCURSES_EXPORT(void) _nc_set_buffer (FILE *, bool);extern NCURSES_EXPORT(void) _nc_signal_handler (bool);extern NCURSES_EXPORT(void) _nc_synchook (WINDOW *);extern NCURSES_EXPORT(void) _nc_trace_tries (struct tries *);#if NO_LEAKSextern NCURSES_EXPORT(void) _nc_alloc_entry_leaks(void);extern NCURSES_EXPORT(void) _nc_captoinfo_leaks(void);extern NCURSES_EXPORT(void) _nc_comp_scan_leaks(void);#endif#ifndef USE_TERMLIBextern NCURSES_EXPORT(NCURSES_CH_T) _nc_render (WINDOW *, NCURSES_CH_T);extern NCURSES_EXPORT(int) _nc_waddch_nosync (WINDOW *, const NCURSES_CH_T);extern NCURSES_EXPORT(void) _nc_scroll_window (WINDOW *, int const, short const, short const, NCURSES_CH_T);#endif#if USE_WIDEC_SUPPORT && !defined(USE_TERMLIB)#ifdef linuxextern NCURSES_EXPORT(size_t) _nc_wcrtomb (char *, wchar_t, mbstate_t *);#else#define _nc_wcrtomb(s,wc,ps) wcrtomb(s,wc,ps)#endif#endif#if USE_SIZECHANGEextern NCURSES_EXPORT(void) _nc_update_screensize (void);#endif#if HAVE_RESIZETERMextern NCURSES_EXPORT(void) _nc_resize_margins (WINDOW *);#else#define _nc_resize_margins(wp) /* nothing */#endif#ifdef NCURSES_WGETCH_EVENTSextern NCURSES_EXPORT(int) _nc_eventlist_timeout(_nc_eventlist *);#else#define wgetch_events(win, evl) wgetch(win)#define wgetnstr_events(win, str, maxlen, evl) wgetnstr(win, str, maxlen)#endif/* * Not everyone has vsscanf(), but we'd like to use it for scanw(). */#if !HAVE_VSSCANFextern int vsscanf(const char *str, const char *format, va_list __arg);#endif/* scroll indices */extern NCURSES_EXPORT_VAR(int *) _nc_oldnums;#define USE_SETBUF_0 0#define NC_BUFFERED(flag) _nc_set_buffer(SP->_ofp, flag)#define NC_OUTPUT ((SP != 0) ? SP->_ofp : stdout)/* * On systems with a broken linker, define 'SP' as a function to force the * linker to pull in the data-only module with 'SP'. */#if BROKEN_LINKER#define SP _nc_screen()extern NCURSES_EXPORT(SCREEN *) _nc_screen (void);extern NCURSES_EXPORT(int) _nc_alloc_screen (void);extern NCURSES_EXPORT(void) _nc_set_screen (SCREEN *);#else/* current screen is private data; avoid possible linking conflicts too */extern NCURSES_EXPORT_VAR(SCREEN *) SP;#define _nc_alloc_screen() ((SP = typeCalloc(SCREEN, 1)) != 0)#define _nc_set_screen(sp) SP = sp#endif/* * We don't want to use the lines or columns capabilities internally, because * if the application is running multiple screens under X, it's quite possible * they could all have type xterm but have different sizes! So... */#define screen_lines SP->_lines#define screen_columns SP->_columnsextern NCURSES_EXPORT_VAR(int) _nc_slk_format; /* != 0 if slk_init() called */extern NCURSES_EXPORT(int) _nc_slk_initialize (WINDOW *, int);/* * Some constants related to SLK's */#define MAX_SKEY_OLD 8 /* count of soft keys */#define MAX_SKEY_LEN_OLD 8 /* max length of soft key text */#define MAX_SKEY_PC 12 /* This is what most PC's have */#define MAX_SKEY_LEN_PC 5/* Macro to check whether or not we use a standard format */#define SLK_STDFMT(fmt) (fmt < 3)/* Macro to determine height of label window */#define SLK_LINES(fmt) (SLK_STDFMT(fmt) ? 1 : ((fmt) - 2))#define MAX_SKEY(fmt) (SLK_STDFMT(fmt)? MAX_SKEY_OLD : MAX_SKEY_PC)#define MAX_SKEY_LEN(fmt) (SLK_STDFMT(fmt)? MAX_SKEY_LEN_OLD : MAX_SKEY_LEN_PC)extern NCURSES_EXPORT(int) _nc_ripoffline (int line, int (*init)(WINDOW *,int));/* * Common error messages */#define MSG_NO_MEMORY "Out of memory"#define MSG_NO_INPUTS "Premature EOF"#ifdef __cplusplus}#endif#endif /* CURSES_PRIV_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -