home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Texteditors / Origami / Sources / src / keybind / keybind.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-09-27  |  11.3 KB  |  407 lines

  1. /* keybind.h contains some definitions and a lot of prototypes */
  2.  
  3. #include <h/defaults.h>
  4. #include <lib/ori_bool.h>
  5.  
  6. #define ALL_MICE
  7. #include <h/os.h>
  8. #undef ALL_MICE
  9.  
  10. #define BIND_CONST
  11. #include <h/keys.h>
  12.  
  13. #define private static
  14. #define public
  15.  
  16. /*{{{}}}*/
  17. /*{{{  constants*/
  18. #define secure_macro_lg 256
  19.  
  20. #define int_dummy_vars 128       /* number of vars, reserved for     */
  21.                                  /* internal usage (terms, loops..)  */
  22. #define def_dummy_vars 8         /* number of always defined internal*/
  23.                                  /* vars                             */
  24. #define ocl_max_args   128       /* maximum number of arguments, an  */
  25.                                  /* ocl macro can take               */
  26. #define ocl_std_args   4         /* these is the number of arguments */
  27.                                  /* which are always supported (-m)  */
  28. #define MAX_MOUSE_BUTTONS  128
  29. #define NO_MOUSE "no-mouse"
  30. #define ARG_FORMAT "(arg%d)"
  31. #define LOC_FORMAT "(loc%d)"
  32. /*}}}  */
  33. /*{{{  token-definition*/
  34. typedef enum {
  35.   ADD,
  36.   BEGIN,
  37.   CHAR,
  38.   COMMA,
  39.   COMPPRE,
  40.   COUNTER_NULL,
  41.   C_POSITIV,
  42.   DOLLAR,
  43.   END,
  44.   ENDFILE,
  45.   HEX,
  46.   INCLUDE,
  47.   MACRO,
  48.   META,
  49.   MINUS,
  50.   MULT,
  51.   NAME,
  52.   NUMBER,
  53.   OPCODE,
  54.   OPERATION,
  55.   REL_EQ,
  56.   REL_LOW,
  57.   REL_LOW_EQ,
  58.   REL_HIGH,
  59.   REL_HIGH_EQ,
  60.   REL_NEQ,
  61.   VARIABLE,
  62. # include "ocltoken.h"
  63.   ERROR
  64. } tokens;
  65. /*}}}  */
  66. /*{{{  typedefs*/
  67. /*{{{  VARS_LIST*/
  68. typedef struct VARS_LIST
  69.  { unsigned char const *var_name;
  70.    int no;
  71.    int size;
  72.    const struct VARS_LIST *next;
  73.  } VARS_LIST;
  74. /*}}}  */
  75. /*{{{  keywords*/
  76. typedef struct
  77.  { unsigned char const * const name;
  78.    tokens const value;
  79.  } keywords;
  80. /*}}}  */
  81. /*{{{  KEYNAME*/
  82. typedef struct
  83.  { unsigned char const *name;
  84.    TOKEN num;
  85.    boolean use;
  86.  } KEYNAME;
  87. /*}}}  */
  88. /*{{{  OP_LIST*/
  89. typedef struct OP_LIST
  90.  { unsigned char *op_name;
  91.    boolean ret_used;
  92.    boolean def;
  93.    int length;
  94.    int place;
  95.    int args;
  96.    TOKEN *ops;
  97.    struct OP_LIST *next;
  98.  } OP_LIST;
  99. /*}}}  */
  100. /*{{{  LOC_FILE*/
  101. typedef struct
  102.  { FILE *fp;
  103.    boolean pipe;
  104.    unsigned char *unlink_name;
  105.  } LOC_FILE;
  106. /*}}}  */
  107. /*}}}  */
  108.  
  109. /*{{{  CODEHELP_C*/
  110. extern unsigned char *mstrcpy(unsigned char const*const);
  111. extern void m_error_po(char const*const);
  112. extern void m_exit(char const*const,...);
  113. extern void begin_parse(void);
  114. extern void end_parse(char const*const);
  115. extern void name_parse(unsigned char*,char const*const,boolean const);
  116. extern TOKEN *get_message(TOKEN*);
  117. extern TOKEN *generate_jmp(TOKEN,TOKEN*,TOKEN*);
  118. extern tokens name_to_var(tokens,int,boolean);
  119. extern int dummy_var(int);
  120. extern boolean isdummy(int);
  121. extern void def_ocl_args(int);
  122. extern int ocl_loc_var(int);
  123. extern int ocl_arg_var(int);
  124. extern TOKEN *parse_term(tokens,TOKEN*,int,int,boolean*);
  125. extern TOKEN *put_var(TOKEN*);
  126. extern boolean new_vars_enabled;
  127. /*}}}  */
  128. /*{{{  KEYBIND_C*/
  129. extern FILE *open_source(LOC_FILE*,unsigned char*,boolean);
  130. extern void clear_file(LOC_FILE*);
  131. extern void write_mark_rc(unsigned char*,unsigned char[4][FOLD_TAG_LENGTH+1]);
  132. extern void write_name_rc(unsigned char*);
  133. extern void write_ums_rc(int,unsigned char*,unsigned char*);
  134. extern TOKEN write_string(TOKEN *l,int lg,boolean);
  135. extern void write_buttons_rc(TOKEN*,int);
  136. extern void write_macro_rc(int,TOKEN,int,TOKEN*,unsigned char*);
  137. extern void write_bind(unsigned char const*,unsigned char *,int);
  138. extern void put_consts(void);
  139. extern void write_dest_mac(TOKEN*,int);
  140. extern void *kbd_malloc(size_t);
  141. extern void kbd_free(void*);
  142. extern void kbd_exit(int);
  143. extern LOC_FILE rc,in,ref,ref_no;
  144. extern TOKEN *mac_ptr;
  145. extern boolean do_opt;
  146. extern int verbose_level;
  147. extern boolean sorting;
  148. extern boolean commenting;
  149. extern boolean warning;
  150. extern unsigned char *dest_mac;
  151. extern char *lib_path;
  152. /*}}}  */
  153. /*{{{  KEYTAB_C*/
  154. extern void overload_prefix(void);
  155. extern unsigned char const *cut_overload(unsigned char const*);
  156. extern unsigned char *m_name;
  157. extern void mouse_code(void);
  158. extern void show_mice(FILE*);
  159. extern void init_keytables(void);
  160. extern int token2mode(tokens);
  161. extern void def_keybind_code(void);
  162. extern void set_alias(void);
  163. extern void mode_code(void);
  164. extern void terminal_cmd(void);
  165. extern void define_k_modes(void);
  166. extern void check_k_modes(void);
  167. extern void write_kbds(void);
  168. extern void init_alias(void);
  169. /*}}}  */
  170. /*{{{  MISC_C*/
  171. extern void sc_list_keys(void);
  172. /*}}}  */
  173. /*{{{  MESSAGES_C*/
  174. extern char const * const msg_list[];
  175. /*{{{  format-strings*/
  176. extern char const F_2ALIAS[];
  177. extern char const F_AGAIN[];
  178. extern char const F_ALIAS[];
  179. extern char const F_ASM_LM[];
  180. extern char const F_END_MODE[];
  181. extern char const F_BELONGS[];
  182. extern char const F_BINDS[];
  183. extern char const F_CLOSE[];
  184. extern char const F_CUR_TERM[];
  185. extern char const F_DBL_BIND[];
  186. extern char const F_DEFMOD[];
  187. extern char const F_DEMAC[];
  188. extern char const F_DEM_COMMENT[];
  189. extern char const F_DNDMAC[];
  190. extern char const F_BEG_MODE[];
  191. extern char const F_ENT_FILE_1[];
  192. extern char const F_ENT_FILE_2[];
  193. extern char const F_ERRORPO[];
  194. extern char const F_ERRY[];
  195. extern char const F_EX_FILE_1[];
  196. extern char const F_EX_FILE_2[];
  197. extern char const F_FOR[];
  198. extern char const F_HISTORY[];
  199. extern char const F_IGNORING[];
  200. extern char const F_INCLUDE[];
  201. extern char const F_INTS[];
  202. extern char const F_INV_PATH[];
  203. extern char const F_ISMASKED[];
  204. extern char const F_KBDS[];
  205. extern char const F_KBD_MISS[];
  206. extern char const F_LOMAC[];
  207. extern char const F_MARKT[];
  208. extern char const F_MASKS[];
  209. extern char const F_MDECLARE[];
  210. extern char const F_MISALIAS[];
  211. extern char const F_MIS_DEM_END[];
  212. extern char const F_MOUSE[];
  213. extern char const F_M_USE[];
  214. extern char const F_NOAGAIN[];
  215. extern char const F_NOBIND[];
  216. extern char const F_NODES[];
  217. extern char const F_NOKEYNUMBER[];
  218. extern char const F_NOPIPE[];
  219. extern char const F_NORC[];
  220. extern char const F_OPERATION[];
  221. extern char const F_OPT_FORMAT[];
  222. extern char const F_OPT_S_FORMAT[];
  223. extern char const F_OVER_CON[];
  224. extern char const F_OVER_PRE[];
  225. extern char const F_SETDEC[];
  226. extern char const F_SETUSE[];
  227. extern char const F_STMAC[];
  228. extern char const F_STRING[];
  229. extern char const F_T_START[];
  230. extern char const F_UNSET[];
  231. extern char const F_USECOMP[];
  232. extern char const F_USEEND[];
  233. extern char const F_USESET[];
  234. extern char const F_WARN_CHAR[];
  235. /*}}}  */
  236. /*{{{  simple messages*/
  237. extern char const M_ABORTUSED[];
  238. extern char const M_ADD_OS_X[];
  239. extern char const M_ASM_1[];
  240. extern char const M_BEGINUSE[];
  241. extern char const M_CASEEND[];
  242. extern char const M_CRASH[];
  243. extern char const M_DEFONAME[];
  244. extern char const M_DEPTH[];
  245. extern char const M_DUPAB[];
  246. extern char const M_DUPAUTO[];
  247. extern char const M_DUPDEF[];
  248. extern char const M_DUPKEY[];
  249. extern char const M_ENDUSE[];
  250. extern char const M_END_OS_X[];
  251. extern char const M_EXPALIAS[];
  252. extern char const M_FALSEEND[];
  253. extern char const M_INCORRECTFILES[];
  254. extern char const M_INVMNAME[];
  255. extern char const M_INV_ARGS[];
  256. extern char const M_KBDNAME[];
  257. extern char const M_KBD_BEGIN[];
  258. extern char const M_KBD_ERR[];
  259. extern char const M_KBD_KEY[];
  260. extern char const M_KEYEND[];
  261. extern char const M_KEYNAME[];
  262. extern char const M_LONG_KEY[];
  263. extern char const M_LONG_MACRO[];
  264. extern char const M_MACGIV[];
  265. extern char const M_MACNAME[];
  266. extern char const M_MANYMODES[];
  267. extern char const M_MARKNAME[];
  268. extern char const M_MICE[];
  269. extern char const M_MOUSE[];
  270. extern char const M_MSTR[];
  271. extern char const M_MUCH_FUN[];
  272. extern char const M_NOABORT[];
  273. extern char const M_NOADDCOUNTER[];
  274. extern char const M_NOBFILE[];
  275. extern char const M_NOBINDNAME[];
  276. extern char const M_NOCHAR[];
  277. extern char const M_NOCNTRL[];
  278. extern char const M_NOCODE[];
  279. extern char const M_NOCOMMAND[];
  280. extern char const M_NODEBOUND[];
  281. extern char const M_NOELSEFI[];
  282. extern char const M_NOESAC[];
  283. extern char const M_NOFI[];
  284. extern char const M_NOFNAME[];
  285. extern char const M_NOHEX[];
  286. extern char const M_NOHISTORY[];
  287. extern char const M_NOJUMP[];
  288. extern char const M_NOKCOMMAND[];
  289. extern char const M_NOMACROTAG[];
  290. extern char const M_NOMEMORY[];
  291. extern char const M_NOMESSAGE[];
  292. extern char const M_NOMETA[];
  293. extern char const M_NOMSTRING[];
  294. extern char const M_NOOCLOPT[];
  295. extern char const M_NOPROMPT[];
  296. extern char const M_NOREF[];
  297. extern char const M_NOSETCHAR[];
  298. extern char const M_NOTEST[];
  299. extern char const M_NOVAR[];
  300. extern char const M_NOVAS[];
  301. extern char const M_NOWHILE[];
  302. extern char const M_NO_DEM[];
  303. extern char const M_OPPTAG[];
  304. extern char const M_OPP[];
  305. extern char const M_OVER_ERR[];
  306. extern char const M_REFCOMP[];
  307. extern char const M_SETMISS[];
  308. extern char const M_SNAME[];
  309. extern char const M_TAB[];
  310. extern char const M_TOOMANYKEYS[];
  311. extern char const M_T_END[];
  312. extern char const M_T_MAX[];
  313. extern char const M_T_NAME[];
  314. extern char const M_UMNAME[];
  315. extern char const M_USAGE[];
  316. extern char const M_WANTBEGIN[];
  317. extern char const M_WANTCHAR[];
  318. extern char const M_WANTEND[];
  319. /*}}}  */
  320. /*}}}  */
  321. /*{{{  NAME_C*/
  322. extern KEYNAME bindings[];
  323. extern keywords const keytab[];
  324. extern KEYNAME const asm_token[];
  325. extern unsigned char const fi_name[];
  326. extern unsigned char const if_u_name[];
  327. extern unsigned char const end_ref[];
  328. extern unsigned char const include_name[];
  329. extern histories name_to_history(tokens,boolean);
  330. extern KEYNAME *name2func(unsigned char*);
  331. extern KEYNAME const *name2asm(unsigned char*);
  332. extern keywords const *name2keyword(unsigned char*);
  333. extern unsigned char name2lg(unsigned char*);
  334. extern int name2msg(unsigned char*);
  335. extern void name_list(void);
  336. extern char *f_c_name[];
  337. /*}}}  */
  338. /*{{{  OPTMAC_C*/
  339. #ifndef NO_OPTI
  340.   extern TOKEN *opt_mac(TOKEN*,TOKEN*,boolean,boolean,boolean);
  341. #else
  342. # define opt_mac(start,end,no_not_opt,string_opt,fix_jmp) (start,no_not_opt,string_opt,fix_jmp,end)
  343. #endif
  344. /*}}}  */
  345. /*{{{  PARSEASM_C*/
  346. extern TOKEN *parse_asm(TOKEN*,unsigned char*);
  347. /*}}}  */
  348. /*{{{  PARSECOND_C*/
  349. extern TOKEN *parse_cond(TOKEN*,int,boolean*);
  350. /*}}}  */
  351. /*{{{  PARSMAC_C*/
  352. extern TOKEN *parse_macro(TOKEN*,int,boolean*);
  353. extern TOKEN *opt_parse_macro(TOKEN*,int,boolean*,boolean,boolean,boolean);
  354. /*}}}  */
  355. /*{{{  PARSER_C*/
  356. extern void check_length(TOKEN*);
  357. extern boolean process_file(void);
  358. extern unsigned char *modenames[MODE_COUNT];
  359. extern int bind_const[RCC_SIZE];
  360. extern unsigned char ocl_opts[NO_OCL_CMD_OPTS*(2*BIND_NAME_LEN+2)];
  361. extern int used_modes;
  362. extern int vm_no;
  363. extern int bc_mac;
  364. extern boolean demand;
  365. extern unsigned char *op_def_name;
  366. extern int op_def_args;
  367. extern TOKEN *m_def;
  368. /*}}}  */
  369. /*{{{  SCANNER_C*/
  370. extern tokens get_full_token(void);
  371. extern tokens get_keycode_token(void);
  372. extern tokens get_single_token(void);
  373. extern void error_po(void);
  374. extern int creat_var(unsigned char*,int,int);
  375. extern void init_vars(int);
  376. extern void free_var(unsigned char const*const);
  377. extern void use_tag(unsigned char const*const,boolean const);
  378. #define use_it(s) use_tag(s,False)
  379. extern void default_using(void);
  380. extern void init_scan(void);
  381. extern void creat_op(unsigned char*,boolean,int,TOKEN*,int,boolean,int);
  382. extern void free_op(unsigned char *);
  383. extern unsigned char tk_char;
  384. extern KEYNAME *tk_key;
  385. extern OP_LIST *tk_operation;
  386. extern VARS_LIST const *tk_var;
  387. extern int tk_val;
  388. extern unsigned char tk_string[];
  389. extern TOKEN tk_macro[];
  390. extern OP_LIST new_op;
  391. extern VARS_LIST const *var_list;
  392. extern unsigned char *source;
  393. extern int ctrl_c[O_NOP];
  394. extern unsigned char const undef[];
  395. extern int repeat_var;
  396. extern int return_var;
  397. extern int rel_op_var;
  398. extern boolean err_pos_out;
  399. /*}}}  */
  400. /*{{{  SET_C*/
  401. extern void parse_set(void);
  402. extern TOKEN *parse_set_macro(TOKEN*);
  403. extern void init_sets(void);
  404. extern int get_set(void);
  405. extern void writesets(FILE*);
  406. /*}}}  */
  407.