]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - ncurses/curses.priv.h
ncurses 5.7 - patch 20090124
[ncurses.git] / ncurses / curses.priv.h
index c6fda33d745d77961c6088da4c9c55dc828fbd87..05f3331f28efcffe1505eaac8da418d4aabeaa86 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -34,7 +34,7 @@
 
 
 /*
- * $Id: curses.priv.h,v 1.386 2008/06/28 15:27:47 tom Exp $
+ * $Id: curses.priv.h,v 1.396 2009/01/24 23:04:59 tom Exp $
  *
  *     curses.priv.h
  *
@@ -147,7 +147,7 @@ extern int errno;
 #define HAVE_SIZECHANGE 0
 #endif
 
-#if HAVE_SIZECHANGE && defined(SIGWINCH)
+#if HAVE_SIZECHANGE && USE_SIGWINCH && defined(SIGWINCH)
 #define USE_SIZECHANGE 1
 #else
 #define USE_SIZECHANGE 0
@@ -330,6 +330,7 @@ NCURSES_EXPORT(int *) _nc_ptr_Cols (void);
 
 #if USE_REENTRANT
 #include <pthread.h>
+extern NCURSES_EXPORT(void) _nc_init_pthreads(void);
 extern NCURSES_EXPORT(void) _nc_mutex_init(pthread_mutex_t *);
 extern NCURSES_EXPORT(int) _nc_mutex_lock(pthread_mutex_t *);
 extern NCURSES_EXPORT(int) _nc_mutex_trylock(pthread_mutex_t *);
@@ -342,6 +343,36 @@ extern NCURSES_EXPORT(int) _nc_mutex_unlock(pthread_mutex_t *);
 #error POSIX threads requires --enable-reentrant option
 #endif
 
+#if USE_WEAK_SYMBOLS
+#if defined(__GNUC__)
+#  if defined __USE_ISOC99
+#    define _cat_pragma(exp)   _Pragma(#exp)
+#    define _weak_pragma(exp)  _cat_pragma(weak name)
+#  else
+#    define _weak_pragma(exp)
+#  endif
+#  define _declare(name)       __extension__ extern __typeof__(name) name
+#  define weak_symbol(name)    _weak_pragma(name) _declare(name) __attribute__((weak))
+#endif
+#endif
+
+#ifdef USE_PTHREADS
+#  if USE_WEAK_SYMBOLS
+weak_symbol(pthread_sigmask);
+weak_symbol(pthread_self);
+weak_symbol(pthread_equal);
+weak_symbol(pthread_mutex_init);
+weak_symbol(pthread_mutex_lock);
+weak_symbol(pthread_mutex_unlock);
+weak_symbol(pthread_mutex_trylock);
+weak_symbol(pthread_mutexattr_settype);
+weak_symbol(pthread_mutexattr_init);
+extern NCURSES_EXPORT(int) _nc_sigprocmask(int, const sigset_t *, sigset_t *);
+#    undef  sigprocmask
+#    define sigprocmask _nc_sigprocmask
+#  endif
+#endif
+
 #if HAVE_NANOSLEEP
 #undef HAVE_NANOSLEEP
 #define HAVE_NANOSLEEP 0       /* nanosleep suspends all threads */
@@ -349,6 +380,7 @@ extern NCURSES_EXPORT(int) _nc_mutex_unlock(pthread_mutex_t *);
 
 #else /* !USE_PTHREADS */
 
+#define _nc_init_pthreads()    /* nothing */
 #define _nc_mutex_init(obj)    /* nothing */
 
 #define _nc_lock_global(name)  /* nothing */
@@ -372,6 +404,8 @@ typedef unsigned colorpair_t;       /* type big enough to store PAIR_OF() */
 #define C_SHIFT 9              /* we need more bits than there are colors */
 #define C_MASK                 ((1 << C_SHIFT) - 1)
 #define PAIR_OF(fg, bg)                ((((fg) & C_MASK) << C_SHIFT) | ((bg) & C_MASK))
