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 }