File: varhash

package info (click to toggle)
tcng 10b-3
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 3,644 kB
  • ctags: 2,515
  • sloc: ansic: 19,040; pascal: 4,640; yacc: 2,619; sh: 1,914; perl: 1,546; lex: 772; makefile: 756
file content (44 lines) | stat: -rw-r--r-- 1,653 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
# hash: 1000 similar variable names -------------------------------------------
tcc -w -H 2>&1
// random numbers yield 1-2 collisions

#define A(n) $var_##n = 0x##n;
#define B(n) A(n##0) A(n##1) A(n##2) A(n##3) A(n##4) \
	     A(n##5) A(n##6) A(n##7) A(n##8) A(n##9)
#define C(n) B(n##0) B(n##1) B(n##2) B(n##3) B(n##4) \
	     B(n##5) B(n##6) B(n##7) B(n##8) B(n##9)

C(0) C(1) C(2) C(3) C(4) C(5) C(6) C(7) C(8) C(9)
EOF
variable hash: 1000 entries in 830 slots, max collisions 3
# hash: 1000 triples of similar variable names --------------------------------
tcc -w -H 2>&1
// random numbers yield 2-3 collisions

#define A(n) $var_##n = 0x##n; $sth_##n = 0x##n; $m##n##id = 0x##n;
#define B(n) A(n##0) A(n##1) A(n##2) A(n##3) A(n##4) \
	     A(n##5) A(n##6) A(n##7) A(n##8) A(n##9)
#define C(n) B(n##0) B(n##1) B(n##2) B(n##3) B(n##4) \
	     B(n##5) B(n##6) B(n##7) B(n##8) B(n##9)

C(0) C(1) C(2) C(3) C(4) C(5) C(6) C(7) C(8) C(9)
EOF
variable hash: 3000 entries in 2365 slots, max collisions 4
# hash: 5000 similar variable names -------------------------------------------
tcc -w -H 2>&1
// random numbers yield 2-4 collisions

// (Note: can't use much larger test cases or we run into problems with
//  ElectricFence)

#define A(n) $var_##n = 0x##n;
#define B(n) A(n##0) A(n##1) A(n##2) A(n##3) A(n##4) \
	     A(n##5) A(n##6) A(n##7) A(n##8) A(n##9)
#define C(n) B(n##0) B(n##1) B(n##2) B(n##3) B(n##4) \
	     B(n##5) B(n##6) B(n##7) B(n##8) B(n##9)
#define D(n) C(n##0) C(n##1) C(n##2) C(n##3) C(n##4) \
	     C(n##5) C(n##6) C(n##7) C(n##8) C(n##9)

D(0) D(1) D(2) D(3) D(4)
EOF
variable hash: 5000 entries in 3658 slots, max collisions 4