⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ed.h

📁 NASA 开发使用的一个专家系统
💻 H
📖 第 1 页 / 共 2 页
字号:
/*   CLIPS Version 6.05  04/09/97 *//* * This file is the general header file for all parts of the MicroEMACS * display editor.  It contains definitions used by everyone, and it contains * the stuff you have to edit to create a version of the editor for a * specific operating system and terminal. */#ifndef _EDITOR_HEADER_#define _EDITOR_HEADER_#include <stdio.h>#define _CLIPS_STDIO_#if ANSI_COMPILER#include <stdlib.h>#include <string.h>#endif#include "argacces.h"#include "constant.h"#include "constrct.h"#include "clipsmem.h"#include "evaluatn.h"#include "router.h"#include "scanner.h"#include "symbol.h"#if     VMS#define ANSI    1                       /* Normally used for VAX VMS    */#define VT52    0                       /* VT52 terminal (Zenith).      */#define TERMCAP 0                       /* Use TERMCAP                  */#define IBM_PC  0			/* Standard IBM PC BIOS         */#endif#if     UNIX_7 || UNIX_V#define ANSI    0                       /* Normally used for VAX VMS    */#define VT52    0                       /* VT52 terminal (Zenith).      */#define TERMCAP 1                       /* Use TERMCAP                  */#define IBM_PC  0			/* Standard IBM PC BIOS         */#endif#if     IBM_MSC || IBM_TBC || IBM_ZTC || IBM_ICB#define ANSI    0                       /* Normally used for VAX VMS    */#define VT52    0                       /* VT52 terminal (Zenith).      */#define TERMCAP 0                       /* Use TERMCAP                  */#define IBM_PC  1			/* Standard IBM PC BIOS         */#endif#if     IBM_GCC#define ANSI    0                       /* Normally used for VAX VMS    */#define VT52    0                       /* VT52 terminal (Zenith).      */#define TERMCAP 1                       /* Use TERMCAP                  */#define IBM_PC  0                       /* Standard IBM PC BIOS         */#endif#define CVMVAS  1                       /* C-V, M-V arg. in screens.    */#define VERSION_NUM "3.0"               /* Emacs editor Version number  */#define NFILEN  256                     /* # of bytes, file name        */#define NBUFN   16                      /* # of bytes, buffer name      */#define NLINE   256                     /* # of bytes, line             */#define NKBDM   256                     /* # of strokes, keyboard macro */#define NPAT    80                      /* # of bytes, pattern          */#define HUGE    1000                    /* Huge number                  */#define AGRAVE  0x60                    /* M- prefix,   Grave (LK201)   */#define METACH  0x1B                    /* M- prefix,   Control-[, ESC  */#define CTMECH  0x1C                    /* C-M- prefix, Control-\       */#define EXITCH  0x1D                    /* Exit level,  Control-]       */#define COTLCH  0x1E                    /* C- prefix,   Control-^       */#define HELPCH  0x1F                    /* Help key,    Control-_       */#define DEL_KEY 0x7F                    /* Del key, most keyboards      */#define COTL    0x0100                  /* Control flag, or'ed in       */#define META    0x0200                  /* Meta flag, or'ed in          */#define CTLX    0x0400                  /* ^X flag, or'ed in            */#define ABORT   2                       /* Death, ^G, abort, etc.       */#define FIOSUC  0                       /* File I/O, success.           */#define FIOFNF  1                       /* File I/O, file not found.    */#define FIOEOF  2                       /* File I/O, end of file.       */#define FIOERR  3                       /* File I/O, error.             */#define CFCPCN  0x0001                  /* Last command was C-P, C-N    */#define CFKILL  0x0002                  /* Last command was a kill      *//* * There is a window structure allocated for every active display window. The * windows are kept in a big list, in top to bottom screen order, with the * listhead at "wheadp". Each window contains its own values of dot and mark. * The flag field contains some bits that are set by commands to guide * redisplay; although this is a bit of a compromise in terms of decoupling, * the full blown redisplay is just too expensive to run for every input * character.  */typedef struct  WINDOW {        struct  WINDOW *w_wndp;         /* Next window                  */        struct  BUFFER *w_bufp;         /* Buffer displayed in window   */        struct  LINE *w_linep;          /* Top line in the window       */        struct  LINE *w_dotp;           /* Line containing "."          */        short   w_doto;                 /* Byte offset for "."          */        struct  LINE *w_markp;          /* Line containing "mark"       */        short   w_marko;                /* Byte offset for "mark"       */        char    w_toprow;               /* Origin 0 top row of window   */        char    w_ntrows;               /* # of rows of text in window  */        char    w_force;                /* If NZ, forcing row.          */        char    w_flag;                 /* Flags.                       */}       WINDOW;#define WFFORCE 0x01                    /* Window needs forced reframe  */#define WFMOVE  0x02                    /* Movement from line to line   */#define WFEDIT  0x04                    /* Editing within a line        */#define WFHARD  0x08                    /* Better to a full display     */#define WFMODE  0x10                    /* Update mode line.            *//* * Text is kept in buffers. A buffer header, described below, exists for every * buffer in the system. The buffers are kept in a big list, so that commands * that search for a buffer by name can find the buffer header. There is a * safe store for the dot and mark in the header, but this is only valid if * the buffer is not being displayed (that is, if "b_nwnd" is 0). The text for * the buffer is kept in a circularly linked list of lines, with a pointer to * the header line in "b_linep". */typedef struct  BUFFER {        struct  BUFFER *b_bufp;         /* Link to next BUFFER          */        struct  LINE *b_dotp;           /* Link to "." LINE structure   */        short   b_doto;                 /* Offset of "." in above LINE  */        struct  LINE *b_markp;          /* The same as the above two,   */        short   b_marko;                /* but for the "mark"           */        struct  LINE *b_linep;          /* Link to the header LINE      */        char    b_nwnd;                 /* Count of windows on buffer   */        char    b_flag;                 /* Flags                        */        char    b_fname[NFILEN];        /* File name                    */        char    b_bname[NBUFN];         /* Buffer name                  */}       BUFFER;#define BFTEMP  0x01                    /* Internal temporary buffer    */#define BFCHG   0x02                    /* Changed since last write     *//* * The starting position of a region, and the size of the region in * characters, is kept in a region structure.  Used by the region commands. */typedef struct  {        struct  LINE *r_linep;          /* Origin LINE address.         */        short   r_offset;               /* Origin LINE offset.          */        long    r_size;                 /* Length in characters.        */}       REGION;/* * All text is kept in circularly linked lists of "LINE" structures. These * begin at the header line (which is the blank line beyond the end of the * buffer). This line is pointed to by the "BUFFER". Each line contains a the * number of bytes in the line (the "used" size), the size of the text array, * and the text. The end of line is not stored as a byte; it's implied. Future * additions will include update hints, and a list of marks into the line. */typedef struct  LINE {        struct  LINE *l_fp;             /* Link to the next line        */        struct  LINE *l_bp;             /* Link to the previous line    */        short   l_size;                 /* Allocated size               */        short   l_used;                 /* Used size                    */        char    l_text[1];              /* A bunch of characters.       */}       LINE;#define lforw(lp)       ((lp)->l_fp)#define lback(lp)       ((lp)->l_bp)#define lgetc(lp, n)    ((lp)->l_text[(int) (n)]&0xFF)#define lputc(lp, n, c) ((lp)->l_text[(int) (n)]= (char) (c))#define llength(lp)     ((lp)->l_used)/* * The editor communicates with the display using a high level interface. A * "TERM" structure holds useful variables, and indirect pointers to routines * that do useful operations. The low level get and put routines are here too. * This lets a terminal, in addition to having non standard commands, have * funny get and put character code too. The calls might get changed to * "termp->t_field" style in the future, to make it possible to run more than * one terminal type. */  #if ANSI_COMPILERtypedef struct  {        short   t_nrow;                 /* Number of rows.              */        short   t_ncol;                 /* Number of columns.           */        VOID    (*t_open)(void);        /* Open terminal at the start.  */        VOID    (*t_close)(void);       /* Close terminal at end.       */        int     (*t_getchar)(void);     /* Get character from keyboard. */        VOID    (*t_putchar)(int);      /* Put character to display.    */        VOID    (*t_flush)(void);       /* Flush output buffers.        */        VOID    (*t_move)(int,int);     /* Move the cursor, origin 0.   */        VOID    (*t_eeol)(void);        /* Erase to end of line.        */        VOID    (*t_eeop)(void);        /* Erase to end of page.        */        VOID    (*t_beep)(void);        /* Beep.                        */}       TERM;#elsetypedef struct  {        short   t_nrow;                 /* Number of rows.              */        short   t_ncol;                 /* Number of columns.           */        VOID    (*t_open)();            /* Open terminal at the start.  */        VOID    (*t_close)();           /* Close terminal at end.       */        int     (*t_getchar)();         /* Get character from keyboard. */        VOID    (*t_putchar)();         /* Put character to display.    */        VOID    (*t_flush)();           /* Flush output buffers.        */        VOID    (*t_move)();            /* Move the cursor, origin 0.   */        VOID    (*t_eeol)();            /* Erase to end of line.        */        VOID    (*t_eeop)();            /* Erase to end of page.        */        VOID    (*t_beep)();            /* Beep.                        */}       TERM;#endif#if IBM_PC || IBM_GCC/* *  This section defines the code returned by all the special keys on *  a PC numeric Keypad. It could also be used to define the function *  keys if desired. */#define UP_ARROW	256#define DOWN_ARROW	257#define RIGHT_ARROW	258#define LEFT_ARROW	259#define HOME_KEY	260#define END_KEY  	261#define PGUP_KEY	262#define PGDN_KEY	263#define COTL_RIGHT_ARROW	264#define COTL_LEFT_ARROW	 	265#define COTL_AT_SIGN	266#endif#if IBM_PC || VMS#define BADKEY		999#endif#ifdef LOCALE#undef LOCALE#endif#ifdef _EDBASIC_SOURCE_#define LOCALE#else#define LOCALE extern#endif#if ANSI_COMPILERLOCALE int gotobol(int,int);LOCALE int backchar(int,int);LOCALE int gotoeol(int,int);LOCALE int forwchar(int,int);LOCALE int gotobob(int,int);LOCALE int gotoeob(int,int);LOCALE int forwline(int,int);LOCALE int backline(int,int);LOCALE int getgoal(LINE *);LOCALE int forwpage(int,int);LOCALE int backpage(int,int);LOCALE int setmark(int,int);LOCALE int swapmark(int,int);LOCALE int wrapword(void);LOCALE int backword(int,int);LOCALE int forwword(int,int);LOCALE int upperword(int,int);LOCALE int lowerword(int,int);LOCALE int capword(int,int);LOCALE int delfword(int,int);LOCALE int delbword(int,int);LOCALE int inword(void);LOCALE int killregion(int,int);LOCALE int copyregion(int,int);LOCALE int upperregion(int,int);LOCALE int lowerregion(int,int);LOCALE int getregion(REGION *);LOCALE int fileread(int,int);LOCALE int filevisit(int,int);LOCALE int filevisit_guts(char []);LOCALE int readin(char []);LOCALE int makename(char [],char []);LOCALE int filewrite(int,int);LOCALE int filesave(int,int);LOCALE int writeout(char *);LOCALE int filename(int,int);LOCALE int ffropen(char *);LOCALE int ffwopen(char *);LOCALE int ffclose(void);LOCALE int ffputline(char [],int);LOCALE int ffgetline(char [],int);LOCALE VOID ttopen(void);LOCALE VOID ttclose(void);LOCALE VOID ttputc(int);LOCALE VOID ttflush(void);LOCALE int ttgetc(void);#if VMSLOCALE int parse_esc_seq(void);#endif#elseLOCALE int gotobol();LOCALE int backchar();LOCALE int gotoeol();LOCALE int forwchar();LOCALE int gotobob();LOCALE int gotoeob();LOCALE int forwline();LOCALE int backline();LOCALE int getgoal();LOCALE int forwpage();LOCALE int backpage();LOCALE int setmark();LOCALE int swapmark();LOCALE int wrapword();LOCALE int backword();LOCALE int forwword();LOCALE int upperword();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -