187 private KindSelector(int data) {
188 this.data = (byte) data;
189 }
190
191 public static KindSelector of(KindSelector... kindSelectors) {
192 byte newData = 0;
193 for (KindSelector kindSel : kindSelectors) {
194 newData |= kindSel.data;
195 }
196 return new KindSelector(newData);
197 }
198
199 public boolean subset(KindSelector other) {
200 return (data & ~other.data) == 0;
201 }
202
203 public boolean contains(KindSelector other) {
204 return (data & other.data) != 0;
205 }
206
207 /** A set of KindName(s) representing a set of symbol's kinds. */
208 public Set<KindName> kindNames() {
209 EnumSet<KindName> kinds = EnumSet.noneOf(KindName.class);
210 if ((data & VAL.data) != 0) {
211 if ((data & VAL.data) == VAR.data) kinds.add(KindName.VAR);
212 else kinds.add(KindName.VAL);
213 }
214 if ((data & MTH.data) != 0) kinds.add(KindName.METHOD);
215 if ((data & TYP.data) != 0) kinds.add(KindName.CLASS);
216 if ((data & PCK.data) != 0) kinds.add(KindName.PACKAGE);
217 if ((data & MDL.data) != 0) kinds.add(KindName.MODULE);
218 return kinds;
219 }
220 }
221
222 public enum KindName implements Formattable {
223 ANNOTATION("kindname.annotation"),
224 CONSTRUCTOR("kindname.constructor"),
225 INTERFACE("kindname.interface"),
226 ENUM("kindname.enum"),
|
187 private KindSelector(int data) {
188 this.data = (byte) data;
189 }
190
191 public static KindSelector of(KindSelector... kindSelectors) {
192 byte newData = 0;
193 for (KindSelector kindSel : kindSelectors) {
194 newData |= kindSel.data;
195 }
196 return new KindSelector(newData);
197 }
198
199 public boolean subset(KindSelector other) {
200 return (data & ~other.data) == 0;
201 }
202
203 public boolean contains(KindSelector other) {
204 return (data & other.data) != 0;
205 }
206
207 public boolean isAssignment() {
208 return ASG.subset(this) && !VAL.subset(this);
209 }
210
211 /** A set of KindName(s) representing a set of symbol's kinds. */
212 public Set<KindName> kindNames() {
213 EnumSet<KindName> kinds = EnumSet.noneOf(KindName.class);
214 if ((data & VAL.data) != 0) {
215 if ((data & VAL.data) == VAR.data) kinds.add(KindName.VAR);
216 else kinds.add(KindName.VAL);
217 }
218 if ((data & MTH.data) != 0) kinds.add(KindName.METHOD);
219 if ((data & TYP.data) != 0) kinds.add(KindName.CLASS);
220 if ((data & PCK.data) != 0) kinds.add(KindName.PACKAGE);
221 if ((data & MDL.data) != 0) kinds.add(KindName.MODULE);
222 return kinds;
223 }
224 }
225
226 public enum KindName implements Formattable {
227 ANNOTATION("kindname.annotation"),
228 CONSTRUCTOR("kindname.constructor"),
229 INTERFACE("kindname.interface"),
230 ENUM("kindname.enum"),
|