Mercurial Hosting > nabble
comparison src/nabble/naml/compiler/Usage.java @ 0:7ecd1a4ef557
add content
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 21 Mar 2019 19:15:52 -0600 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:7ecd1a4ef557 |
---|---|
1 package nabble.naml.compiler; | |
2 | |
3 import java.util.Arrays; | |
4 import java.util.List; | |
5 import fschmidt.util.java.Interner; | |
6 | |
7 | |
8 public final class Usage { | |
9 private final GenericNamespace[] base; | |
10 private final List<Macro> macroPath; | |
11 | |
12 Usage(GenericNamespace[] base,List<Macro> macroPath) { | |
13 this.base = base; | |
14 this.macroPath = macroPath; | |
15 } | |
16 | |
17 public String[] baseIds() { | |
18 String[] a = new String[base.length]; | |
19 for( int i=0; i<base.length; i++ ) { | |
20 a[i] = base[i].getId(); | |
21 } | |
22 return a; | |
23 } | |
24 | |
25 public List<Macro> macroPath() { | |
26 return macroPath; | |
27 } | |
28 | |
29 @Override public boolean equals(Object obj) { | |
30 if( !(obj instanceof Usage) ) | |
31 return false; | |
32 Usage t = (Usage)obj; | |
33 return Arrays.equals(t.base,base) && t.macroPath.equals(macroPath); | |
34 } | |
35 | |
36 @Override public int hashCode() { | |
37 int hash = Arrays.hashCode(base); | |
38 hash = 31*hash + macroPath.hashCode(); | |
39 return hash; | |
40 } | |
41 | |
42 private static final Interner<Usage> interner = new Interner<Usage>(); | |
43 | |
44 Usage intern() { | |
45 return interner.intern(this); | |
46 } | |
47 | |
48 } |