+#ifndef NCURSES_TERM_ENTRY_H_incl
+#define NCURSES_TERM_ENTRY_H_incl 1
+/* *INDENT-OFF* */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <curses.h>
+#include <term.h>
+
+/*
+ * These macros may be used by programs that know about TERMTYPE:
+ */
+#if NCURSES_XNAMES
+#define NUM_BOOLEANS(tp) (tp)->num_Booleans
+#define NUM_NUMBERS(tp) (tp)->num_Numbers
+#define NUM_STRINGS(tp) (tp)->num_Strings
+#define EXT_NAMES(tp,i,limit,index,table) (i >= limit) ? tp->ext_Names[index] : table[i]
+#else
+#define NUM_BOOLEANS(tp) BOOLCOUNT
+#define NUM_NUMBERS(tp) NUMCOUNT
+#define NUM_STRINGS(tp) STRCOUNT
+#define EXT_NAMES(tp,i,limit,index,table) table[i]
+#endif
+
+#define NUM_EXT_NAMES(tp) (unsigned) ((tp)->ext_Booleans + (tp)->ext_Numbers + (tp)->ext_Strings)
+
+#define for_each_boolean(n,tp) for(n = 0; n < NUM_BOOLEANS(tp); n++)
+#define for_each_number(n,tp) for(n = 0; n < NUM_NUMBERS(tp); n++)
+#define for_each_string(n,tp) for(n = 0; n < NUM_STRINGS(tp); n++)
+
+#if NCURSES_XNAMES
+#define for_each_ext_boolean(n,tp) for(n = BOOLCOUNT; (int) n < (int) NUM_BOOLEANS(tp); n++)
+#define for_each_ext_number(n,tp) for(n = NUMCOUNT; (int) n < (int) NUM_NUMBERS(tp); n++)
+#define for_each_ext_string(n,tp) for(n = STRCOUNT; (int) n < (int) NUM_STRINGS(tp); n++)
+#endif
+
+#define ExtBoolname(tp,i,names) EXT_NAMES(tp, i, BOOLCOUNT, (i - (tp->num_Booleans - tp->ext_Booleans)), names)
+#define ExtNumname(tp,i,names) EXT_NAMES(tp, i, NUMCOUNT, (i - (tp->num_Numbers - tp->ext_Numbers)) + tp->ext_Booleans, names)
+#define ExtStrname(tp,i,names) EXT_NAMES(tp, i, STRCOUNT, (i - (tp->num_Strings - tp->ext_Strings)) + (tp->ext_Numbers + tp->ext_Booleans), names)
+
+/*
+ * The remaining type-definitions and macros are used only internally by the
+ * ncurses utilities.
+ */
+#ifdef NCURSES_INTERNALS
+
+/*
+ * see db_iterator.c - this enumeration lists the places searched for a
+ * terminal description and defines the order in which they are searched.
+ */
+typedef enum {
+ dbdTIC = 0, /* special, used by tic when writing entry */
+#if NCURSES_USE_DATABASE
+ dbdEnvOnce, /* the $TERMINFO environment variable */
+ dbdHome, /* $HOME/.terminfo */
+ dbdEnvList, /* the $TERMINFO_DIRS environment variable */
+ dbdCfgList, /* the compiled-in TERMINFO_DIRS value */
+ dbdCfgOnce, /* the compiled-in TERMINFO value */
+#endif
+#if NCURSES_USE_TERMCAP
+ dbdEnvOnce2, /* the $TERMCAP environment variable */
+ dbdEnvList2, /* the $TERMPATH environment variable */
+ dbdCfgList2, /* the compiled-in TERMPATH */
+#endif
+ dbdLAST
+} DBDIRS;