xref: /aosp_15_r20/dalvik/dx/src/com/android/dex/Annotation.java (revision 055d459012065f78d96b68be8421640240ddf631)
1*055d4590SKeyi Gui /*
2*055d4590SKeyi Gui  * Copyright (C) 2011 The Android Open Source Project
3*055d4590SKeyi Gui  *
4*055d4590SKeyi Gui  * Licensed under the Apache License, Version 2.0 (the "License");
5*055d4590SKeyi Gui  * you may not use this file except in compliance with the License.
6*055d4590SKeyi Gui  * You may obtain a copy of the License at
7*055d4590SKeyi Gui  *
8*055d4590SKeyi Gui  *      http://www.apache.org/licenses/LICENSE-2.0
9*055d4590SKeyi Gui  *
10*055d4590SKeyi Gui  * Unless required by applicable law or agreed to in writing, software
11*055d4590SKeyi Gui  * distributed under the License is distributed on an "AS IS" BASIS,
12*055d4590SKeyi Gui  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*055d4590SKeyi Gui  * See the License for the specific language governing permissions and
14*055d4590SKeyi Gui  * limitations under the License.
15*055d4590SKeyi Gui  */
16*055d4590SKeyi Gui 
17*055d4590SKeyi Gui package com.android.dex;
18*055d4590SKeyi Gui 
19*055d4590SKeyi Gui import static com.android.dex.EncodedValueReader.ENCODED_ANNOTATION;
20*055d4590SKeyi Gui 
21*055d4590SKeyi Gui /**
22*055d4590SKeyi Gui  * An annotation.
23*055d4590SKeyi Gui  */
24*055d4590SKeyi Gui public final class Annotation implements Comparable<Annotation> {
25*055d4590SKeyi Gui     private final Dex dex;
26*055d4590SKeyi Gui     private final byte visibility;
27*055d4590SKeyi Gui     private final EncodedValue encodedAnnotation;
28*055d4590SKeyi Gui 
Annotation(Dex dex, byte visibility, EncodedValue encodedAnnotation)29*055d4590SKeyi Gui     public Annotation(Dex dex, byte visibility, EncodedValue encodedAnnotation) {
30*055d4590SKeyi Gui         this.dex = dex;
31*055d4590SKeyi Gui         this.visibility = visibility;
32*055d4590SKeyi Gui         this.encodedAnnotation = encodedAnnotation;
33*055d4590SKeyi Gui     }
34*055d4590SKeyi Gui 
getVisibility()35*055d4590SKeyi Gui     public byte getVisibility() {
36*055d4590SKeyi Gui         return visibility;
37*055d4590SKeyi Gui     }
38*055d4590SKeyi Gui 
getReader()39*055d4590SKeyi Gui     public EncodedValueReader getReader() {
40*055d4590SKeyi Gui         return new EncodedValueReader(encodedAnnotation, ENCODED_ANNOTATION);
41*055d4590SKeyi Gui     }
42*055d4590SKeyi Gui 
getTypeIndex()43*055d4590SKeyi Gui     public int getTypeIndex() {
44*055d4590SKeyi Gui         EncodedValueReader reader = getReader();
45*055d4590SKeyi Gui         reader.readAnnotation();
46*055d4590SKeyi Gui         return reader.getAnnotationType();
47*055d4590SKeyi Gui     }
48*055d4590SKeyi Gui 
writeTo(Dex.Section out)49*055d4590SKeyi Gui     public void writeTo(Dex.Section out) {
50*055d4590SKeyi Gui         out.writeByte(visibility);
51*055d4590SKeyi Gui         encodedAnnotation.writeTo(out);
52*055d4590SKeyi Gui     }
53*055d4590SKeyi Gui 
54*055d4590SKeyi Gui     @Override
compareTo(Annotation other)55*055d4590SKeyi Gui     public int compareTo(Annotation other) {
56*055d4590SKeyi Gui         return encodedAnnotation.compareTo(other.encodedAnnotation);
57*055d4590SKeyi Gui     }
58*055d4590SKeyi Gui 
59*055d4590SKeyi Gui     @Override
toString()60*055d4590SKeyi Gui     public String toString() {
61*055d4590SKeyi Gui         return dex == null
62*055d4590SKeyi Gui                 ? visibility + " " + getTypeIndex()
63*055d4590SKeyi Gui                 : visibility + " " + dex.typeNames().get(getTypeIndex());
64*055d4590SKeyi Gui     }
65*055d4590SKeyi Gui }
66