📄 oxbow.h
字号:
int OXPORT_get_curr_screen_mode(void);
int OXPORT_get_curr_screen_cols(void);
int OXPORT_get_curr_screen_rows(void);
void OXPORT_get_video_modes(void);
void OXPORT_set_video_mode(int mode);
void OXPORT_set_ORIGvideo_mode(int mode);
void OXPORT_read_palette_register(int n, int *red, int *green, int *blue);
void OXPORT_write_palette_register(int n, int *red, int *green, int *blue);
void OXPORT_clear_screen(void);
void OXPORT_fill_screen_rect(int color, int x, int y, int w, int h);
void OXPORT_start_timer(void);
void OXPORT_stop_timer(void);
void OXPORT_set_thread_msec(int msec);
void OXPORT_compute_final_tick(void);
unsigned long OXPORT_get_clock_ticks(void);
unsigned long OXPORT_get_timestamp(void);
unsigned OXPORT_wait_msec(unsigned n);
void OXPORT_beep(int freq);
void OXPORT_beeplen(int freq, int msec);
void OXPORT_crash(char *msg);
void OXPORT_nulproc(void);
int CF_was_msg(void);
CFmsg CF_get_msg(void);
void CF_InitIO(long arg, _LONGLONG_ (*msgproc)());
#define CF_REMOTE_KEYBOARD (1)
#define CF_USE_EVENTS (2)
#define CF_USE_MESSAGES (4)
#define CF_USE_GUI (8)
#define CF_ANSI_TEXT_OUTPUT (16)
#define CF_BIOS_TEXT_OUTPUT (32)
#define CF_DIRECT_TEXT_OUTPUT (64)
#define CF_GRAPHIC_TEXT_OUTPUT (128)
#define CF_GRAPHIC_OUTPUT (256)
#define CF_TEXT_MODE (CF_ANSI_TEXT_OUTPUT|CF_BIOS_TEXT_OUTPUT|CF_DIRECT_TEXT_OUTPUT)
#define CF_GRAPHIC_MODE (CF_GRAPHIC_TEXT_OUTPUT|CF_GRAPHIC_OUTPUT)
extern _LONGLONG_
DeliverMessage(vobject to, CFmsg m);
extern void
QueueMessage(vobject to, CFmsg m);
#define SendEvent(to, msg, sparm, lparm) \
({CFmsg it;it.E_TYPE=msg;it.M_SPARAM=(short)sparm;it.M_LPARAM=(long)lparm; \
DeliverMessage(to,it);})
#define PostEvent(to, msg, sparm, lparm) \
({CFmsg it;it.E_TYPE=msg;it.M_SPARAM=(short)sparm;it.M_LPARAM=(long)lparm; \
QueueMessage(to,it);})
extern _LONGLONG_
ConstructCommand(vobject to, char *cmd, short sparm, long lparm, int flag);
#define SendCommand(to, cmd, sparm, lparm) \
ConstructCommand(to, #cmd, sparm, lparm, 0)
#define PostCommand(to, cmd, sparm, lparm) \
ConstructCommand(to, #cmd, sparm, lparm, 1)
extern vobject CaptureKeyboard(vobject self, int nochild);
extern void ReleaseKeyboard(vobject self, vobject prev);
extern vobject CaptureMouse(vobject self, int nochild);
extern void ReleaseMouse(vobject self, vobject prev);
extern void CaptureMotion(vobject self);
extern void ReleaseMotion(vobject self);
extern void CaptureClock(vobject self);
extern void ReleaseClock(vobject self);
extern void CaptureTicker(vobject self);
extern void ReleaseTicker(vobject self);
extern void EnterLeave(int flag);
/* ------------ Global coordinate macros -------------- */
#define SCREENXMAX _SCREENXMAX
#define SCREENYMAX _SCREENYMAX
#define SCREENHEIGHT _SCREENHEIGHT
#define SCREENWIDTH _SCREENWIDTH
#define EFFECTIVE_SCREENWIDTH _EFFECTIVE_SCREENWIDTH
#define EFFECTIVE_SCREENHEIGHT _EFFECTIVE_SCREENHEIGHT
#define GLOBALHEIGHT _GLOBALHEIGHT
#define GLOBALWIDTH _GLOBALWIDTH
#define FONTHEIGHT _FONTHEIGHT
#define FONTWIDTH _FONTWIDTH
#define CURCOLS _CURCOLS
#define CURROWS _CURROWS
#define MAXROWS _MAXROWS
#define MAXCOLS _MAXCOLS
#define LINEHEIGHT _LINEHEIGHT
#define CHARWIDTH _CHARWIDTH
#define GRIDWIDTH _GRIDWIDTH
#define GRIDHEIGHT _GRIDHEIGHT
#define GLOBALX _GLOBALX
#define GLOBALY _GLOBALY
#define UserXMin GLOBALX
#define UserYMin GLOBALY
#define UserXMax (GLOBALX+GLOBALWIDTH-1)
#define UserYMax (GLOBALY+GLOBALHEIGHT-1)
#define VBUF_SIZE (MAXROWS*MAXCOLS)
#define VIDEOMODE _VIDEOMODE
#define LOOK _LOOK
#define FEEL _FEEL
#define REMOTEFD _REMOTEFD
extern int GuiEnabled;
extern long AppArg;
extern int _SCREENXMAX;
extern int _SCREENYMAX;
extern int _SCREENHEIGHT;
extern int _SCREENWIDTH;
extern int _EFFECTIVE_SCREENWIDTH;
extern int _EFFECTIVE_SCREENHEIGHT;
extern int _GLOBALHEIGHT;
extern int _GLOBALWIDTH;
extern int _FONTHEIGHT;
extern int _FONTWIDTH;
extern int _CURCOLS;
extern int _CURROWS;
extern int _LINEHEIGHT;
extern int _CHARWIDTH;
extern int _GRIDWIDTH;
extern int _GRIDHEIGHT;
extern int _GLOBALX;
extern int _GLOBALY;
extern int _MAXROWS;
extern int _MAXCOLS;
extern int _VIDEOMODE;
extern int _LOOK;
extern int _FEEL;
extern int _REMOTEFD;
extern DRIVER_MODE_ENTRY *TextModes;
extern int numTextModes;
extern DRIVER_MODE_ENTRY *GraphicModes;
extern int numGraphicModes;
extern int MouseEnabled;
#define DEFAULT_LOOK 0
#define LOOK_TEXT1 1
#define LOOK_TEXT2 2
#define LOOK_TEXT3 3
#define LOOK_TEXT4 4
#define LOOK_GRAPHICS1 20
#define LOOK_GRAPHICS2 21
#define LOOK_GRAPHICS3 22
#define LOOK_GRAPHICS4 23
#define LOOK_GRAPHICS5 24
#define DEFAULT_FEEL 0
#define FEEL_CUA 1
#define rdiv(a,b) \
((a)/(b))
#define Scale(var,arg,num,den) \
((var) = rdiv(((arg) * (num)),(den)))
#define g2sx(x) \
Scale(x,x,EFFECTIVE_SCREENWIDTH,GLOBALWIDTH)
#define g2sy(y) \
Scale(y,y,EFFECTIVE_SCREENHEIGHT,GLOBALHEIGHT)
#define s2gx(x) \
Scale(x,x,GLOBALWIDTH,EFFECTIVE_SCREENWIDTH)
#define s2gy(y) \
Scale(y,y,GLOBALHEIGHT,EFFECTIVE_SCREENHEIGHT)
#define c2gx(x) \
Scale(x,x,GLOBALWIDTH,CURCOLS)
#define c2gy(y) \
Scale(y,y,GLOBALHEIGHT,CURROWS)
#define c2sx(x) \
Scale(x,x,EFFECTIVE_SCREENWIDTH,CURCOLS)
#define c2sy(y) \
Scale(y,y,EFFECTIVE_SCREENHEIGHT,CURROWS)
#define s2cx(x) \
Scale(x,x,1,FONTWIDTH)
#define s2cy(y) \
Scale(y,y,1,FONTHEIGHT)
#define g2cx(x) \
Scale(x,x,1,CHARWIDTH)
#define g2cy(y) \
Scale(y,y,1,LINEHEIGHT)
vobject
NewGuiClass(
object cl, /* class */
char *title, /* window title or NULL */
int left, int top, /* upper left coordinates */
int height, int width, /* dimensions (global coords) */
void *extension, /* pointer to additional data */
void *parent, /* parent of window (a window)*/
_LONGLONG_ (*msgproc)(), /* message proc for user */
unsigned long attrib, /* window attributes */
int look, int feel
);
/* PARSER STUFF */
#define ASTMODE 1
#define LEXMODE 2
#define EOF_MARK 26 /* End of file character. */
#define ACTION 1 /* Call action function. */
#define MAKENODE 2 /* Make a node. */
#define DELTREE 4 /* Delete the subtree. */
#define PL_ACTION 0x10
#define PL_MAKENODE 0x20
#define PL_DELTREE 0x40
#define LEFT_ASSOC 0
#define RIGHT_ASSOC 1
#define NON_ASSOC 2
#define PARSER_STKSIZE 512
#define ASTMINADDR ((AstP)(100000)) /* lowest allowed address (line numbers here ) */
/*--- PARSER SYMBOL Structure. ---------------------------------------------*/
typedef struct /* Symbol table cell structure (4 bytes). */
{
char *name; /* Pointer to name. */
} PARSER_SYMBOL;
typedef struct
{
int cnt;
PARSER_SYMBOL *ptr;
} PARSER_SYMBOL_TABLE;
/*--- AST NODE Structure. --------------------------------------------------*/
#ifndef __ASTNODEH__
#define __ASTNODEH__
typedef union _datum { /* 16 bytes */
STOR stor;
CAT cat;
struct {
char d[16];
} chr;
struct {
unsigned char d[16];
} uchr;
struct {
short d[8];
} shrt;
struct {
unsigned short d[8];
} ushrt;
struct {
long d[4];
} lng;
struct {
unsigned long d[4];
} ulng;
struct {
_LONGLONG_ d[2];
} lnglng;
struct {
unsigned _LONGLONG_ d[2];
} ulnglng;
struct {
void *d[4];
} ptr;
unsigned char Uuchar;
char Uchar;
unsigned short Uushort;
short Ushort;
unsigned int Uuint;
int Uint;
unsigned long Uulong;
long Ulong;
void * Upointer;
float Ufloat;
double Udouble;
unsigned _LONGLONG_ Uulonglong;
_LONGLONG_ Ulonglong;
#if SUPPORT_LONG_DOUBLE
long double Ulongdouble;
#endif
} DATUM, *PDATUM;
typedef struct ast_node
{/* MINIMUM AST Node structure. (20 bytes) */
struct ast_node *right;
struct ast_node *down;
short symb; /* Symbol number */
short id; /* Nodeid ((id<<6)|subid) */
unsigned short Tindx; /* Terminal type (is a symbol number) */
unsigned short lineno; /* line number */
unsigned short flags; /* general purpose flags */
unsigned char fileno; /* File number */
unsigned char colno; /* column of input text */
} AST_NODE, *AstP;
#endif /* __ASTNODEH__ */
typedef struct
{
int cnt;
int freecnt;
AstP free;
} PARSER_AST_TABLE;
/* The structure at the beginning of each set of tables in the .lod file */
typedef struct lodtable {
long type; /* type of tables, LEXMODE, ASTMODE etc */
long next; /* offset from start of current structure to next structure */
/* Offsets to tables in the file */
long t_D_red;
long t_R_start;
long t_R_symbol;
long t_R_prod;
long t_rBase;
long t_Head;
long t_MT_beg;
long t_MT_tran;
long t_MN_beg;
long t_MN_tran;
long t_M_bits;
long t_G_symbol;
long t_PL;
long t_LGT;
long n_actions;
long t_ACTIONS;
long t_ACTIONSTRINGS;
long t_ia_numb; /* unused */
long t_oa_numb; /* unused */
long t_ia_proc; /* unused */
long t_oa_proc; /* unused */
long t_node_proc; /* unused */
/* constants */
long TM;
long bitwords;
long n_terms;
long n_vars;
long n_symbs;
long n_rules;
long n_states;
long maxtoken;
} LODTABLE;
typedef struct _pactions {
void (*func)();
int args[9];
} *PACTIONS;
typedef struct {
PARSER_AST_TABLE pat;
PARSER_SYMBOL_TABLE pst;
AstP root;
int category;
char language[32];
struct lodtable *lod_table;
void *in_file;
void *symhandle;
void *ROOT;
unsigned int line_numb;
unsigned int line_char;
unsigned int line_file; /* entry in the 'files' array below */
int parsecnt;
int n_actions;
PACTIONS ACTIONS;
char *ACTIONSTRINGS;
struct ptable *ptab;
struct ltable *ltab;
int LSP;
int errors;
#define PARSER_DEBUG 1
#define LEXER_DEBUG 2
#define NO_DYNAMIC_TOKENS 4
int debug;
int lastsymnum;
int lastclass;
char *actionerr;
int maxfile;
int numfiles;
int curfile;
int totsymlen;
int hashdups;
short L_stack[4];
short files[64]; /* contains symbol numbers of filenames */
short blockinID;
short blockoutID;
int blocklevel; /* block nesting level */
char *chunkbase; /* symbol text is stored in chunks during parse */
char *chunkend;
char *symbase;
char *symend;
_LONGLONG_ symhash;
unsigned int symspot;
int (*readfunc)(); /* stream reader function */
int (*writefunc)(); /* stream writer function */
int (*readcharfunc)();
int (*writecharfuc)();
int (*statfunc)();
int fstack_depth;
int fstack[64]; /* for included file nesting */
int obj_inbufcnt;
int obj_inbufsize;
unsigned char obj_inbuf[128];
int astchunk;
int symbolchunk;
int textchunk;
int astsize;
} PG;
typedef struct ptable {
/* Pointers to tables produced by the parser generator */
PG *pg; /* Pointer to multiparser global variable structure */
short *D_red; /* Default reduction. */
short *R_start; /* Reduction start. */
short *R_symbol; /* Reduction symbol. */
short *R_prod; /* Reduction production. */
short *rBase;
short *Head; /* Head symbol number for a production. */
short *MT_beg;
short *MT_tran;
short *MN_beg;
short *MN_tran;
short *M_bits;
long *G_symbol; /* Symbol names of the grammar */
short *PL; /* Production length less one. */
short *LGT;
long *ACTIONS;
char *ACTIONSTRINGS;
/* constants provided by the load module */
short TM;
short bitwords;
int n_terms;
int n_vars;
int n_symbs;
int n_states;
int n_rules;
int n_actions;
short maxtoken;
/* variables
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -