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

📄 tdestr.h

📁 C++游戏开发书籍的实例非常适合初学但又又想往游戏开发方面发展的人学习哦
💻 H
📖 第 1 页 / 共 2 页
字号:



#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <conio.h>
#include <assert.h>
#if defined( __MSC__ )
   #include <malloc.h>          /* for memory allocation */
   #if defined( toupper )
       #undef toupper
   #endif
#else
   #include <alloc.h>           /* for memory allocation */
#endif


/*
 * defines for the inline assembler.
 */
#if defined( __MSC__ )
   #define  ASSEMBLE   _asm
#else
   #define  ASSEMBLE   asm
#endif


#define MAX_COLS            80  /* widest screen ever used */
#define MAX_LINES           24  /* highest screen ever used */
#define BUFF_SIZE         1042  /* buffer size for lines */
#define MAX_LINE_LENGTH   1040  /* longest line allowed in file */
#define FNAME_LENGTH        45  /* maximum file name length in lite bar */
#define NO_MARKERS           3  /* maximum no. of markers */
#define UNDO_STACK_LEN     200  /* number of lines in undo stack */

/*
 * when we read in a file, lets try to match the size of the read buffer
 *   with some multiple of a hardware or software cache that may be present.
 */
#define READ_LENGTH             1024
#define DEFAULT_BIN_LENGTH      64


#define REGX_SIZE               200     /* maximum number of nodes in nfa */


/*
 * general defines.
 */
#define ERROR             (-1)  /* abnormal termination */
#define OK                   0  /* normal termination */
#define TRUE                 1  /* logical true */
#define FALSE                0  /* logical false */

#define MAX_KEYS           256  /* number of special keys recognized by TDE */
#define MAX_TWO_KEYS       128  /* number of two key-combos allowed by TDE  */
#define STROKE_LIMIT      1024  /* number of key strokes in playback buffer */


#define STACK_UNDERFLOW      1  /* code for underflowing macro stack */
#define STACK_OVERFLOW       2  /* code for overflowing macro stack */
#define SAS_P               20  /* number of sas pointers to tokens */
#define NUM_FUNCS          139

#define NUM_COLORS          14  /* number of color fields in TDE */

/*
 * special cases for keyboard mapping -  see bottom of main.c
 */
#define RTURN           262           /* Return key = 262 */
#define ESC             258           /* Escape key = 258 */
#define CONTROL_BREAK   269           /* Control-Break = 269 */


/*
 * The following defines are used by the "error" function to indicate
 *  how serious the error is.
 */
#define WARNING         1    /* user must acknowledge, editor continues */
#define FATAL           2    /* editor aborts - very rare! */
#define INFO            3    /* display message, acknowledge, continue */


/*
 * define the type of block marked by user and block actions
 */
#define NOTMARKED       0    /* block type undefined */
#define BOX             1    /* block marked by row and column */
#define LINE            2    /* block marked by begin and end lines */
#define STREAM          3    /* block marked by begin and end characters */

#define MOVE            1
#define DELETE          2
#define COPY            3
#define KOPY            4
#define FILL            5
#define OVERLAY         6
#define NUMBER          7
#define SWAP            8

#define LEFT            1
#define RIGHT           2

#define ASCENDING       1
#define DESCENDING      2


/*
 * three types of ways to update windows
 */
#define LOCAL           1
#define NOT_LOCAL       2
#define GLOBAL          3

#define CURLINE         1
#define NOTCURLINE      2


/*
 * search/replace flags.
 */
#define BOYER_MOORE     0
#define REG_EXPRESSION  1

#define CLR_SEARCH      0
#define WRAPPED         1
#define SEARCHING       2
#define REPLACING       3
#define NFA_GAVE_UP     4

#define IGNORE          1
#define MATCH           2

#define PROMPT          1
#define NOPROMPT        2

#define FORWARD         1
#define BACKWARD        2

#define BEGIN           1
#define END             2


#define BEGINNING       1
#define CURRENT         2

/*
 * word wrap flag.
 */
#define NO_WRAP         0
#define FIXED_WRAP      1
#define DYNAMIC_WRAP    2

/*
 * date and time formats
 */
#define MM_DD_YY        0
#define DD_MM_YY        1
#define YY_MM_DD        2
#define MM_DD_YYYY      3
#define DD_MM_YYYY      4
#define YYYY_MM_DD      5

#define _12_HOUR        0
#define _24_HOUR        1


/*
 * used in interrupt 0x21 function xx for checking file status
 */
#define EXIST           0
#define WRITE           2
#define READ            4
#define READ_WRITE      6

#define NORMAL          0x00
#define READ_ONLY       0x01
#define HIDDEN          0x02
#define SYSTEM          0x04
#define VOLUME_LABEL    0x08
#define SUBDIRECTORY    0x10
#define ARCHIVE         0x20

