My Project
debian-1:4.1.1-p2+ds-4build2
libpolys
polys
templates
p_MemCmp.h
Go to the documentation of this file.
1
/****************************************
2
* Computer Algebra System SINGULAR *
3
****************************************/
4
/***************************************************************
5
* File: p_MemCmp.h
6
* Purpose: macros for memory comparisons
7
* Author: obachman (Olaf Bachmann)
8
* Created: 8/00
9
*******************************************************************/
10
#ifndef P_MEM_CMP_H
11
#define P_MEM_CMP_H
12
13
/***************************************************************
14
*
15
* auxiallary macros
16
*
17
*******************************************************************/
18
#define _p_MemCmp_Declare(s1, s2) \
19
const unsigned long* _s1 = ((unsigned long*) s1); \
20
const unsigned long* _s2 = ((unsigned long*) s2); \
21
REGISTER unsigned long _v1; \
22
REGISTER unsigned long _v2
23
24
#define _p_MemCmp_Equal(i, s1, s2, actionE) \
25
do { _v1=((unsigned long*)s1)[i]; _v2=((unsigned long*)s2)[i]; if (_v1==_v2) actionE; }while (0)
26
#define _p_MemCmp_NotEqual(actionG, actionS) \
27
do {if (_v1 > _v2) actionG; actionS;} while (0)
28
29
#define _p_MemCmp_LengthOne_Equal(i, s1, s2, actionE) \
30
_p_MemCmp_Equal(i, s1, s2, actionE)
31
#define _p_MemCmp_LengthTwo_Equal(i, s1, s2, actionE) \
32
_p_MemCmp_Equal(i, s1, s2, _p_MemCmp_Equal(i+1, s1, s2, actionE))
33
#define _p_MemCmp_LengthThree_Equal(i, s1, s2, actionE) \
34
_p_MemCmp_LengthTwo_Equal(i, s1, s2, _p_MemCmp_Equal(i+2, s1, s2, actionE))
35
#define _p_MemCmp_LengthFour_Equal(i, s1, s2, actionE) \
36
_p_MemCmp_LengthThree_Equal(i, s1, s2, _p_MemCmp_Equal(i+3, s1, s2, actionE))
37
#define _p_MemCmp_LengthFive_Equal(i, s1, s2, actionE) \
38
_p_MemCmp_LengthFour_Equal(i, s1, s2, _p_MemCmp_Equal(i+4, s1, s2, actionE))
39
#define _p_MemCmp_LengthSix_Equal(i, s1, s2, actionE) \
40
_p_MemCmp_LengthFive_Equal(i, s1, s2, _p_MemCmp_Equal(i+5, s1, s2, actionE))
41
#define _p_MemCmp_LengthSeven_Equal(i, s1, s2, actionE) \
42
_p_MemCmp_LengthSix_Equal(i, s1, s2, _p_MemCmp_Equal(i+6, s1, s2, actionE))
43
#define _p_MemCmp_LengthEight_Equal(i, s1, s2, actionE) \
44
_p_MemCmp_LengthSeven_Equal(i, s1, s2, _p_MemCmp_Equal(i+7, s1, s2, actionE))
45
#define _p_MemCmp_LengthGeneral_Equal(i, s1, s2, length, actionE) \
46
do \
47
{ \
48
\
49
REGISTER unsigned long _i = (unsigned long) i; \
50
const unsigned long _l = \
51
(unsigned long) length + (unsigned long)i ; \
52
\
53
LengthGeneral_LoopTop: \
54
_v1 = s1[_i]; \
55
_v2 = s2[_i]; \
56
if (_v1 == _v2) \
57
{ \
58
_i++; \
59
if (_i == _l) actionE; \
60
else goto LengthGeneral_LoopTop; \
61
} \
62
} \
63
while (0)
64
65
/***************************************************************
66
*
67
* Pomog
68
*
69
*******************************************************************/
70
#define p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
71
do \
72
{ \
73
_p_MemCmp_Declare(s1,s2); \
74
_p_MemCmp_LengthOne_Equal(0, _s1, _s2, actionE); \
75
_p_MemCmp_NotEqual(actionG, actionS); \
76
} \
77
while (0)
78
#define p_MemCmp_LengthTwo_OrdPomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
79
do \
80
{ \
81
_p_MemCmp_Declare(s1,s2); \
82
_p_MemCmp_LengthTwo_Equal(0, _s1, _s2, actionE); \
83
_p_MemCmp_NotEqual(actionG, actionS); \
84
} \
85
while (0)
86
#define p_MemCmp_LengthThree_OrdPomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
87
do \
88
{ \
89
_p_MemCmp_Declare(s1,s2); \
90
_p_MemCmp_LengthThree_Equal(0, _s1, _s2, actionE); \
91
_p_MemCmp_NotEqual(actionG, actionS); \
92
} \
93
while (0)
94
#define p_MemCmp_LengthFour_OrdPomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
95
do \
96
{ \
97
_p_MemCmp_Declare(s1,s2); \
98
_p_MemCmp_LengthFour_Equal(0, _s1, _s2, actionE); \
99
_p_MemCmp_NotEqual(actionG, actionS); \
100
} \
101
while (0)
102
#define p_MemCmp_LengthFive_OrdPomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
103
do \
104
{ \
105
_p_MemCmp_Declare(s1,s2); \
106
_p_MemCmp_LengthFive_Equal(0, _s1, _s2, actionE); \
107
_p_MemCmp_NotEqual(actionG, actionS); \
108
} \
109
while (0)
110
#define p_MemCmp_LengthSix_OrdPomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
111
do \
112
{ \
113
_p_MemCmp_Declare(s1,s2); \
114
_p_MemCmp_LengthSix_Equal(0, _s1, _s2, actionE); \
115
_p_MemCmp_NotEqual(actionG, actionS); \
116
} \
117
while (0)
118
#define p_MemCmp_LengthSeven_OrdPomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
119
do \
120
{ \
121
_p_MemCmp_Declare(s1,s2); \
122
_p_MemCmp_LengthSeven_Equal(0, _s1, _s2, actionE); \
123
_p_MemCmp_NotEqual(actionG, actionS);; \
124
} \
125
while (0)
126
127
#define p_MemCmp_LengthEight_OrdPomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
128
do \
129
{ \
130
_p_MemCmp_Declare(s1,s2); \
131
_p_MemCmp_LengthEight_Equal(0, _s1, _s2, actionE); \
132
_p_MemCmp_NotEqual(actionG, actionS); \
133
} \
134
while (0)
135
#define p_MemCmp_LengthGeneral_OrdPomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
136
do \
137
{ \
138
_p_MemCmp_Declare(s1,s2); \
139
_p_MemCmp_LengthGeneral_Equal(0, _s1, _s2, length, actionE); \
140
_p_MemCmp_NotEqual(actionG, actionS); \
141
} \
142
while (0)
143
144
/***************************************************************
145
*
146
* Nomog
147
*
148
*******************************************************************/
149
#define p_MemCmp_LengthOne_OrdNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
150
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, actionE, actionS, actionG)
151
#define p_MemCmp_LengthTwo_OrdNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
152
p_MemCmp_LengthTwo_OrdPomog(s1, s2, length, ordsgn, actionE, actionS, actionG)
153
#define p_MemCmp_LengthThree_OrdNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
154
p_MemCmp_LengthThree_OrdPomog(s1, s2, length, ordsgn, actionE, actionS, actionG)
155
#define p_MemCmp_LengthFour_OrdNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
156
p_MemCmp_LengthFour_OrdPomog(s1, s2, length, ordsgn, actionE, actionS, actionG)
157
#define p_MemCmp_LengthFive_OrdNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
158
p_MemCmp_LengthFive_OrdPomog(s1, s2, length, ordsgn, actionE, actionS, actionG)
159
#define p_MemCmp_LengthSix_OrdNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
160
p_MemCmp_LengthSix_OrdPomog(s1, s2, length, ordsgn, actionE, actionS, actionG)
161
#define p_MemCmp_LengthSeven_OrdNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
162
p_MemCmp_LengthSeven_OrdPomog(s1, s2, length, ordsgn, actionE, actionS, actionG)
163
#define p_MemCmp_LengthEight_OrdNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
164
p_MemCmp_LengthEight_OrdPomog(s1, s2, length, ordsgn, actionE, actionS, actionG)
165
#define p_MemCmp_LengthGeneral_OrdNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
166
p_MemCmp_LengthGeneral_OrdPomog(s1, s2, length, ordsgn, actionE, actionS, actionG)
167
168
/***************************************************************
169
*
170
* PomogZero
171
*
172
*******************************************************************/
173
#define p_MemCmp_LengthTwo_OrdPomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
174
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
175
#define p_MemCmp_LengthThree_OrdPomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
176
p_MemCmp_LengthTwo_OrdPomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
177
#define p_MemCmp_LengthFour_OrdPomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
178
p_MemCmp_LengthThree_OrdPomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
179
#define p_MemCmp_LengthFive_OrdPomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
180
p_MemCmp_LengthFour_OrdPomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
181
#define p_MemCmp_LengthSix_OrdPomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
182
p_MemCmp_LengthFive_OrdPomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
183
#define p_MemCmp_LengthSeven_OrdPomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
184
p_MemCmp_LengthSix_OrdPomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
185
#define p_MemCmp_LengthEight_OrdPomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
186
p_MemCmp_LengthSeven_OrdPomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
187
#define p_MemCmp_LengthGeneral_OrdPomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
188
p_MemCmp_LengthGeneral_OrdPomog(s1, s2, (length) -1, ordsgn, actionE, actionG, actionS)
189
190
/***************************************************************
191
*
192
* NomogZero
193
*
194
*******************************************************************/
195
#define p_MemCmp_LengthTwo_OrdNomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
196
p_MemCmp_LengthOne_OrdNomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
197
#define p_MemCmp_LengthThree_OrdNomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
198
p_MemCmp_LengthTwo_OrdNomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
199
#define p_MemCmp_LengthFour_OrdNomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
200
p_MemCmp_LengthThree_OrdNomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
201
#define p_MemCmp_LengthFive_OrdNomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
202
p_MemCmp_LengthFour_OrdNomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
203
#define p_MemCmp_LengthSix_OrdNomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
204
p_MemCmp_LengthFive_OrdNomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
205
#define p_MemCmp_LengthSeven_OrdNomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
206
p_MemCmp_LengthSix_OrdNomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
207
#define p_MemCmp_LengthEight_OrdNomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
208
p_MemCmp_LengthSeven_OrdNomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
209
#define p_MemCmp_LengthGeneral_OrdNomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
210
p_MemCmp_LengthGeneral_OrdNomog(s1, s2, (length) -1, ordsgn, actionE, actionG, actionS)
211
212
/***************************************************************
213
*
214
* NegPomog
215
*
216
*******************************************************************/
217
#define p_MemCmp_LengthTwo_OrdNegPomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
218
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
219
_p_MemCmp_LengthOne_Equal(1, _s2, _s1,actionE), \
220
actionS, actionG)
221
#define p_MemCmp_LengthThree_OrdNegPomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
222
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
223
_p_MemCmp_LengthTwo_Equal(1, _s2, _s1, actionE), \
224
actionS, actionG)
225
#define p_MemCmp_LengthFour_OrdNegPomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
226
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
227
_p_MemCmp_LengthThree_Equal(1, _s2, _s1, actionE), \
228
actionS, actionG)
229
#define p_MemCmp_LengthFive_OrdNegPomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
230
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
231
_p_MemCmp_LengthFour_Equal(1, _s2, _s1, actionE), \
232
actionS, actionG)
233
#define p_MemCmp_LengthSix_OrdNegPomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
234
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
235
_p_MemCmp_LengthFive_Equal(1, _s2, _s1, actionE), \
236
actionS, actionG)
237
#define p_MemCmp_LengthSeven_OrdNegPomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
238
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
239
_p_MemCmp_LengthSix_Equal(1, _s2, _s1, actionE), \
240
actionS, actionG)
241
#define p_MemCmp_LengthEight_OrdNegPomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
242
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
243
_p_MemCmp_LengthSeven_Equal(1, _s2, _s1, actionE), \
244
actionS, actionG)
245
#define p_MemCmp_LengthGeneral_OrdNegPomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
246
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
247
_p_MemCmp_LengthGeneral_Equal(1, _s2, _s1, (length) -1, actionE), \
248
actionS, actionG)
249
250
/***************************************************************
251
*
252
* PomogNeg
253
*
254
*******************************************************************/
255
#define p_MemCmp_LengthTwo_OrdPomogNeg(s1, s2, length, ordsgn, actionE, actionG, actionS) \
256
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
257
_p_MemCmp_Equal(1, _s2, _s1, actionE), \
258
actionG, actionS)
259
#define p_MemCmp_LengthThree_OrdPomogNeg(s1, s2, length, ordsgn, actionE, actionG, actionS) \
260
p_MemCmp_LengthTwo_OrdPomog(s1, s2, length, ordsgn, \
261
_p_MemCmp_Equal(2, _s2, _s1, actionE), \
262
actionG, actionS)
263
#define p_MemCmp_LengthFour_OrdPomogNeg(s1, s2, length, ordsgn, actionE, actionG, actionS) \
264
p_MemCmp_LengthThree_OrdPomog(s1, s2, length, ordsgn, \
265
_p_MemCmp_Equal(3, _s2, _s1, actionE), \
266
actionG, actionS)
267
#define p_MemCmp_LengthFive_OrdPomogNeg(s1, s2, length, ordsgn, actionE, actionG, actionS) \
268
p_MemCmp_LengthFour_OrdPomog(s1, s2, length, ordsgn, \
269
_p_MemCmp_Equal(4, _s2, _s1, actionE), \
270
actionG, actionS)
271
#define p_MemCmp_LengthSix_OrdPomogNeg(s1, s2, length, ordsgn, actionE, actionG, actionS) \
272
p_MemCmp_LengthFive_OrdPomog(s1, s2, length, ordsgn, \
273
_p_MemCmp_Equal(5, _s2, _s1, actionE), \
274
actionG, actionS)
275
#define p_MemCmp_LengthSeven_OrdPomogNeg(s1, s2, length, ordsgn, actionE, actionG, actionS) \
276
p_MemCmp_LengthSix_OrdPomog(s1, s2, length, ordsgn, \
277
_p_MemCmp_Equal(6, _s2, _s1, actionE), \
278
actionG, actionS)
279
#define p_MemCmp_LengthEight_OrdPomogNeg(s1, s2, length, ordsgn, actionE, actionG, actionS) \
280
p_MemCmp_LengthSeven_OrdPomog(s1, s2, length, ordsgn, \
281
_p_MemCmp_Equal(7, _s2, _s1, actionE), \
282
actionG, actionS)
283
#define p_MemCmp_LengthGeneral_OrdPomogNeg(s1, s2, length, ordsgn, actionE, actionG, actionS) \
284
p_MemCmp_LengthGeneral_OrdPomog(s1, s2, (length-1), ordsgn, \
285
_p_MemCmp_Equal(_i, _s2, _s1, actionE), \
286
actionG, actionS)
287
288
/***************************************************************
289
*
290
* PosNomog
291
*
292
*******************************************************************/
293
#define p_MemCmp_LengthThree_OrdPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
294
p_MemCmp_LengthThree_OrdNegPomog(s1, s2, length, ordsgn, actionE, actionS, actionG)
295
#define p_MemCmp_LengthFour_OrdPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
296
p_MemCmp_LengthFour_OrdNegPomog(s1, s2, length, ordsgn, actionE, actionS, actionG)
297
#define p_MemCmp_LengthFive_OrdPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
298
p_MemCmp_LengthFive_OrdNegPomog(s1, s2, length, ordsgn, actionE, actionS, actionG)
299
#define p_MemCmp_LengthSix_OrdPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
300
p_MemCmp_LengthSix_OrdNegPomog(s1, s2, length, ordsgn, actionE, actionS, actionG)
301
#define p_MemCmp_LengthSeven_OrdPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
302
p_MemCmp_LengthSeven_OrdNegPomog(s1, s2, length, ordsgn, actionE, actionS, actionG)
303
#define p_MemCmp_LengthEight_OrdPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
304
p_MemCmp_LengthEight_OrdNegPomog(s1, s2, length, ordsgn, actionE, actionS, actionG)
305
#define p_MemCmp_LengthGeneral_OrdPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
306
p_MemCmp_LengthGeneral_OrdNegPomog(s1, s2, length, ordsgn, actionE, actionS, actionG)
307
308
/***************************************************************
309
*
310
* NomogPos
311
*
312
*******************************************************************/
313
#define p_MemCmp_LengthThree_OrdNomogPos(s1, s2, length, ordsgn, actionE, actionG, actionS) \
314
p_MemCmp_LengthThree_OrdPomogNeg(s1, s2, length, ordsgn, actionE, actionS, actionG)
315
#define p_MemCmp_LengthFour_OrdNomogPos(s1, s2, length, ordsgn, actionE, actionG, actionS) \
316
p_MemCmp_LengthFour_OrdPomogNeg(s1, s2, length, ordsgn, actionE, actionS, actionG)
317
#define p_MemCmp_LengthFive_OrdNomogPos(s1, s2, length, ordsgn, actionE, actionG, actionS) \
318
p_MemCmp_LengthFive_OrdPomogNeg(s1, s2, length, ordsgn, actionE, actionS, actionG)
319
#define p_MemCmp_LengthSix_OrdNomogPos(s1, s2, length, ordsgn, actionE, actionG, actionS) \
320
p_MemCmp_LengthSix_OrdPomogNeg(s1, s2, length, ordsgn, actionE, actionS, actionG)
321
#define p_MemCmp_LengthSeven_OrdNomogPos(s1, s2, length, ordsgn, actionE, actionG, actionS) \
322
p_MemCmp_LengthSeven_OrdPomogNeg(s1, s2, length, ordsgn, actionE, actionS, actionG)
323
#define p_MemCmp_LengthEight_OrdNomogPos(s1, s2, length, ordsgn, actionE, actionG, actionS) \
324
p_MemCmp_LengthEight_OrdPomogNeg(s1, s2, length, ordsgn, actionE, actionS, actionG)
325
#define p_MemCmp_LengthGeneral_OrdNomogPos(s1, s2, length, ordsgn, actionE, actionG, actionS) \
326
p_MemCmp_LengthGeneral_OrdPomogNeg(s1, s2, length, ordsgn, actionE, actionS, actionG)
327
328
329
/***************************************************************
330
*
331
* PomogNegZero
332
*
333
*******************************************************************/
334
#define p_MemCmp_LengthThree_OrdPomogNegZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
335
p_MemCmp_LengthTwo_OrdPomogNeg(s1, s2, length, ordsgn, actionE, actionG, actionS)
336
#define p_MemCmp_LengthFour_OrdPomogNegZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
337
p_MemCmp_LengthThree_OrdPomogNeg(s1, s2, length, ordsgn, actionE, actionG, actionS)
338
#define p_MemCmp_LengthFive_OrdPomogNegZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
339
p_MemCmp_LengthFour_OrdPomogNeg(s1, s2, length, ordsgn, actionE, actionG, actionS)
340
#define p_MemCmp_LengthSix_OrdPomogNegZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
341
p_MemCmp_LengthFive_OrdPomogNeg(s1, s2, length, ordsgn, actionE, actionG, actionS)
342
#define p_MemCmp_LengthSeven_OrdPomogNegZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
343
p_MemCmp_LengthSix_OrdPomogNeg(s1, s2, length, ordsgn, actionE, actionG, actionS)
344
#define p_MemCmp_LengthEight_OrdPomogNegZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
345
p_MemCmp_LengthSeven_OrdPomogNeg(s1, s2, length, ordsgn, actionE, actionG, actionS)
346
#define p_MemCmp_LengthGeneral_OrdPomogNegZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
347
p_MemCmp_LengthGeneral_OrdPomogNeg(s1, s2, (length) -1, ordsgn, actionE, actionG, actionS)
348
349
/***************************************************************
350
*
351
* NegPomogZero
352
*
353
*******************************************************************/
354
#define p_MemCmp_LengthThree_OrdNegPomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
355
p_MemCmp_LengthTwo_OrdNegPomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
356
#define p_MemCmp_LengthFour_OrdNegPomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
357
p_MemCmp_LengthThree_OrdNegPomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
358
#define p_MemCmp_LengthFive_OrdNegPomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
359
p_MemCmp_LengthFour_OrdNegPomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
360
#define p_MemCmp_LengthSix_OrdNegPomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
361
p_MemCmp_LengthFive_OrdNegPomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
362
#define p_MemCmp_LengthSeven_OrdNegPomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
363
p_MemCmp_LengthSix_OrdNegPomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
364
#define p_MemCmp_LengthEight_OrdNegPomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
365
p_MemCmp_LengthSeven_OrdNegPomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
366
#define p_MemCmp_LengthGeneral_OrdNegPomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
367
p_MemCmp_LengthGeneral_OrdNegPomog(s1, s2, (length) -1, ordsgn, actionE, actionG, actionS)
368
369
/***************************************************************
370
*
371
* NomogPosZero
372
*
373
*******************************************************************/
374
#define p_MemCmp_LengthFour_OrdNomogPosZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
375
p_MemCmp_LengthThree_OrdNomogPos(s1, s2, length, ordsgn, actionE, actionG, actionS)
376
#define p_MemCmp_LengthFive_OrdNomogPosZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
377
p_MemCmp_LengthFour_OrdNomogPos(s1, s2, length, ordsgn, actionE, actionG, actionS)
378
#define p_MemCmp_LengthSix_OrdNomogPosZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
379
p_MemCmp_LengthFive_OrdNomogPos(s1, s2, length, ordsgn, actionE, actionG, actionS)
380
#define p_MemCmp_LengthSeven_OrdNomogPosZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
381
p_MemCmp_LengthSix_OrdNomogPos(s1, s2, length, ordsgn, actionE, actionG, actionS)
382
#define p_MemCmp_LengthEight_OrdNomogPosZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
383
p_MemCmp_LengthSeven_OrdNomogPos(s1, s2, length, ordsgn, actionE, actionG, actionS)
384
#define p_MemCmp_LengthGeneral_OrdNomogPosZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
385
p_MemCmp_LengthGeneral_OrdNomogPos(s1, s2, (length) -1, ordsgn, actionE, actionG, actionS)
386
387
/***************************************************************
388
*
389
* PosNomogZero
390
*
391
*******************************************************************/
392
#define p_MemCmp_LengthFour_OrdPosNomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
393
p_MemCmp_LengthThree_OrdPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
394
#define p_MemCmp_LengthFive_OrdPosNomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
395
p_MemCmp_LengthFour_OrdPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
396
#define p_MemCmp_LengthSix_OrdPosNomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
397
p_MemCmp_LengthFive_OrdPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
398
#define p_MemCmp_LengthSeven_OrdPosNomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
399
p_MemCmp_LengthSix_OrdPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
400
#define p_MemCmp_LengthEight_OrdPosNomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
401
p_MemCmp_LengthSeven_OrdPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
402
#define p_MemCmp_LengthGeneral_OrdPosNomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
403
p_MemCmp_LengthGeneral_OrdPosNomog(s1, s2, (length) -1, ordsgn, actionE, actionG, actionS)
404
405
/***************************************************************
406
*
407
* PosPosNomog
408
*
409
*******************************************************************/
410
#define p_MemCmp_LengthThree_OrdPosPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
411
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
412
_p_MemCmp_Equal(1, _s1, _s2, \
413
_p_MemCmp_LengthOne_Equal(2, _s2, _s1, actionE)), \
414
actionG, actionS)
415
#define p_MemCmp_LengthFour_OrdPosPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
416
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
417
_p_MemCmp_Equal(1, _s1, _s2, \
418
_p_MemCmp_LengthTwo_Equal(2, _s2, _s1, actionE)), \
419
actionG, actionS)
420
#define p_MemCmp_LengthFive_OrdPosPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
421
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
422
_p_MemCmp_Equal(1, _s1, _s2, \
423
_p_MemCmp_LengthThree_Equal(2, _s2, _s1, actionE)), \
424
actionG, actionS)
425
#define p_MemCmp_LengthSix_OrdPosPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
426
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
427
_p_MemCmp_Equal(1, _s1, _s2, \
428
_p_MemCmp_LengthFour_Equal(2, _s2, _s1, actionE)), \
429
actionG, actionS)
430
#define p_MemCmp_LengthSeven_OrdPosPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
431
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
432
_p_MemCmp_Equal(1, _s1, _s2, \
433
_p_MemCmp_LengthFive_Equal(2, _s2, _s1, actionE)), \
434
actionG, actionS)
435
#define p_MemCmp_LengthEight_OrdPosPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
436
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
437
_p_MemCmp_Equal(1, _s1, _s2, \
438
_p_MemCmp_LengthSix_Equal(2, _s2, _s1, actionE)), \
439
actionG, actionS)
440
#define p_MemCmp_LengthGeneral_OrdPosPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
441
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
442
_p_MemCmp_Equal(1, _s1, _s2, \
443
_p_MemCmp_LengthGeneral_Equal(2,_s2,_s1,(length-2), actionE)), \
444
actionG, actionS)
445
446
/***************************************************************
447
*
448
* NegPosNomog
449
*
450
*******************************************************************/
451
#define p_MemCmp_LengthThree_OrdNegPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
452
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
453
_p_MemCmp_Equal(1, _s2, _s1, \
454
_p_MemCmp_LengthOne_Equal(2, _s1, _s2, actionE)), \
455
actionS, actionG)
456
#define p_MemCmp_LengthFour_OrdNegPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
457
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
458
_p_MemCmp_Equal(1, _s2, _s1, \
459
_p_MemCmp_LengthTwo_Equal(2, _s1, _s2, actionE)), \
460
actionS, actionG)
461
#define p_MemCmp_LengthFive_OrdNegPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
462
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
463
_p_MemCmp_Equal(1, _s2, _s1, \
464
_p_MemCmp_LengthThree_Equal(2, _s1, _s2, actionE)), \
465
actionS, actionG)
466
#define p_MemCmp_LengthSix_OrdNegPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
467
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
468
_p_MemCmp_Equal(1, _s2, _s1, \
469
_p_MemCmp_LengthFour_Equal(2, _s1, _s2, actionE)), \
470
actionS, actionG)
471
#define p_MemCmp_LengthSeven_OrdNegPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
472
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
473
_p_MemCmp_Equal(1, _s2, _s1, \
474
_p_MemCmp_LengthFive_Equal(2, _s1, _s2, actionE)), \
475
actionS, actionG)
476
#define p_MemCmp_LengthEight_OrdNegPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
477
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
478
_p_MemCmp_Equal(1, _s2, _s1, \
479
_p_MemCmp_LengthSix_Equal(2, _s1, _s2, actionE)), \
480
actionS, actionG)
481
#define p_MemCmp_LengthGeneral_OrdNegPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS) \
482
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
483
_p_MemCmp_Equal(1, _s2, _s1, \
484
_p_MemCmp_LengthGeneral_Equal(2, _s1,_s2, \
485
(length-2) , actionE)), \
486
actionS, actionG)
487
488
/***************************************************************
489
*
490
* PosNomogPos
491
*
492
*******************************************************************/
493
#define p_MemCmp_LengthThree_OrdPosNomogPos(s1, s2, length, ordsgn, actionE, actionG, actionS) \
494
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
495
_p_MemCmp_LengthOne_Equal(1, _s2, _s1, \
496
_p_MemCmp_LengthOne_Equal(2, _s1, _s2, actionE)), \
497
actionG, actionS)
498
#define p_MemCmp_LengthFour_OrdPosNomogPos(s1, s2, length, ordsgn, actionE, actionG, actionS) \
499
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
500
_p_MemCmp_LengthTwo_Equal(1, _s2, _s1, \
501
_p_MemCmp_Equal(3, _s1, _s2, actionE)), \
502
actionG, actionS)
503
#define p_MemCmp_LengthFive_OrdPosNomogPos(s1, s2, length, ordsgn, actionE, actionG, actionS) \
504
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
505
_p_MemCmp_LengthThree_Equal(1, _s2, _s1, \
506
_p_MemCmp_Equal(4, _s1, _s2, actionE)), \
507
actionG, actionS)
508
#define p_MemCmp_LengthSix_OrdPosNomogPos(s1, s2, length, ordsgn, actionE, actionG, actionS) \
509
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
510
_p_MemCmp_LengthFour_Equal(1, _s2, _s1, \
511
_p_MemCmp_Equal(5, _s1, _s2, actionE)), \
512
actionG, actionS)
513
#define p_MemCmp_LengthSeven_OrdPosNomogPos(s1, s2, length, ordsgn, actionE, actionG, actionS) \
514
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
515
_p_MemCmp_LengthFive_Equal(1, _s2, _s1, \
516
_p_MemCmp_Equal(6, _s1, _s2, actionE)), \
517
actionG, actionS)
518
#define p_MemCmp_LengthEight_OrdPosNomogPos(s1, s2, length, ordsgn, actionE, actionG, actionS) \
519
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
520
_p_MemCmp_LengthSix_Equal(1, _s2, _s1, \
521
_p_MemCmp_Equal(7, _s1, _s2, actionE)), \
522
actionG, actionS)
523
#define p_MemCmp_LengthGeneral_OrdPosNomogPos(s1, s2, length, ordsgn, actionE, actionG, actionS) \
524
p_MemCmp_LengthOne_OrdPomog(s1, s2, length, ordsgn, \
525
_p_MemCmp_LengthGeneral_Equal(1, _s2, _s1, (length - 2), \
526
_p_MemCmp_Equal(_i, _s1, _s2, actionE)), \
527
actionG, actionS)
528
529
530
/***************************************************************
531
*
532
* PosPosNomogZero
533
*
534
*******************************************************************/
535
#define p_MemCmp_LengthFour_OrdPosPosNomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
536
p_MemCmp_LengthThree_OrdPosPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
537
#define p_MemCmp_LengthFive_OrdPosPosNomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
538
p_MemCmp_LengthFour_OrdPosPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
539
#define p_MemCmp_LengthSix_OrdPosPosNomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
540
p_MemCmp_LengthFive_OrdPosPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
541
#define p_MemCmp_LengthSeven_OrdPosPosNomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
542
p_MemCmp_LengthSix_OrdPosPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
543
#define p_MemCmp_LengthEight_OrdPosPosNomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
544
p_MemCmp_LengthSeven_OrdPosPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
545
#define p_MemCmp_LengthGeneral_OrdPosPosNomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
546
p_MemCmp_LengthGeneral_OrdPosPosNomog(s1, s2, (length) -1, ordsgn, actionE, actionG, actionS)
547
548
/***************************************************************
549
*
550
* PosNomogPosZero
551
*
552
*******************************************************************/
553
#define p_MemCmp_LengthFour_OrdPosNomogPosZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
554
p_MemCmp_LengthThree_OrdPosNomogPos(s1, s2, length, ordsgn, actionE, actionG, actionS)
555
#define p_MemCmp_LengthFive_OrdPosNomogPosZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
556
p_MemCmp_LengthFour_OrdPosNomogPos(s1, s2, length, ordsgn, actionE, actionG, actionS)
557
#define p_MemCmp_LengthSix_OrdPosNomogPosZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
558
p_MemCmp_LengthFive_OrdPosNomogPos(s1, s2, length, ordsgn, actionE, actionG, actionS)
559
#define p_MemCmp_LengthSeven_OrdPosNomogPosZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
560
p_MemCmp_LengthSix_OrdPosNomogPos(s1, s2, length, ordsgn, actionE, actionG, actionS)
561
#define p_MemCmp_LengthEight_OrdPosNomogPosZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
562
p_MemCmp_LengthSeven_OrdPosNomogPos(s1, s2, length, ordsgn, actionE, actionG, actionS)
563
#define p_MemCmp_LengthGeneral_OrdPosNomogPosZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
564
p_MemCmp_LengthGeneral_OrdPosNomogPos(s1, s2, (length) -1, ordsgn, actionE, actionG, actionS)
565
566
/***************************************************************
567
*
568
* NegPosNomogZero
569
*
570
*******************************************************************/
571
#define p_MemCmp_LengthFour_OrdNegPosNomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
572
p_MemCmp_LengthThree_OrdNegPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
573
#define p_MemCmp_LengthFive_OrdNegPosNomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
574
p_MemCmp_LengthFour_OrdNegPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
575
#define p_MemCmp_LengthSix_OrdNegPosNomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
576
p_MemCmp_LengthFive_OrdNegPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
577
#define p_MemCmp_LengthSeven_OrdNegPosNomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
578
p_MemCmp_LengthSix_OrdNegPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
579
#define p_MemCmp_LengthEight_OrdNegPosNomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
580
p_MemCmp_LengthSeven_OrdNegPosNomog(s1, s2, length, ordsgn, actionE, actionG, actionS)
581
#define p_MemCmp_LengthGeneral_OrdNegPosNomogZero(s1, s2, length, ordsgn, actionE, actionG, actionS) \
582
p_MemCmp_LengthGeneral_OrdNegPosNomog(s1, s2, (length) -1, ordsgn, actionE, actionG, actionS)
583
584
585
/***************************************************************
586
*
587
* OrdGeneral
588
*
589
*******************************************************************/
590
#define _p_MemCmp_OrdGeneral_Declare(s1, s2) \
591
const unsigned long* _s1 = ((unsigned long*) s1); \
592
const unsigned long* _s2 = ((unsigned long*) s2); \
593
REGISTER unsigned long _v1; \
594
REGISTER unsigned long _v2; \
595
REGISTER unsigned long _i
596
597
#define _p_MemCmp_OrdGeneral_NotEqual(ordsgn, actionG, actionS) \
598
do \
599
{ \
600
const long* _ordsgn = (long*) ordsgn; \
601
if (_v1 > _v2) \
602
{ \
603
if (_ordsgn[_i] == 1) actionG; \
604
actionS; \
605
} \
606
if (_ordsgn[_i] == 1) actionS; \
607
actionG; \
608
} \
609
while (0)
610
611
#define _p_MemCmp_OrdGeneral(i, actionE) \
612
do \
613
{ \
614
_i = i; \
615
_v1 = _s1[i]; \
616
_v2 = _s2[i]; \
617
if (_v1 == _v2) actionE; \
618
} \
619
while(0)
620
621
#define _p_MemCmp_LengthTwo_OrdGeneral(actionE) \
622
_p_MemCmp_OrdGeneral(0, _p_MemCmp_OrdGeneral(1, actionE))
623
624
#define _p_MemCmp_LengthThree_OrdGeneral(actionE) \
625
_p_MemCmp_LengthTwo_OrdGeneral(_p_MemCmp_OrdGeneral(2, actionE))
626
627
#define _p_MemCmp_LengthFour_OrdGeneral(actionE) \
628
_p_MemCmp_LengthThree_OrdGeneral(_p_MemCmp_OrdGeneral(3, actionE))
629
630
#define _p_MemCmp_LengthFive_OrdGeneral(actionE) \
631
_p_MemCmp_LengthFour_OrdGeneral(_p_MemCmp_OrdGeneral(4, actionE))
632
633
#define _p_MemCmp_LengthSix_OrdGeneral(actionE) \
634
_p_MemCmp_LengthFive_OrdGeneral(_p_MemCmp_OrdGeneral(5, actionE))
635
636
#define _p_MemCmp_LengthSeven_OrdGeneral(actionE) \
637
_p_MemCmp_LengthSix_OrdGeneral(_p_MemCmp_OrdGeneral(6, actionE))
638
639
#define _p_MemCmp_LengthEight_OrdGeneral(actionE) \
640
_p_MemCmp_LengthSeven_OrdGeneral(_p_MemCmp_OrdGeneral(7, actionE))
641
642
#define p_MemCmp_LengthOne_OrdGeneral(s1, s2, length, ordsgn, actionE, actionG, actionS) \
643
do \
644
{ \
645
_p_MemCmp_OrdGeneral_Declare(s1, s2); \
646
_p_MemCmp_OrdGeneral(0, actionE); \
647
_p_MemCmp_OrdGeneral_NotEqual(ordsgn, actionG, actionS); \
648
} \
649
while (0)
650
651
#define p_MemCmp_LengthTwo_OrdGeneral(s1, s2, length, ordsgn, actionE, actionG, actionS) \
652
do \
653
{ \
654
_p_MemCmp_OrdGeneral_Declare(s1, s2); \
655
_p_MemCmp_LengthTwo_OrdGeneral(actionE); \
656
_p_MemCmp_OrdGeneral_NotEqual(ordsgn, actionG, actionS); \
657
} \
658
while (0)
659
660
#define p_MemCmp_LengthThree_OrdGeneral(s1, s2, length, ordsgn, actionE, actionG, actionS) \
661
do \
662
{ \
663
_p_MemCmp_OrdGeneral_Declare(s1, s2); \
664
_p_MemCmp_LengthThree_OrdGeneral(actionE); \
665
_p_MemCmp_OrdGeneral_NotEqual(ordsgn, actionG, actionS); \
666
} \
667
while (0)
668
669
#define p_MemCmp_LengthFour_OrdGeneral(s1, s2, length, ordsgn, actionE, actionG, actionS) \
670
do \
671
{ \
672
_p_MemCmp_OrdGeneral_Declare(s1, s2); \
673
_p_MemCmp_LengthFour_OrdGeneral(actionE); \
674
_p_MemCmp_OrdGeneral_NotEqual(ordsgn, actionG, actionS); \
675
} \
676
while (0)
677
678
#define p_MemCmp_LengthFive_OrdGeneral(s1, s2, length, ordsgn, actionE, actionG, actionS) \
679
do \
680
{ \
681
_p_MemCmp_OrdGeneral_Declare(s1, s2); \
682
_p_MemCmp_LengthFive_OrdGeneral(actionE); \
683
_p_MemCmp_OrdGeneral_NotEqual(ordsgn, actionG, actionS); \
684
} \
685
while (0)
686
687
#define p_MemCmp_LengthSix_OrdGeneral(s1, s2, length, ordsgn, actionE, actionG, actionS) \
688
do \
689
{ \
690
_p_MemCmp_OrdGeneral_Declare(s1, s2); \
691
_p_MemCmp_LengthSix_OrdGeneral(actionE); \
692
_p_MemCmp_OrdGeneral_NotEqual(ordsgn, actionG, actionS); \
693
} \
694
while (0)
695
696
#define p_MemCmp_LengthSeven_OrdGeneral(s1, s2, length, ordsgn, actionE, actionG, actionS) \
697
do \
698
{ \
699
_p_MemCmp_OrdGeneral_Declare(s1, s2); \
700
_p_MemCmp_LengthSeven_OrdGeneral(actionE); \
701
_p_MemCmp_OrdGeneral_NotEqual(ordsgn, actionG, actionS); \
702
} \
703
while (0)
704
705
#define p_MemCmp_LengthEight_OrdGeneral(s1, s2, length, ordsgn, actionE, actionG, actionS) \
706
do \
707
{ \
708
_p_MemCmp_OrdGeneral_Declare(s1, s2); \
709
_p_MemCmp_LengthEight_OrdGeneral(actionE); \
710
_p_MemCmp_OrdGeneral_NotEqual(ordsgn, actionG, actionS); \
711
} \
712
while (0)
713
714
/***************************************************************
715
*
716
* Last but not least LengthGeneral_OrdGeneral
717
*
718
*******************************************************************/
719
#define p_MemCmp_LengthGeneral_OrdGeneral(s1, s2, length, ordsgn, actionE, actionG, actionS) \
720
do \
721
{ \
722
_p_MemCmp_OrdGeneral_Declare(s1, s2); \
723
const unsigned long _l = (unsigned long) length; \
724
\
725
_i=0; \
726
\
727
LengthGeneral_OrdGeneral_LoopTop: \
728
_v1 = _s1[_i]; \
729
_v2 = _s2[_i]; \
730
if (_v1 == _v2) \
731
{ \
732
_i++; \
733
if (_i == _l) actionE; \
734
goto LengthGeneral_OrdGeneral_LoopTop; \
735
} \
736
\
737
_p_MemCmp_OrdGeneral_NotEqual(ordsgn, actionG, actionS); \
738
} \
739
while (0)
740
741
// or, in other (less efficient) words
742
#define p_MemCmp_LengthGeneral_OrdGeneral2(s1, s2, length, ordsgn, actionE, actionG, actionS) \
743
do \
744
{ \
745
int _i; \
746
\
747
for (_i=0; _i<length;_i++) \
748
{ \
749
if (s1[_i] != s2[_i]) \
750
{ \
751
if (s1[_i] > s2[_i]) \
752
{ \
753
if (ordsgn[_i] == 1) \
754
actionG; \
755
actionS; \
756
} \
757
if (ordsgn[_i] == 1) \
758
actionS; \
759
actionG; \
760
} \
761
} \
762
actionE; \
763
} \
764
while (0)
765
766
/***************************************************************
767
*
768
* Bitmask
769
*
770
*******************************************************************/
771
#define _p_MemCmp_Bitmask_Declare(s1, s2, bitmask) \
772
const unsigned long* _s1 = ((unsigned long*) s1); \
773
const unsigned long* _s2 = ((unsigned long*) s2); \
774
REGISTER const unsigned long _bitmask = bitmask; \
775
REGISTER unsigned long _v1; \
776
REGISTER unsigned long _v2; \
777
REGISTER unsigned long _i \
778
779
780
#define p_MemCmp_Bitmask_LengthGeneral(s1, s2, bitmask, length, actionG, actionS) \
781
do \
782
{ \
783
_p_MemCmp_Bitmask_Declare(s1, s2, bitmask); \
784
const unsigned long _l = (unsigned long) length; \
785
\
786
_i=0; \
787
\
788
while (_i < _l) \
789
{ \
790
_v1 = _s1[_i]; \
791
_v2 = _s2[_i]; \
792
\
793
if ((_v1 > _v2) || \
794
(((_v1 & _bitmask) ^ (_v2 & _bitmask)) != ((_v2 - _v1) & _bitmask))) \
795
actionS; \
796
_i++; \
797
} \
798
actionG; \
799
} \
800
while (0)
801
802
803
#define _p_MemCmp_Bitmask(i, actionS) \
804
do \
805
{ \
806
_i = i; \
807
_v1 = _s1[i]; \
808
_v2 = _s2[i]; \
809
if ((_v1 > _v2) || \
810
(((_v1 & _bitmask) ^ (_v2 & _bitmask)) != ((_v2 - _v1) & _bitmask))) \
811
actionS; \
812
} \
813
while (0)
814
815
#define _p_MemCmp_Bitmask_LengthTwo(actionS) \
816
do \
817
{ \
818
_p_MemCmp_Bitmask(0, actionS); \
819
_p_MemCmp_Bitmask(1, actionS); \
820
} \
821
while (0)
822
823
#define _p_MemCmp_Bitmask_LengthThree(actionS) \
824
do \
825
{ \
826
_p_MemCmp_Bitmask_LengthTwo(actionS); \
827
_p_MemCmp_Bitmask(2, actionS); \
828
} \
829
while (0)
830
831
#define _p_MemCmp_Bitmask_LengthFour(actionS) \
832
do \
833
{ \
834
_p_MemCmp_Bitmask_LengthThree(actionS); \
835
_p_MemCmp_Bitmask(3, actionS); \
836
} \
837
while (0)
838
839
840
#define _p_MemCmp_Bitmask_LengthFive(actionS) \
841
do \
842
{ \
843
_p_MemCmp_Bitmask_LengthFour(actionS); \
844
_p_MemCmp_Bitmask(4, actionS); \
845
} \
846
while (0)
847
848
849
#define _p_MemCmp_Bitmask_LengthSix(actionS) \
850
do \
851
{ \
852
_p_MemCmp_Bitmask_LengthFive(actionS); \
853
_p_MemCmp_Bitmask(5, actionS); \
854
} \
855
while (0)
856
857
#define _p_MemCmp_Bitmask_LengthSeven(actionS) \
858
do \
859
{ \
860
_p_MemCmp_Bitmask_LengthSix(actionS); \
861
_p_MemCmp_Bitmask(6, actionS); \
862
} \
863
while (0)
864
865
#define _p_MemCmp_Bitmask_LengthEight(actionS) \
866
do \
867
{ \
868
_p_MemCmp_Bitmask_LengthSeven(actionS); \
869
_p_MemCmp_Bitmask(7, actionS); \
870
} \
871
while (0)
872
873
#define p_MemCmp_Bitmask_LengthZero(s1, s2, bitmask, length, actionG, actionS) actionG
874
875
#define p_MemCmp_Bitmask_LengthOne(s1, s2, bitmask, length, actionG, actionS) \
876
do \
877
{ \
878
_p_MemCmp_Bitmask_Declare(s1, s2, bitmask); \
879
_p_MemCmp_Bitmask(0, actionS); \
880
actionG; \
881
} \
882
while (0)
883
884
#define p_MemCmp_Bitmask_LengthTwo(s1, s2, bitmask, length, actionG, actionS) \
885
do \
886
{ \
887
_p_MemCmp_Bitmask_Declare(s1, s2, bitmask); \
888
_p_MemCmp_Bitmask_LengthTwo(actionS); \
889
actionG; \
890
} \
891
while (0)
892
893
#define p_MemCmp_Bitmask_LengthThree(s1, s2, bitmask, length, actionG, actionS) \
894
do \
895
{ \
896
_p_MemCmp_Bitmask_Declare(s1, s2, bitmask); \
897
_p_MemCmp_Bitmask_LengthThree(actionS); \
898
actionG; \
899
} \
900
while (0)
901
902
#define p_MemCmp_Bitmask_LengthFour(s1, s2, bitmask, length, actionG, actionS) \
903
do \
904
{ \
905
_p_MemCmp_Bitmask_Declare(s1, s2, bitmask); \
906
_p_MemCmp_Bitmask_LengthFour(actionS); \
907
actionG; \
908
} \
909
while (0)
910
911
#define p_MemCmp_Bitmask_LengthFive(s1, s2, bitmask, length, actionG, actionS) \
912
do \
913
{ \
914
_p_MemCmp_Bitmask_Declare(s1, s2, bitmask); \
915
_p_MemCmp_Bitmask_LengthFive(actionS); \
916
actionG; \
917
} \
918
while (0)
919
920
#define p_MemCmp_Bitmask_LengthSix(s1, s2, bitmask, length, actionG, actionS) \
921
do \
922
{ \
923
_p_MemCmp_Bitmask_Declare(s1, s2, bitmask); \
924
_p_MemCmp_Bitmask_LengthSix(actionS); \
925
actionG; \
926
} \
927
while (0)
928
929
#define p_MemCmp_Bitmask_LengthSeven(s1, s2, bitmask, length, actionG, actionS) \
930
do \
931
{ \
932
_p_MemCmp_Bitmask_Declare(s1, s2, bitmask); \
933
_p_MemCmp_Bitmask_LengthSeven(actionS); \
934
actionG; \
935
} \
936
while (0)
937
938
#define p_MemCmp_Bitmask_LengthEigth(s1, s2, bitmask, length, actionG, actionS) \
939
do \
940
{ \
941
_p_MemCmp_Bitmask_Declare(s1, s2, bitmask); \
942
_p_MemCmp_Bitmask_LengthEigth(actionS); \
943
actionG; \
944
} \
945
while (0)
946
947
948
#endif // P_MEM_CMP
Generated on Tue Mar 24 2020 14:10:46 for My Project by
doxygen 1.8.17
for
Singular debian-1:4.1.1-p2+ds-4build2