# $Id: ncurses_defs,v 1.110 2024/03/02 20:38:23 tom Exp $
##############################################################################
# Copyright 2018-2023,2024 Thomas E. Dickey                                  #
# Copyright 2000-2016,2017 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 "Software"), #
# to deal in the Software without restriction, including without limitation  #
# the rights to use, copy, modify, merge, publish, distribute, distribute    #
# with modifications, sublicense, and/or sell copies of the Software, and to #
# permit persons to whom the Software is furnished to do so, subject to the  #
# following conditions:                                                      #
#                                                                            #
# The above copyright notice and this permission notice shall be included in #
# all copies or substantial portions of the Software.                        #
#                                                                            #
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,   #
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL    #
# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      #
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING    #
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER        #
# DEALINGS IN THE SOFTWARE.                                                  #
#                                                                            #
# Except as contained in this notice, the name(s) of the above copyright     #
# holders shall not be used in advertising or otherwise to promote the sale, #
# use or other dealings in this Software without prior written               #
# authorization.                                                             #
##############################################################################
#
# See "MKncurses_def.sh" for an explanation.
#
# (hint: don't try to define NDEBUG ;-)

BROKEN_LINKER
BSD_TPUTS
CGETENT_CONST	/* nothing */
CPP_HAS_PARAM_INIT
CURSES_ACS_ARRAY	acs_map
CURSES_WACS_ARRAY	_nc_wacs
DECL_ERRNO
ETIP_NEEDS_MATH_H
GCC_NORETURN	/* nothing */
GCC_UNUSED	/* nothing */
HAVE_ALLOC_PAIR
HAVE_ASSUME_DEFAULT_COLORS
HAVE_BIG_CORE
HAVE_BSD_CGETENT
HAVE_BSD_SIGNAL_H
HAVE_BSD_STRING_H
HAVE_BTOWC
HAVE_BUILTIN_H
HAVE_CHGAT	1
HAVE_CLOCK_GETTIME
HAVE_COLOR_CONTENT	1
HAVE_COLOR_SET	1
HAVE_CONSISTENT_GETENV
HAVE_CONSISTENT_MB_LEN_MAX
HAVE_COPYWIN	1
HAVE_CURSCR	1
HAVE_CURSES_DATA_TABSIZE	1
HAVE_CURSES_DATA_TTYTYPE	1
HAVE_CURSES_TRACE	1
HAVE_DELSCREEN	1
HAVE_DERWIN	1
HAVE_DIRENT_H
HAVE_DUPWIN	1
HAVE_ERRNO
HAVE_EXIT_CURSES	1
HAVE_EXIT_TERMINFO	1
HAVE_FCNTL_H
HAVE_FILTER	1
HAVE_FORM_H
HAVE_FPATHCONF
HAVE_GETAUXVAL
HAVE_GETBEGX	1
HAVE_GETCURX	1
HAVE_GETCWD
HAVE_GETEGID
HAVE_GETEUID
HAVE_GETMAXX	1
HAVE_GETNSTR
HAVE_GETOPT_H
HAVE_GETPARX	1
HAVE_GETTIMEOFDAY
HAVE_GETTTYNAM
HAVE_GETUID
HAVE_GETWIN	1
HAVE_GPM_H
HAVE_GPP_BUILTIN_H
HAVE_GXX_BUILTIN_H
HAVE_HALFDELAY	1
HAVE_HAS_KEY
HAVE_INIT_EXTENDED_COLOR
HAVE_INTTYPES_H
HAVE_IOSTREAM
HAVE_ISASCII
HAVE_ISSETUGID
HAVE_LANGINFO_CODESET
HAVE_LIBC_H
HAVE_LIBDBMALLOC
HAVE_LIBDMALLOC
HAVE_LIBFORM
HAVE_LIBGPM
HAVE_LIBMENU
HAVE_LIBMPATROL
HAVE_LIBPANEL
HAVE_LIB_PCRE2
HAVE_LIMITS_H
HAVE_LINK
HAVE_LOCALECONV
HAVE_LOCALE_H
HAVE_LONG_FILE_NAMES
HAVE_MATH_FUNCS
HAVE_MATH_H
HAVE_MBLEN
HAVE_MBRLEN
HAVE_MBRTOWC
HAVE_MBSRTOWCS
HAVE_MBSTOWCS
HAVE_MBTOWC
HAVE_MENU_H
HAVE_MKSTEMP
HAVE_MVDERWIN	1
HAVE_MVVLINE	1
HAVE_MVWIN	1
HAVE_MVWVLINE	1
HAVE_NANOSLEEP
HAVE_NAPMS	1
HAVE_NC_ALLOC_H
HAVE_NEWPAD	1
HAVE_PANEL_H
HAVE_PATH_TTYS
HAVE_PCRE2POSIX_H
HAVE_PCREPOSIX_H
HAVE_POLL
HAVE_POLL_H
HAVE_PURIFY
HAVE_PUTENV
HAVE_PUTWC
HAVE_PUTWIN	1
HAVE_REGEXPR_H_FUNCS
HAVE_REGEXP_H_FUNCS
HAVE_REGEX_H_FUNCS
HAVE_REMOVE
HAVE_RESET_COLOR_PAIRS
HAVE_RESIZETERM
HAVE_RESIZE_TERM
HAVE_RESTARTTERM	1
HAVE_RIPOFFLINE	1
HAVE_SCR_DUMP 1
HAVE_SELECT
HAVE_SETBUF
HAVE_SETBUFFER
HAVE_SETENV
HAVE_SETFSUID
HAVE_SETUPTERM	1
HAVE_SETVBUF
HAVE_SGTTY_H
HAVE_SIGACTION
HAVE_SIGVEC
HAVE_SIZECHANGE
HAVE_SLK_COLOR
HAVE_SLK_INIT	1
HAVE_SNPRINTF
HAVE_STDINT_H
HAVE_STRDUP
HAVE_STRLCAT
HAVE_STRLCPY
HAVE_STRSTR
HAVE_SYMLINK
HAVE_SYSCONF
HAVE_SYS_BSDTYPES_H
HAVE_SYS_AUXV_H
HAVE_SYS_IOCTL_H
HAVE_SYS_PARAM_H
HAVE_SYS_POLL_H
HAVE_SYS_SELECT_H
HAVE_SYS_TERMIO_H
HAVE_SYS_TIMES_H
HAVE_SYS_TIME_H
HAVE_SYS_TIME_SELECT
HAVE_TCGETATTR
HAVE_TCGETPGRP
HAVE_TELL
HAVE_TERMATTRS	1
HAVE_TERMCAP_H	1
HAVE_TERMIOS_H
HAVE_TERMIO_H
HAVE_TERMNAME	1
HAVE_TERM_ENTRY_H	1
HAVE_TERM_H	1
HAVE_TGETENT	1
HAVE_TIGETNUM	1
HAVE_TIGETSTR	1
HAVE_TIPARM	1
HAVE_TIPARM_S	1
HAVE_TISCAN_S	1
HAVE_TIMES
HAVE_TPUTS_SP
HAVE_TSEARCH
HAVE_TYPEAHEAD	1
HAVE_TYPEINFO
HAVE_TYPE_ATTR_T
HAVE_TYPE_SIGACTION
HAVE_UNCTRL_H	1
HAVE_UNGET_WCH	1
HAVE_UNISTD_H
HAVE_UNLINK
HAVE_USE_DEFAULT_COLORS
HAVE_USE_ENV	1
HAVE_USE_EXTENDED_NAMES	NCURSES_XNAMES
HAVE_USE_SCREEN
HAVE_USE_WINDOW
HAVE_VFSCANF
HAVE_VIDPUTS	1
HAVE_VID_PUTS	1
HAVE_VSNPRINTF
HAVE_VSSCANF
HAVE_VW_PRINTW	1
HAVE_WCHGAT	1
HAVE_WCSRTOMBS
HAVE_WCSTOMBS
HAVE_WCTOB
HAVE_WCTOMB
HAVE_WCTYPE_H
HAVE_WINSDELLN	1
HAVE_WINSSTR	1
HAVE_WMEMCHR
HAVE_WORKING_POLL
HAVE_WRESIZE
HAVE_WSYNCDOWN	1
HAVE__DOSCAN
HAVE__TRACEF
HAVE__NC_TPARM_ANALYZE 1
MIXEDCASE_FILENAMES
NCURSES_CHAR_EQ
NCURSES_EXPANDED
NCURSES_EXT_COLORS
NCURSES_EXT_FUNCS
NCURSES_EXT_PUTWIN
NCURSES_NO_PADDING
NCURSES_OSPEED_COMPAT
NCURSES_PATHSEP	':'
NCURSES_WIDECHAR
NEED_PTEM_H
NO_LEAKS
PURE_TERMINFO
STDC_HEADERS
SVR4_ACTION
SVR4_TERMIO
SYSTEM_NAME	"unknown"
TERMINFO	"none"
TERMPATH	"none"
TIME_WITH_SYS_TIME
TYPEOF_CHTYPE
USE_COLORFGBG
USE_FOPEN_BIN_R
USE_GETCAP
USE_GETCAP_CACHE
USE_HARD_TABS
USE_HASHED_DB
USE_HASHMAP
USE_HOME_TERMINFO
USE_LINKS
USE_MY_MEMMOVE
USE_OK_BCOPY
USE_PTHREADS_EINTR
USE_RCS_IDS
USE_REENTRANT
USE_SAFE_SPRINTF
USE_SCROLL_HINTS
USE_SIGWINCH
USE_STRING_HACKS
USE_SYMLINKS
USE_SYSMOUSE
USE_WEAK_SYMBOLS
USE_WIDEC_SUPPORT
USE_XMC_SUPPORT
