1 2 /************************************************************************** 3 4 al2.h 5 Colin Ramsay (cram@itee.uq.edu.au) 6 25 Feb 00 7 8 ADVANCED COSET ENUMERATOR, Version 3.001 9 10 Copyright 2000 11 Centre for Discrete Mathematics and Computing, 12 Department of Mathematics and 13 Department of Computer Science & Electrical Engineering, 14 The University of Queensland, QLD 4072. 15 (http://staff.itee.uq.edu.au/havas) 16 17 This is the header file for Level 2 of ACE; that is, a demonstration 18 application in the form of a stand alone, interactive interface. 19 20 **************************************************************************/ 21 22 #include "al1.h" 23 24 #include <setjmp.h> /* Needed for setjmp/longjmp jmp_buf type */ 25 26 extern jmp_buf env; /* Environment for error-recovery jump */ 27 28 /****************************************************************** 29 To ensure that any index reported by the enumerator is correct, we 30 must take care that we do not call al0_enum() in an invalid mode. 31 If the okstart (okcont, okredo) flag is set, then it is permissible 32 to call Level 1/0 in start (continue, redo) mode; although other 33 things may have to be checked as well. Actions of the parser are 34 monitored, and will set/clear the appropriate flags. All three 35 flags start out FALSE (remember, P^3)! 36 ******************************************************************/ 37 38 extern Logic okstart, okcont, okredo; 39 40 /****************************************************************** 41 In order that we do not do anything `silly' during postprocessing, 42 we maintain various status regarding the current state of the 43 table. lresult is the result of the last call to al1_start(). If 44 tabindex is T, then we have a (valid) index. If tabinfo is T, then 45 the table contains valid information; in particular, the SG phase 46 has been successfully completed. 47 ******************************************************************/ 48 49 extern Logic tabinfo, tabindex; 50 extern int lresult; 51 52 /****************************************************************** 53 echo defaults to FALSE, and should be left that way for interactive 54 use. If output is redirected to a file, we might want to set this 55 so that the commands are also logged. If skipnl is set, then '\n' 56 is treated as whitespace (eg, as part of a multiline relator list). 57 currip is the current input character, currkey is the current 58 command (ie, keyword), and currname is the current name (ie, string 59 argument). currword is the word (group relator/subgroup generator) 60 currently being processed, and currsiz is the size of the array 61 allocated to currword (_not_ the size of the stored word). currexp 62 is the (most recent) exponent explicitly entered for currword (for 63 tracking involutions). 64 ******************************************************************/ 65 66 extern Logic echo, skipnl; 67 extern int currip; 68 extern char currkey[64], currname[128]; 69 extern int *currword, currsiz, currexp; 70 71 /****************************************************************** 72 Various parameters to Level 2 are lists of integers. We store them 73 & their number in these. 74 ******************************************************************/ 75 76 extern int intcnt, intarr[32]; 77 78 /****************************************************************** 79 Externally visible functions defined in util2.c 80 ******************************************************************/ 81 82 void al2_init(void); 83 char *al2_strdup(char*); 84 int al2_outlen(int); 85 void al2_continue(char*); 86 #ifdef __GNUC__ 87 void al2_restart(char*) __attribute__ ((noreturn)); 88 #else 89 void al2_restart(char*); 90 #endif 91 void al2_abort(char*); 92 93 void al2_aip(char*); 94 void al2_aop(char*); 95 96 void al2_dump(Logic); 97 void al2_opt(void); 98 void al2_help(void); 99 100 void al2_nextip(void); 101 void al2_skipws(void); 102 void al2_nextnw(void); 103 104 /****************************************************************** 105 Externally visible functions defined in parser.c 106 ******************************************************************/ 107 108 void al2_cmdloop(void); 109 110 /****************************************************************** 111 Externally visible functions defined in postproc.c 112 ******************************************************************/ 113 114 void al2_oo(int); 115 void al2_sc(int); 116 void al2_cycles(void); 117 void al2_normcl(Logic); 118 void al2_cc(int); 119 void al2_rc(int,int); 120 void al2_dw(Wlist*); 121 void al2_rep(int, int); 122 void al2_aep(int); 123 124