2 * Function alias support
4 * Copyright 1995 Martin von Loewis
14 /* some large prime */
15 #define TABLESIZE 2677
17 static ALIASHASH AliasTable
[TABLESIZE
];
18 /* this could be a bit smaller */
19 static FUNCTIONALIAS AliasRecord
[TABLESIZE
];
20 /* record 0 is always empty */
21 static int LastRecord
;
26 static int ALIAS_LocateHash(DWORD value
)
29 start
=hash
=value
%TABLESIZE
;
30 while(AliasTable
[hash
].used
&& AliasTable
[hash
].used
!=value
)
37 fprintf(stderr
,"Hash table full, increase size in alias.c\n");
44 void ALIAS_RegisterAlias(DWORD Wine
,DWORD Win16
, DWORD Win32
)
46 int whash
= 0, w16hash
= 0, w32hash
= 0, recno
=0;
47 if (!Wine
&& !Win16
&& !Win32
) return;
50 whash
=ALIAS_LocateHash(Wine
);
51 recno
=AliasTable
[whash
].used
?AliasTable
[whash
].used
:0;
55 w16hash
=ALIAS_LocateHash(Win16
);
56 recno
=AliasTable
[w16hash
].used
?AliasTable
[w16hash
].used
:0;
60 w32hash
=ALIAS_LocateHash(Win32
);
61 recno
=AliasTable
[w32hash
].used
?AliasTable
[w32hash
].used
:0;
70 AliasTable
[whash
].used
=Wine
;
71 AliasTable
[whash
].recno
=recno
;
72 AliasRecord
[recno
].wine
=Wine
;
76 AliasTable
[w16hash
].used
=Win16
;
77 AliasTable
[w16hash
].recno
=recno
;
78 AliasRecord
[recno
].win16
=Win16
;
82 AliasTable
[w32hash
].used
=Win32
;
83 AliasTable
[w32hash
].recno
=recno
;
84 AliasRecord
[recno
].win32
=Win32
;
88 FUNCTIONALIAS
* ALIAS_LookupAlias(DWORD fn
)
91 index
=ALIAS_LocateHash(fn
);
92 if(AliasTable
[index
].used
==fn
)
93 return &AliasRecord
[AliasTable
[index
].recno
];