/*
 * critical error def's
 */
#define RETRY           1
#define ABORT           2
#define FAIL            3


/*
 * flags used for opening files to write either in binary or text mode.
 * crlf is for writing files in text mode - Operating System converts
 * lf to crlf automatically on output.  in binary mode, lf is not translated.
 */
#define NATIVE          1
#define CRLF            2
#define LF              3
#define BINARY          4
#define TEXT            5

#define OVERWRITE       1
#define APPEND          2

/*
 * characters used in tdeasm.c to display eol and column pointer in ruler
 */
#define EOL_CHAR        0x11
#define RULER_PTR       0x19
#define RULER_FILL      0x2e
#define RULER_TICK      0x04
#define LM_CHAR         0xb4
#define RM_CHAR_RAG     0x3c
#define RM_CHAR_JUS     0xc3
#define PGR_CHAR        0x14


/*
 * character used two separate vertical screens
 */
#define VERTICAL_CHAR   0xba


/*
 * cursor size
 */
#define SMALL_INS       0
#define BIG_INS         1


/*
 * possible answers to various questions - see get_yn, get_ynaq and get_oa
 */
#define A_YES           1
#define A_NO            2
#define A_ALWAYS        3
#define A_QUIT          4
#define A_ABORT         5
#define A_OVERWRITE     6
#define A_APPEND        7

/*
 * The following defines specify which video attributes give desired
 *  effects on different display devices.
 * REVERSE is supposed to be reverse video - a different background color,
 *  so that even a blank space can be identified.
 * HIGH is supposed to quickly draw the user's eye to the relevant part of
 *  the screen, either for a message or for matched text in find/replace.
 * NORMAL is supposed to be something pleasant to look at for the main
 *  body of the text.
 */
#define VIDEO_INT       0x10

#define HERC_REVERSE    0x70
#define HERC_UNDER      0x01
#define HERC_NORMAL     0x07
#define HERC_HIGH       0x0f

#define COLOR_HEAD      0x4b
#define COLOR_TEXT      0x07
#define COLOR_DIRTY     0x02
#define COLOR_MODE      0x17
#define COLOR_BLOCK     0x71
#define COLOR_MESSAGE   0x0f
#define COLOR_HELP      0x1a
#define COLOR_DIAG      0x0e
#define COLOR_EOF       0x09
#define COLOR_CURL      0x0f
#define COLOR_RULER     0x02
#define COLOR_POINTER   0x0a
#define COLOR_OVRS      0x00

#define COLOR_80        3
#define MONO_80         7

#define VGA             3
#define EGA             2
#define CGA             1
#define MDA             0


#define SAS_DELIMITERS  " \n"

/*
 * let's explicitly treat characters as unsigned.
 */
typedef unsigned char far * text_ptr;


/*
 * "s_line_list" contains contains struct defs for a node of text.
 */
typedef struct s_line_list {
   text_ptr line;                       /* pointer to line */
   int      len;                        /* length of line */
   int      dirty;                      /* boolean - dirty line indicator */
   struct s_line_list far *next;        /* next line in doubly linked list */
   struct s_line_list far *prev;        /* prev line in doubly linked list */
} line_list_struc;

typedef line_list_struc far *line_list_ptr;


struct vcfg {
   int color;
   int rescan;
   int mode;
   int far *videomem;
};


typedef struct {
   char sig[8];                 /* signature, so we can find struct in .exe */
   int  clr[2][NUM_COLORS];     /* one array for mono and another for color */
} COLORS;


/*
 * structure for two key combos
 */
typedef struct {
   int parent_key;
   int child_key;
   int func;
} TWO_KEY_TYPE;


typedef struct {
   char sig[8];
   TWO_KEY_TYPE key[MAX_TWO_KEYS];
} TWO_KEY;


typedef struct {
   char sig[8];
   unsigned char key[MAX_KEYS];
} KEY_FUNC;


/*
 * structure used in directory list.
 */
typedef struct {
   char fname[14];              /* file name */
   long fsize;                  /* file size in bytes */
} FTYPE;


/*
 * stuff we need to know about how to display a directory listing.
 */
typedef struct {
   int  row;                    /* absolute row to display dir box */
   int  col;                    /* absolute column to display dir box */
   int  wid;                    /* absolute number of columns in dir box */
   int  hgt;                    /* absolute number of rows in dir box */
   int  max_cols;               /* number of columns of files in box */
   int  max_lines;              /* number of lines of files in box */
   int  cnt;                    /* file count */
   int  cols;                   /* logical number of columns in list */
   int  lines;                  /* logical number of rows in list */

⌨️ 快捷键说明

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