stdio.h defines BUFSIZ
[unix-history] / usr / src / usr.bin / window / tt.h
index 66cdb70..f75ec69 100644 (file)
@@ -1,11 +1,13 @@
 /*
 /*
- * @(#)tt.h    3.17 %G%
- */
-
-/*
- * Copyright (c) 1983 Regents of the University of California,
- * All rights reserved.  Redistribution permitted subject to
- * the terms of the Berkeley Software License Agreement.
+ * Copyright (c) 1983 Regents of the University of California.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Edward Wang at The University of California, Berkeley.
+ *
+ * %sccs.include.redist.c%
+ *
+ *     @(#)tt.h        3.27 (Berkeley) %G%
  */
 
 /*
  */
 
 /*
  */
 struct tt {
                /* startup and cleanup */
  */
 struct tt {
                /* startup and cleanup */
-       int (*tt_init)();
+       int (*tt_start)();
        int (*tt_end)();
 
                /* terminal functions */
        int (*tt_move)();
        int (*tt_insline)();
        int (*tt_delline)();
        int (*tt_end)();
 
                /* terminal functions */
        int (*tt_move)();
        int (*tt_insline)();
        int (*tt_delline)();
+       int (*tt_inschar)();
+       int (*tt_insspace)();
        int (*tt_delchar)();
        int (*tt_write)();              /* write a whole block */
        int (*tt_putc)();               /* write one character */
        int (*tt_clreol)();
        int (*tt_clreos)();
        int (*tt_clear)();
        int (*tt_delchar)();
        int (*tt_write)();              /* write a whole block */
        int (*tt_putc)();               /* write one character */
        int (*tt_clreol)();
        int (*tt_clreos)();
        int (*tt_clear)();
-       int (*tt_setinsert)();          /* set insert mode */
+       int (*tt_scroll_down)();
+       int (*tt_scroll_up)();
+       int (*tt_setscroll)();          /* set scrolling region */
        int (*tt_setmodes)();           /* set display modes */
        int (*tt_setmodes)();           /* set display modes */
+       int (*tt_set_token)();          /* define a token */
+       int (*tt_put_token)();          /* refer to a defined token */
 
                /* internal variables */
        char tt_modes;                  /* the current display modes */
        char tt_nmodes;                 /* the new modes for next write */
        char tt_insert;                 /* currently in insert mode */
 
                /* internal variables */
        char tt_modes;                  /* the current display modes */
        char tt_nmodes;                 /* the new modes for next write */
        char tt_insert;                 /* currently in insert mode */
-       char tt_ninsert;                /* insert mode on next write */
        int tt_row;                     /* cursor row */
        int tt_col;                     /* cursor column */
        int tt_row;                     /* cursor row */
        int tt_col;                     /* cursor column */
+       int tt_scroll_top;              /* top of scrolling region */
+       int tt_scroll_bot;              /* bottom of scrolling region */
 
                /* terminal info */
        int tt_nrow;                    /* number of display rows */
        int tt_ncol;                    /* number of display columns */
 
                /* terminal info */
        int tt_nrow;                    /* number of display rows */
        int tt_ncol;                    /* number of display columns */
-       char tt_hasinsert;              /* has insert character */
        char tt_availmodes;             /* the display modes supported */
        char tt_wrap;                   /* has auto wrap around */
        char tt_retain;                 /* can retain below (db flag) */
        char tt_availmodes;             /* the display modes supported */
        char tt_wrap;                   /* has auto wrap around */
        char tt_retain;                 /* can retain below (db flag) */
-       char tt_noscroll;               /* terminal doesn't scroll (ns flag) */
+       short tt_padc;                  /* the pad character */
+       int tt_ntoken;                  /* number of compression tokens */
+       int tt_token_min;               /* minimun token size */
+       int tt_token_max;               /* maximum token size */
+       int tt_set_token_cost;          /* cost in addition to string */
+       int tt_put_token_cost;          /* constant cost */
 
                /* the frame characters */
        short *tt_frame;
 
                /* the frame characters */
        short *tt_frame;
+
+               /* the output routine */
+       int (*tt_flush)();
 };
 struct tt tt;
 
 };
 struct tt tt;
 
+/*
+ * tt_padc is used by the compression routine.
+ * It is a short to allow the driver to indicate that there is no padding.
+ */
+#define TT_PADC_NONE 0x100
+
 /*
  * List of terminal drivers.
  */
 /*
  * List of terminal drivers.
  */
@@ -82,11 +104,18 @@ int tttputc();
 
 /*
  * Buffered output without stdio.
 
 /*
  * Buffered output without stdio.
- * These variables have different meanings from the ww_ob* variabels.
+ * These variables have different meanings from the ww_ob* variables.
  * But I'm too lazy to think up different names.
  */
  * But I'm too lazy to think up different names.
  */
-char tt_ob[512];
+char *tt_ob;
 char *tt_obp;
 char *tt_obe;
 #define ttputc(c)      (tt_obp < tt_obe ? (*tt_obp++ = (c)) \
 char *tt_obp;
 char *tt_obe;
 #define ttputc(c)      (tt_obp < tt_obe ? (*tt_obp++ = (c)) \
-                               : (ttflush(), *tt_obp++ = (c)))
+                               : ((*tt.tt_flush)(), *tt_obp++ = (c)))
+
+/*
+ * Convenience macros for the drivers
+ * They require char.h
+ */
+#define ttctrl(c)      ttputc(ctrl(c))
+#define ttesc(c)       (ttctrl('['), ttputc(c))