BEGIN { printf("/*%s%s%s permissons*/\n","{","{","{") printf("/*%s%s%s bits and mask*/\n","{","{","{") printf("#define KTI_NONE 0 /* no permissions */ \n") printf("#define KTI_B 1 /* browse key */ \n") printf("#define KTI_F 2 /* fieldedit key */ \n") printf("#define KTI_S 4 /* screen key */ \n") printf("#define KTI_P 8 /* prompt key */ \n") printf("#define KT_LG 4 /* number of used bits */ \n") printf("/*%s%s%s */\n","}","}","}") printf("/*%s%s%s combined*/\n","{","{","{") printf("#define KT_DUMMY 0 /* not used */ \n") printf(" \n") printf("#define KT_NONE KTI_NONE \n") printf("#define KT_B KTI_B \n") printf("#define KT_F KTI_F \n") printf("#define KT_S KTI_S \n") printf("#define KT_P KTI_P \n") printf("#define KT_PSFB (KTI_P|KTI_S|KTI_F|KTI_B) \n") printf("#define KT_SFB (KTI_S|KTI_F|KTI_B) \n") printf("#define KT_PFB (KTI_P|KTI_F|KTI_B) \n") printf("#define KT_PSB (KTI_P|KTI_S|KTI_B) \n") printf("#define KT_PSF (KTI_P|KTI_S|KTI_F) \n") printf("#define KT_FB (KTI_F|KTI_B) \n") printf("#define KT_PB (KTI_P|KTI_B) \n") printf("#define KT_PS (KTI_P|KTI_S) \n") printf("#define KT_SF (KTI_S|KTI_F) \n") printf("#define KT_SB (KTI_S|KTI_B) \n") printf("#define KT_PF (KTI_P|KTI_F) \n") printf("/*%s%s%s */\n","}","}","}") printf("/*%s%s%s */\n","}","}","}") printf("/*%s%s%s types*/\n","{","{","{") printf("typedef enum \n") printf(" { COM=0, /* simple command */ \n") printf(" COM_C, /* command with 1 char argument */ \n") printf(" COM_I, /* command with 1 int argument */ \n") printf(" COM_A, /* command with a adress */ \n") printf(" COM_II, /* command with 2 int arguments */ \n") printf(" COM_P, /* command with a prompt */ \n") printf(" COM_IP, /* command with 1 int and prompt */ \n") printf(" COM_IIP /* command with 2 int and prompt */ \n") printf(" } COM_TYPES; \n") printf("/*%s%s%s */\n","}","}","}") printf("/*%s%s%s datalist*/\n","{","{","{") printf("#define P_T_MERGE(p,c) (p|(c<=O_EXE_MACRO)) \\\n") printf(" ? COM \\\n") printf(" : (COM_TYPES)(key_info[x-O_NOP]>>KT_LG))\n") printf("\n") printf("private char key_info[] = \n { P_T_MERGE(KT_PSFB,COM) \t/* O_NOP */") } { printf(",\n P_T_MERGE(%s,%s) \t/* %s */",$2,$3,$1) } END { printf("\n };\n") printf("/*%s%s%s */\n","}","}","}") }