📄 prmt.h
字号:
/* prmt.h: Some #defines used in the operator and primitive handlers */#define PDECL(name) void name(rf, argc, argv) Dframe *rf, *argv; int argc;#define Dp1 (argv[0])#define Dp2 (argv[1])#define Dp3 (argv[2])#define Dp4 (argv[3])#define Dp Dp1#define T1 (Dp1.type)#define T2 (Dp2.type)#define T3 (Dp3.type)#define T4 (Dp4.type)#define T T1#define Int1 (Dp1.Dval)#define Int2 (Dp2.Dval)#define Int3 (Dp3.Dval)#define Int4 (Dp4.Dval)#define Int Int1#define Un1 (Dp1.Dunode)#define Un2 (Dp2.Dunode)#define Un3 (Dp3.Dunode)#define Un4 (Dp4.Dunode)#define Un Un1#define Prmterror(x) if (1) { outputf x; finish_error(); \ *rf = frame_error; return; } else#define Terror if (1) { type_error(rf); return; } else#define Tcheckgen(e) if (e) Terror#define Tcheck1(t) Tcheckgen(T1 != (t))#define Tcheck2(t1, t2) Tcheckgen(T1 != (t1) || T2 != (t2))#define Tcheck3(t1, t2, t3) Tcheckgen(T1 != (t1) || T2 != (t2) || T3 != (t3))#define Berror if (1) { bounds_error(rf); return; } else#define Bcheck(e) if (e) Berror#define Set_err(v, s) if (1) { vtc_errflag = v; vtc_errmsg = s; } else#define Set_err_neg(s) Set_err(rf->Dval == -1, s)#define Set_err_null(s) Set_err(rf->type == F_NULL, s)#define Dffalse(df) ((df).type == F_INT && !(df).Dval || (df).type == F_NULL)#define Dftrue(df) (!Dffalse(df))#define Ainbounds(df) ((df).Dapos >= 0 && (df).Dapos < (df).Asize)#define Awriteok(df) (Ainbounds(df) || !(df).Darray->fixed && (df).Dapos >= 0)#define Sinbounds(df) ((df).Dspos >= 0 && (df).Dspos < (df).Slen)#define Soelem(df) (Sinbounds(df) ? (df).Sbegin[(df).Dspos] : 0)#define Socstr(df) (Sinbounds(df) ? Scstr(df) : empty_cstr)#define Soastr(df) (Sinbounds(df) ? Sastr(df) : "")#define Salen(df) ((df).Slen - (df).u.s.pos)#define Solen(df) (Sinbounds(df) ? Salen(df) : 0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -