File: enum.h

package info (click to toggle)
magnus 20060324-5.1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 19,436 kB
  • ctags: 20,462
  • sloc: cpp: 130,217; ansic: 37,090; tcl: 10,970; perl: 1,109; makefile: 966; sh: 403; yacc: 372; csh: 57; awk: 33; asm: 10
file content (216 lines) | stat: -rw-r--r-- 7,086 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
/* Include file for enum.c */
/* delete the following in Init: 
*                             if (COMP_PCT == 0) \
                                COMP_PCT = 20; \
* 24/11/1993
*/
#include "ded.h"
#include "coset_def.h"
#include "miscellaneous.h"
#include "tc.h"
#include "ct.h"

#ifndef __ENUM__
#define __ENUM__
#define Adjust_HLTLMT	HLTLMT += Hltlmt * ncol; \
			if(HLTLMT >= NEXTDF) {\
				HLTLMT = Hltlmt * ncol; \
				DEFHLT = COSET1; \
			}
#define CheckPdl      while (CT(PDL_ROW[be],PDL_COL[be]) != 0) { \
                                gap--; \
                                ded_fill_pd++; \
                                be = Step(be); \
                                if (Nopd) \
                                        break; \
                        }

#define DeadKN_Fel             CT(KN_Fel, 1) < 0
#define DeadKN_Hlt	CT(KN_Hlt,1) < 0
#define Ded_Redundant	CT(irow, 1) < 0 || CT(ires, 1) < 0

#define Fill_KN_Hlt(row,col,k)	CT(k,inv_to_col[col]) = row; \
				CT(row,col) = k; \
				if(!VeryFirst) \
					{ Save_ded(row,col); }
#define Fill_kn(kn,col,k)  CT(k,inv_to_col[col]) = kn; \
                            CT(kn,col) = k; \
                            { Save_ded(kn,col); } 
#define Fill_kn_nopd(kn,col,k)   { Fill_kn(kn,col,k); } \
				   fill_kn_nopd++
#define Fill_kn_havepd(kn,col,k)  { Fill_kn(kn,col,k); } \
                                  fill_kn_havepd++

#define Fill_kn_deadpdl(kn,col,k)  { Fill_kn(kn,col,k); } \
                            fill_kn_deadpdl++

#define Fill_pd(kn,col,k)   { Fill_kn(kn,col,k); } \
                             fill_pd++
#define Fix_pd_counters		gap++; \
                                maxgap++

#define Get_edp(beg,end,gen)    beg=&EDP[EDP_BEG[gen]]; \
                                end=&EDP[EDP_END[gen]]

#define Get_pd(row,col)    row = PDL_ROW[be]; \
                            col = PDL_COL[be]; \
                            be = Step(be)

#define HaveDed                  DED_PT<DED_END
#define Havepd              be != ed
#define HaveSubgGen 	RELATORS_IN_SUBGROUP >= 0 || NSGPG		
/* test if fill factor is APPROXIMATELY violated */
/*
#define HaveToFillKn 	Addr2Num(KN_Fel) * iabs(FILL_FACTOR) - NALIVE  < 0
*/
#define HaveToFillKn   KN_Fel * iabs(FILL_FACTOR) - NEXTDF  < 0
#define Icol_Is_Involutory	icol == inv_to_col[icol] && irow < ires
#define Index_return      tc_text(12, tc_pvar); \
if(DEADDE) \
printf("%d DEDUCTIONS ARE DISCARDED\n",DEADDE); \
                            INDEX = TRUE; \
                            if (MSGLVE) { \
printf("max PDL=%d  filled (PDL=%d kn=%d ff=%d PDL deductions=%d dead PDL=%d)\n",maxgap,fill_pd,fill_kn_nopd,fill_kn_havepd,ded_fill_pd,fill_kn_deadpdl); \
                          } \
                          return

#define Init                ct = COSET_TABLE;  \
                            inv_to_col = INV_TO_COL;  \
                            ncol = NCOL; \
			    INDEX = FALSE; \
                            INDEX1 = FALSE; \
                            DEDWNG = FALSE; \
			    DEADDE = 0; \
			    HOLES = 0; \
			    STDCT = FALSE; \
			    Felsch_phase = TRUE; \
			    KN_Hlt = KN_Fel = COSET1; \
			    TABROW = 0; \
                            OVERFL = FALSE


#define Init_fel_counters  ded_fill_pd = 0; \
                            fill_kn_nopd = 0; \
                            fill_kn_havepd = 0; \
                            fill_kn_deadpdl = 0; \
                            fill_pd = 0; \
                            gap = 0; \
                            maxgap = 0; \
			    DED_PT = DED_END; \
                            Init_pdl  

#define Init_enum          Init_coset1; \
                            MAXCOS = 1; \
                            TOTCOS = 1; \
			    NALIVE = 1; \
			   STATUS = "SG"; \
			if (MSGLVE) { \
				LVE = (MSGLVE>0)? MSGLVE : -MSGLVE; \
				INTNAL = LVE; \
			} else { \
				LVE = 0; \
				INTNAL = 0; \
			}\
			OLDNAL = 1; COMPCT = TRUE; \
			HOLES = 0; \
			NEXTDF = COSET1 + COSET
#define Init_LMT	FELLMT = F_TYPE_DEF; \
			if(A_FACTOR < 0) \
				HLTLMT = -A_FACTOR; \
			else \
				HLTLMT = A_FACTOR; \
			if (FELLMT == 0) { \
				VeryFirst = TRUE; \
			} else { \
				VeryFirst = FALSE; \
			} \
			defhlt = 0; \
			deffel = 0
#define Init_status	if (FELLMT == 0) { \
                                STATUS = "RD"; \
                        } else { \
                                STATUS = "CD"; \
                        } 

#define Init_pdl           be = ed = gap = 0 
/* macros for perfered definition list:  */
#define List_length	255
#define Next_KN_Hlt	do KN_Hlt += COSET; \
			while((KN_Hlt < NEXTDF) && CT(KN_Hlt,1) < 0 );\
			if(KN_Hlt == NEXTDF) \
				 { Index_return; }			
#define NonInverse(irow,icol,ires)	j = inv_to_col[icol]; \
					if(j < icol) { \
						icol = j; \
						Swap(irow,ires); \
					} else if (icol == j && irow > ires) {\
						Swap(irow,ires); \
					} 
#define Nopd                be == ed
#define NoRelator	NDREL == 0
#define NotRestart	!restart
#define Output_fillfactor_etc	if(MSGLVE) \
					printf("Fill Factor=%d, CT Factor=%d,  RT Factor=%d\n",FILL_FACTOR,F_TYPE_DEF,A_FACTOR)
#define ProcVeryfirst	defhlt = 0; \
			STATUS = "TL"; \
                        tc_proc_ded(tc_pvar); \
			if (INDEX1) \
				{ Index_return; } \
			if (OVERFL) \
				return; \
			VeryFirst = FALSE; \
			if (HLTLMT == 0) { \
				FELLMT = 1000; \
				HLTLMT = FELLMT / (2 * REL_LEN); \
			}
#define ResetFelsch	deffel = 0; \
			STATUS  = "RD";  \
			Felsch_phase = FALSE
#define ResetHLT	defhlt = 0; \
			STATUS = "AL"; \
			if (A_FACTOR < 0) defhlt = HLTLMT; \
			if (KN_Fel < KN_Hlt) KN_Fel = KN_Hlt; \
			if (FELLMT) Felsch_phase = TRUE; \
			else \
				Felsch_phase = FALSE
			
#define Save_pd(row,col)   PDL_ROW[ed] = row; \
                            PDL_COL[ed] = col; \
                            ed = Step(ed); \
                            if (ed == be) \
                                  be = Step(be)


#define Set_ifront_iback_by_DEFHLT		ifront = iback = DEFHLT 
#define Set_ifront_iback        if(icol == *beg) { \
                                        iback = irow; ifront = ires; \
                                } else { \
                                        iback = ires; ifront = irow; \
                                }

#define Step(i)             (++i) & List_length

#define Test_time_limit;    if (LTIME == 0.000000) \
                                  continue; \
                            curtim = utl_second(); \
                            if (curtim > LTIME) { \
                	    	tc_text(20, tc_pvar); OVERFL = TRUE; \
                	    	return; \
        	    	    }        

#define TcCoinc(iback, ifront, tc_pvar)  if( *STATUS == 'C') \
						STATUS = "CC"; \
					 else \
						STATUS = "LC"; \
					 tc_coinc(iback, ifront, tc_pvar); \
					if( *STATUS == 'L') \
						STATUS = "LA"; \
					else \
						STATUS = "CD"; \
					Init_pdl
#define Tccoinc		STATUS = "RC"; \
			tc_coinc(iback, ifront, tc_pvar); \
                        STATUS = "RD"
#define	TcCompact(tc_pvar)	tc_compact(tc_pvar); \
				Init_pdl
#endif