+#define FORE_OF(c)             (((c) >> C_SHIFT) & C_MASK)
+#define BACK_OF(c)             ((c) & C_MASK)
 #define isDefaultColor(c)      ((c) >= COLOR_DEFAULT || (c) < 0)
 
 #define COLOR_DEFAULT          C_MASK
@@ -616,10 +650,12 @@ typedef struct {
 #endif /* TRACE */
 
 #ifdef USE_PTHREADS
-       pthread_mutex_t mutex_curses;
-       pthread_mutex_t mutex_tst_tracef;
-       pthread_mutex_t mutex_tracef;
-       int             nested_tracef;
+       pthread_mutex_t mutex_curses;
+       pthread_mutex_t mutex_tst_tracef;
+       pthread_mutex_t mutex_tracef;
+       int             nested_tracef;
+       int             use_pthreads;
+#define _nc_use_pthreads       _nc_globals.use_pthreads
 #endif
 } NCURSES_GLOBALS;
 
@@ -760,11 +796,13 @@ struct screen {
        int             _color_count;   /* count of colors in palette        */
        colorpair_t     *_color_pairs;  /* screen's color pair list          */
        int             _pair_count;    /* count of color pairs              */
+       int             _pair_limit;    /* actual limit of color-pairs       */
 #if NCURSES_EXT_FUNCS
        bool            _default_color; /* use default colors                */
        bool            _has_sgr_39_49; /* has ECMA default color support    */
        int             _default_fg;    /* assumed default foreground        */
        int             _default_bg;    /* assumed default background        */
+       int             _default_pairs; /* count pairs using default color   */
 #endif
        chtype          _ok_attributes; /* valid attributes for terminal     */
        chtype          _xmc_suppress;  /* attributes to suppress if xmc     */
@@ -811,6 +849,7 @@ struct screen {
        bool            _mouse_gpm_loaded;
        bool            _mouse_gpm_found;
 #ifdef HAVE_LIBDL
+       void            *_dlopen_gpm;
        TYPE_gpm_fd     _mouse_gpm_fd;
        TYPE_Gpm_Open   _mouse_Gpm_Open;
        TYPE_Gpm_Close  _mouse_Gpm_Close;
@@ -1307,7 +1346,7 @@ extern NCURSES_EXPORT(const char *) _nc_viscbuf (const NCURSES_CH_T *, int);
 extern NCURSES_EXPORT(const char *) _nc_visbuf2 (int, const char *);
 extern NCURSES_EXPORT(const char *) _nc_visbufn (const char *, int);
 
-#define empty_module(name) \
+#define EMPTY_MODULE(name) \
 extern NCURSES_EXPORT(void) name (void); \
        NCURSES_EXPORT(void) name (void) { }
 
@@ -1407,6 +1446,10 @@ extern NCURSES_EXPORT(void) _nc_expanded (void);
 
 #endif
 
+#if !NCURSES_EXT_FUNCS
+#define set_escdelay(value) ESCDELAY = value
+#endif
+
 #if !HAVE_GETCWD
 #define getcwd(buf,len) getwd(buf)
 #endif
@@ -1480,7 +1523,7 @@ 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);
+extern NCURSES_EXPORT(bool) _nc_has_mouse (SCREEN *);
 
 /* lib_mvcur.c */
 #define INFINITY       1000000 /* cost: too high to use */
@@ -1558,6 +1601,7 @@ extern NCURSES_EXPORT(int) _nc_setupscreen (int, int, FILE *, bool, int);
 extern NCURSES_EXPORT(int) _nc_timed_wait (SCREEN *, int, int, int * EVENTLIST_2nd(_nc_eventlist *));
 extern NCURSES_EXPORT(void) _nc_do_color (short, short, bool, int (*)(int));
 extern NCURSES_EXPORT(void) _nc_flush (void);
+extern NCURSES_EXPORT(void) _nc_free_and_exit (int);
 extern NCURSES_EXPORT(void) _nc_free_entry (ENTRY *, TERMTYPE *);
 extern NCURSES_EXPORT(void) _nc_freeall (void);
 extern NCURSES_EXPORT(void) _nc_hash_map (void);