summaryrefslogtreecommitdiff
path: root/sources/scalac/symtab/NameMangler.java
blob: 30de8193d0a3aa750721e8953592a5f942d8ec34 (plain) (blame)
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
/*     ____ ____  ____ ____  ______                                     *\
**    / __// __ \/ __// __ \/ ____/    SOcos COmpiles Scala             **
**  __\_ \/ /_/ / /__/ /_/ /\_ \       (c) 2002, LAMP/EPFL              **
** /_____/\____/\___/\____/____/                                        **
**
** $Id$
\*                                                                      */

package scalac.symtab;

import scalac.util.Name;
import java.util.HashMap;

public class NameMangler {

    private HashMap/*<Symbol,HashMap<Symbol,int[]>>*/ mangleMap = new HashMap();

    public void setMangledName(Symbol innerclazz) {
	Symbol topclazz = innerclazz.enclToplevelClass();
	HashMap map = (HashMap) mangleMap.get(topclazz);
	if (map == null) {
	    map = new HashMap();
	    mangleMap.put(topclazz, map);
	}
	int[] ctr = (int[]) map.get(innerclazz);
	if (ctr == null) {
	    ctr = new int[1];
	    map.put(innerclazz, ctr);
	}
	innerclazz.setMangledName(
	    Name.fromString(topclazz.name + "$" + (ctr[0]++) + innerclazz.name));
    }
}