home *** CD-ROM | disk | FTP | other *** search
- /* keybind.h contains some definitions and a lot of prototypes */
-
- #include <h/defaults.h>
- #include <lib/ori_bool.h>
-
- #define ALL_MICE
- #include <h/os.h>
- #undef ALL_MICE
-
- #define BIND_CONST
- #include <h/keys.h>
-
- #define private static
- #define public
-
- /*{{{}}}*/
- /*{{{ constants*/
- #define secure_macro_lg 256
-
- #define int_dummy_vars 128 /* number of vars, reserved for */
- /* internal usage (terms, loops..) */
- #define def_dummy_vars 8 /* number of always defined internal*/
- /* vars */
- #define ocl_max_args 128 /* maximum number of arguments, an */
- /* ocl macro can take */
- #define ocl_std_args 4 /* these is the number of arguments */
- /* which are always supported (-m) */
- #define MAX_MOUSE_BUTTONS 128
- #define NO_MOUSE "no-mouse"
- #define ARG_FORMAT "(arg%d)"
- #define LOC_FORMAT "(loc%d)"
- /*}}} */
- /*{{{ token-definition*/
- typedef enum {
- ADD,
- BEGIN,
- CHAR,
- COMMA,
- COMPPRE,
- COUNTER_NULL,
- C_POSITIV,
- DOLLAR,
- END,
- ENDFILE,
- HEX,
- INCLUDE,
- MACRO,
- META,
- MINUS,
- MULT,
- NAME,
- NUMBER,
- OPCODE,
- OPERATION,
- REL_EQ,
- REL_LOW,
- REL_LOW_EQ,
- REL_HIGH,
- REL_HIGH_EQ,
- REL_NEQ,
- VARIABLE,
- # include "ocltoken.h"
- ERROR
- } tokens;
- /*}}} */
- /*{{{ typedefs*/
- /*{{{ VARS_LIST*/
- typedef struct VARS_LIST
- { unsigned char const *var_name;
- int no;
- int size;
- const struct VARS_LIST *next;
- } VARS_LIST;
- /*}}} */
- /*{{{ keywords*/
- typedef struct
- { unsigned char const * const name;
- tokens const value;
- } keywords;
- /*}}} */
- /*{{{ KEYNAME*/
- typedef struct
- { unsigned char const *name;
- TOKEN num;
- boolean use;
- } KEYNAME;
- /*}}} */
- /*{{{ OP_LIST*/
- typedef struct OP_LIST
- { unsigned char *op_name;
- boolean ret_used;
- boolean def;
- int length;
- int place;
- int args;
- TOKEN *ops;
- struct OP_LIST *next;
- } OP_LIST;
- /*}}} */
- /*{{{ LOC_FILE*/
- typedef struct
- { FILE *fp;
- boolean pipe;
- unsigned char *unlink_name;
- } LOC_FILE;
- /*}}} */
- /*}}} */
-
- /*{{{ CODEHELP_C*/
- extern unsigned char *mstrcpy(unsigned char const*const);
- extern void m_error_po(char const*const);
- extern void m_exit(char const*const,...);
- extern void begin_parse(void);
- extern void end_parse(char const*const);
- extern void name_parse(unsigned char*,char const*const,boolean const);
- extern TOKEN *get_message(TOKEN*);
- extern TOKEN *generate_jmp(TOKEN,TOKEN*,TOKEN*);
- extern tokens name_to_var(tokens,int,boolean);
- extern int dummy_var(int);
- extern boolean isdummy(int);
- extern void def_ocl_args(int);
- extern int ocl_loc_var(int);
- extern int ocl_arg_var(int);
- extern TOKEN *parse_term(tokens,TOKEN*,int,int,boolean*);
- extern TOKEN *put_var(TOKEN*);
- extern boolean new_vars_enabled;
- /*}}} */
- /*{{{ KEYBIND_C*/
- extern FILE *open_source(LOC_FILE*,unsigned char*,boolean);
- extern void clear_file(LOC_FILE*);
- extern void write_mark_rc(unsigned char*,unsigned char[4][FOLD_TAG_LENGTH+1]);
- extern void write_name_rc(unsigned char*);
- extern void write_ums_rc(int,unsigned char*,unsigned char*);
- extern TOKEN write_string(TOKEN *l,int lg,boolean);
- extern void write_buttons_rc(TOKEN*,int);
- extern void write_macro_rc(int,TOKEN,int,TOKEN*,unsigned char*);
- extern void write_bind(unsigned char const*,unsigned char *,int);
- extern void put_consts(void);
- extern void write_dest_mac(TOKEN*,int);
- extern void *kbd_malloc(size_t);
- extern void kbd_free(void*);
- extern void kbd_exit(int);
- extern LOC_FILE rc,in,ref,ref_no;
- extern TOKEN *mac_ptr;
- extern boolean do_opt;
- extern int verbose_level;
- extern boolean sorting;
- extern boolean commenting;
- extern boolean warning;
- extern unsigned char *dest_mac;
- extern char *lib_path;
- /*}}} */
- /*{{{ KEYTAB_C*/
- extern void overload_prefix(void);
- extern unsigned char const *cut_overload(unsigned char const*);
- extern unsigned char *m_name;
- extern void mouse_code(void);
- extern void show_mice(FILE*);
- extern void init_keytables(void);
- extern int token2mode(tokens);
- extern void def_keybind_code(void);
- extern void set_alias(void);
- extern void mode_code(void);
- extern void terminal_cmd(void);
- extern void define_k_modes(void);
- extern void check_k_modes(void);
- extern void write_kbds(void);
- extern void init_alias(void);
- /*}}} */
- /*{{{ MISC_C*/
- extern void sc_list_keys(void);
- /*}}} */
- /*{{{ MESSAGES_C*/
- extern char const * const msg_list[];
- /*{{{ format-strings*/
- extern char const F_2ALIAS[];
- extern char const F_AGAIN[];
- extern char const F_ALIAS[];
- extern char const F_ASM_LM[];
- extern char const F_END_MODE[];
- extern char const F_BELONGS[];
- extern char const F_BINDS[];
- extern char const F_CLOSE[];
- extern char const F_CUR_TERM[];
- extern char const F_DBL_BIND[];
- extern char const F_DEFMOD[];
- extern char const F_DEMAC[];
- extern char const F_DEM_COMMENT[];
- extern char const F_DNDMAC[];
- extern char const F_BEG_MODE[];
- extern char const F_ENT_FILE_1[];
- extern char const F_ENT_FILE_2[];
- extern char const F_ERRORPO[];
- extern char const F_ERRY[];
- extern char const F_EX_FILE_1[];
- extern char const F_EX_FILE_2[];
- extern char const F_FOR[];
- extern char const F_HISTORY[];
- extern char const F_IGNORING[];
- extern char const F_INCLUDE[];
- extern char const F_INTS[];
- extern char const F_INV_PATH[];
- extern char const F_ISMASKED[];
- extern char const F_KBDS[];
- extern char const F_KBD_MISS[];
- extern char const F_LOMAC[];
- extern char const F_MARKT[];
- extern char const F_MASKS[];
- extern char const F_MDECLARE[];
- extern char const F_MISALIAS[];
- extern char const F_MIS_DEM_END[];
- extern char const F_MOUSE[];
- extern char const F_M_USE[];
- extern char const F_NOAGAIN[];
- extern char const F_NOBIND[];
- extern char const F_NODES[];
- extern char const F_NOKEYNUMBER[];
- extern char const F_NOPIPE[];
- extern char const F_NORC[];
- extern char const F_OPERATION[];
- extern char const F_OPT_FORMAT[];
- extern char const F_OPT_S_FORMAT[];
- extern char const F_OVER_CON[];
- extern char const F_OVER_PRE[];
- extern char const F_SETDEC[];
- extern char const F_SETUSE[];
- extern char const F_STMAC[];
- extern char const F_STRING[];
- extern char const F_T_START[];
- extern char const F_UNSET[];
- extern char const F_USECOMP[];
- extern char const F_USEEND[];
- extern char const F_USESET[];
- extern char const F_WARN_CHAR[];
- /*}}} */
- /*{{{ simple messages*/
- extern char const M_ABORTUSED[];
- extern char const M_ADD_OS_X[];
- extern char const M_ASM_1[];
- extern char const M_BEGINUSE[];
- extern char const M_CASEEND[];
- extern char const M_CRASH[];
- extern char const M_DEFONAME[];
- extern char const M_DEPTH[];
- extern char const M_DUPAB[];
- extern char const M_DUPAUTO[];
- extern char const M_DUPDEF[];
- extern char const M_DUPKEY[];
- extern char const M_ENDUSE[];
- extern char const M_END_OS_X[];
- extern char const M_EXPALIAS[];
- extern char const M_FALSEEND[];
- extern char const M_INCORRECTFILES[];
- extern char const M_INVMNAME[];
- extern char const M_INV_ARGS[];
- extern char const M_KBDNAME[];
- extern char const M_KBD_BEGIN[];
- extern char const M_KBD_ERR[];
- extern char const M_KBD_KEY[];
- extern char const M_KEYEND[];
- extern char const M_KEYNAME[];
- extern char const M_LONG_KEY[];
- extern char const M_LONG_MACRO[];
- extern char const M_MACGIV[];
- extern char const M_MACNAME[];
- extern char const M_MANYMODES[];
- extern char const M_MARKNAME[];
- extern char const M_MICE[];
- extern char const M_MOUSE[];
- extern char const M_MSTR[];
- extern char const M_MUCH_FUN[];
- extern char const M_NOABORT[];
- extern char const M_NOADDCOUNTER[];
- extern char const M_NOBFILE[];
- extern char const M_NOBINDNAME[];
- extern char const M_NOCHAR[];
- extern char const M_NOCNTRL[];
- extern char const M_NOCODE[];
- extern char const M_NOCOMMAND[];
- extern char const M_NODEBOUND[];
- extern char const M_NOELSEFI[];
- extern char const M_NOESAC[];
- extern char const M_NOFI[];
- extern char const M_NOFNAME[];
- extern char const M_NOHEX[];
- extern char const M_NOHISTORY[];
- extern char const M_NOJUMP[];
- extern char const M_NOKCOMMAND[];
- extern char const M_NOMACROTAG[];
- extern char const M_NOMEMORY[];
- extern char const M_NOMESSAGE[];
- extern char const M_NOMETA[];
- extern char const M_NOMSTRING[];
- extern char const M_NOOCLOPT[];
- extern char const M_NOPROMPT[];
- extern char const M_NOREF[];
- extern char const M_NOSETCHAR[];
- extern char const M_NOTEST[];
- extern char const M_NOVAR[];
- extern char const M_NOVAS[];
- extern char const M_NOWHILE[];
- extern char const M_NO_DEM[];
- extern char const M_OPPTAG[];
- extern char const M_OPP[];
- extern char const M_OVER_ERR[];
- extern char const M_REFCOMP[];
- extern char const M_SETMISS[];
- extern char const M_SNAME[];
- extern char const M_TAB[];
- extern char const M_TOOMANYKEYS[];
- extern char const M_T_END[];
- extern char const M_T_MAX[];
- extern char const M_T_NAME[];
- extern char const M_UMNAME[];
- extern char const M_USAGE[];
- extern char const M_WANTBEGIN[];
- extern char const M_WANTCHAR[];
- extern char const M_WANTEND[];
- /*}}} */
- /*}}} */
- /*{{{ NAME_C*/
- extern KEYNAME bindings[];
- extern keywords const keytab[];
- extern KEYNAME const asm_token[];
- extern unsigned char const fi_name[];
- extern unsigned char const if_u_name[];
- extern unsigned char const end_ref[];
- extern unsigned char const include_name[];
- extern histories name_to_history(tokens,boolean);
- extern KEYNAME *name2func(unsigned char*);
- extern KEYNAME const *name2asm(unsigned char*);
- extern keywords const *name2keyword(unsigned char*);
- extern unsigned char name2lg(unsigned char*);
- extern int name2msg(unsigned char*);
- extern void name_list(void);
- extern char *f_c_name[];
- /*}}} */
- /*{{{ OPTMAC_C*/
- #ifndef NO_OPTI
- extern TOKEN *opt_mac(TOKEN*,TOKEN*,boolean,boolean,boolean);
- #else
- # define opt_mac(start,end,no_not_opt,string_opt,fix_jmp) (start,no_not_opt,string_opt,fix_jmp,end)
- #endif
- /*}}} */
- /*{{{ PARSEASM_C*/
- extern TOKEN *parse_asm(TOKEN*,unsigned char*);
- /*}}} */
- /*{{{ PARSECOND_C*/
- extern TOKEN *parse_cond(TOKEN*,int,boolean*);
- /*}}} */
- /*{{{ PARSMAC_C*/
- extern TOKEN *parse_macro(TOKEN*,int,boolean*);
- extern TOKEN *opt_parse_macro(TOKEN*,int,boolean*,boolean,boolean,boolean);
- /*}}} */
- /*{{{ PARSER_C*/
- extern void check_length(TOKEN*);
- extern boolean process_file(void);
- extern unsigned char *modenames[MODE_COUNT];
- extern int bind_const[RCC_SIZE];
- extern unsigned char ocl_opts[NO_OCL_CMD_OPTS*(2*BIND_NAME_LEN+2)];
- extern int used_modes;
- extern int vm_no;
- extern int bc_mac;
- extern boolean demand;
- extern unsigned char *op_def_name;
- extern int op_def_args;
- extern TOKEN *m_def;
- /*}}} */
- /*{{{ SCANNER_C*/
- extern tokens get_full_token(void);
- extern tokens get_keycode_token(void);
- extern tokens get_single_token(void);
- extern void error_po(void);
- extern int creat_var(unsigned char*,int,int);
- extern void init_vars(int);
- extern void free_var(unsigned char const*const);
- extern void use_tag(unsigned char const*const,boolean const);
- #define use_it(s) use_tag(s,False)
- extern void default_using(void);
- extern void init_scan(void);
- extern void creat_op(unsigned char*,boolean,int,TOKEN*,int,boolean,int);
- extern void free_op(unsigned char *);
- extern unsigned char tk_char;
- extern KEYNAME *tk_key;
- extern OP_LIST *tk_operation;
- extern VARS_LIST const *tk_var;
- extern int tk_val;
- extern unsigned char tk_string[];
- extern TOKEN tk_macro[];
- extern OP_LIST new_op;
- extern VARS_LIST const *var_list;
- extern unsigned char *source;
- extern int ctrl_c[O_NOP];
- extern unsigned char const undef[];
- extern int repeat_var;
- extern int return_var;
- extern int rel_op_var;
- extern boolean err_pos_out;
- /*}}} */
- /*{{{ SET_C*/
- extern void parse_set(void);
- extern TOKEN *parse_set_macro(TOKEN*);
- extern void init_sets(void);
- extern int get_set(void);
- extern void writesets(FILE*);
- /*}}} */
-