home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Spezial / SPEZIAL2_97.zip / SPEZIAL2_97.iso / ANWEND / EDITOR / NVI179B / NVI179B.ZIP / ip / ip.h < prev   
C/C++ Source or Header  |  1996-10-13  |  3KB  |  93 lines

  1. /*-
  2.  * Copyright (c) 1996
  3.  *    Keith Bostic.  All rights reserved.
  4.  *
  5.  * See the LICENSE file for redistribution information.
  6.  *
  7.  *    @(#)ip.h    8.3 (Berkeley) 10/13/96
  8.  */
  9.  
  10. typedef struct _ip_private {
  11.     int     i_fd;        /* Input file descriptor. */
  12.     int     o_fd;        /* Output file descriptor. */
  13.  
  14.     size_t     row;        /* Current row. */
  15.     size_t     col;        /* Current column. */
  16.  
  17.     size_t     iblen;        /* Input buffer length. */
  18.     size_t     iskip;        /* Returned input buffer. */
  19.     char     ibuf[256];    /* Input buffer. */
  20.  
  21. #define    IP_SCR_VI_INIT  0x0001  /* Vi screen initialized. */
  22.     u_int32_t flags;
  23. } IP_PRIVATE;
  24.  
  25. #define    IPP(sp)        ((IP_PRIVATE *)((sp)->gp->ip_private))
  26. #define    GIPP(gp)    ((IP_PRIVATE *)((gp)->ip_private))
  27.  
  28. /* The screen line relative to a specific window. */
  29. #define    RLNO(sp, lno)    (sp)->woff + (lno)
  30.  
  31. /*
  32.  * The IP protocol consists of frames, each containing:
  33.  *
  34.  *    <IPO_><object>
  35.  *
  36.  * XXX
  37.  * We should have a marking byte, 0xaa to delimit frames.
  38.  *
  39.  */
  40. #define    IPO_CODE    1    /* An event specification. */
  41. #define    IPO_INT        2    /* 4-byte, network order integer. */
  42. #define    IPO_STR        3    /* IPO_INT: followed by N bytes. */
  43.  
  44. #define    IPO_CODE_LEN    1
  45. #define    IPO_INT_LEN    4
  46.  
  47. /* A structure that can hold the information for any frame. */
  48. typedef struct _ip_buf {
  49.     int code;        /* Event code. */
  50.     const char *str;    /* String. */
  51.     size_t len;        /* String length. */
  52.     u_int32_t val1;        /* First value. */
  53.     u_int32_t val2;        /* Second value. */
  54. } IP_BUF;
  55.  
  56. /*
  57.  * Screen/editor IP_CODE's.
  58.  *
  59.  * The program structure depends on the event loop being able to return
  60.  * IPO_EOF/IPOE_ERR multiple times -- eventually enough things will end
  61.  * due to the events that vi will reach the command level for the screen,
  62.  * at which point the exit flags will be set and vi will exit.
  63.  *
  64.  * IP events sent from the screen to vi.
  65.  */
  66. #define    IPO_EOF         1    /* End of input (NOT ^D). */
  67. #define    IPO_ERR         2    /* Input error. */
  68. #define    IPO_INTERRUPT     3    /* Interrupt. */
  69. #define    IPO_QUIT     4    /* Quit. */
  70. #define    IPO_RESIZE     5    /* Screen resize: IPO_INT, IPO_INT. */
  71. #define    IPO_SIGHUP     6    /* SIGHUP. */
  72. #define    IPO_SIGTERM     7    /* SIGTERM. */
  73. #define    IPO_STRING     8    /* Input string: IPO_STR. */
  74. #define    IPO_WRITE     9    /* Write. */
  75.  
  76. /*
  77.  * IP events sent from vi to the screen.
  78.  */
  79. #define    IPO_ADDSTR     1    /* Add a string: IPO_STR. */
  80. #define    IPO_ATTRIBUTE     2    /* Set screen attribute: IPO_INT, IPO_INT. */
  81. #define    IPO_BELL     3    /* Beep/bell/flash the terminal. */
  82. #define    IPO_BUSY     4    /* Display a busy message: IPO_STR. */
  83. #define    IPO_CLRTOEOL     5    /* Clear to the end of the line. */
  84. #define    IPO_DELETELN     6    /* Delete a line. */
  85. #define    IPO_INSERTLN     7    /* Insert a line. */
  86. #define    IPO_MOVE     8    /* Move the cursor: IPO_INT, IPO_INT. */
  87. #define    IPO_REDRAW     9    /* Redraw the screen. */
  88. #define    IPO_REFRESH    10    /* Refresh the screen. */
  89. #define    IPO_RENAME    11    /* Rename the screen: IPO_STR. */
  90. #define    IPO_REWRITE    12    /* Rewrite a line: IPO_INT. */
  91.  
  92. #include "ip_extern.h"
  93.