aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/ftbsc/lll/processor/tools/ArrayContainer.java
blob: c32a62115c103ca614a900f2e43440a429e8a522 (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
34
35
36
37
38
package ftbsc.lll.processor.tools;

import javax.lang.model.type.ArrayType;
import javax.lang.model.type.TypeKind;
import javax.lang.model.type.TypeMirror;

/**
 * Utility class that extrapolates information from a {@link TypeMirror},
 * making it considerably easier to get informations about an
 * array.
 * @since 0.4.0
 */
public class ArrayContainer {
   /**
    * The nesting level of the array - a type who is not an array will have 0.
    */
   public final int arrayLevel;

   /**
    * The innermost component of the array, corresponding to the type of the base
    * component.
    */
   public final TypeMirror innermostComponent;

   /**
    * Creates a new {@link ArrayContainer} from a {@link TypeMirror}.
    * @param t the {@link TypeMirror} representing the type.
    */
   public ArrayContainer(TypeMirror t) {
      int arrayLevel = 0;
      while(t.getKind() == TypeKind.ARRAY) {
         t = ((ArrayType) t).getComponentType();
         arrayLevel++;
      }
      this.arrayLevel = arrayLevel;
      this.innermostComponent = t;
   }
}