Fields Summary |
---|
private static final com.android.dexgen.rop.cst.CstType | ANNOTATION_DEFAULT_TYPE{@code non-null;} type for {@code AnnotationDefault} annotations |
private static final com.android.dexgen.rop.cst.CstType | ENCLOSING_CLASS_TYPE{@code non-null;} type for {@code EnclosingClass} annotations |
private static final com.android.dexgen.rop.cst.CstType | ENCLOSING_METHOD_TYPE{@code non-null;} type for {@code EnclosingMethod} annotations |
private static final com.android.dexgen.rop.cst.CstType | INNER_CLASS_TYPE{@code non-null;} type for {@code InnerClass} annotations |
private static final com.android.dexgen.rop.cst.CstType | MEMBER_CLASSES_TYPE{@code non-null;} type for {@code MemberClasses} annotations |
private static final com.android.dexgen.rop.cst.CstType | SIGNATURE_TYPE{@code non-null;} type for {@code Signature} annotations |
private static final com.android.dexgen.rop.cst.CstType | THROWS_TYPE{@code non-null;} type for {@code Throws} annotations |
private static final com.android.dexgen.rop.cst.CstUtf8 | ACCESS_FLAGS_UTF{@code non-null;} the UTF-8 constant {@code "accessFlags"} |
private static final com.android.dexgen.rop.cst.CstUtf8 | NAME_UTF{@code non-null;} the UTF-8 constant {@code "name"} |
private static final com.android.dexgen.rop.cst.CstUtf8 | VALUE_UTF{@code non-null;} the UTF-8 constant {@code "value"} |
Methods Summary |
---|
public static com.android.dexgen.rop.annotation.Annotation | makeAnnotationDefault(com.android.dexgen.rop.annotation.Annotation defaults)Constructs a standard {@code AnnotationDefault} annotation.
Annotation result = new Annotation(ANNOTATION_DEFAULT_TYPE, SYSTEM);
result.put(new NameValuePair(VALUE_UTF, new CstAnnotation(defaults)));
result.setImmutable();
return result;
|
private static com.android.dexgen.rop.cst.CstArray | makeCstArray(com.android.dexgen.rop.type.TypeList types)Converts a {@link TypeList} to a {@link CstArray}.
int size = types.size();
CstArray.List list = new CstArray.List(size);
for (int i = 0; i < size; i++) {
list.set(i, CstType.intern(types.getType(i)));
}
list.setImmutable();
return new CstArray(list);
|
public static com.android.dexgen.rop.annotation.Annotation | makeEnclosingClass(com.android.dexgen.rop.cst.CstType clazz)Constructs a standard {@code EnclosingClass} annotation.
Annotation result = new Annotation(ENCLOSING_CLASS_TYPE, SYSTEM);
result.put(new NameValuePair(VALUE_UTF, clazz));
result.setImmutable();
return result;
|
public static com.android.dexgen.rop.annotation.Annotation | makeEnclosingMethod(com.android.dexgen.rop.cst.CstMethodRef method)Constructs a standard {@code EnclosingMethod} annotation.
Annotation result = new Annotation(ENCLOSING_METHOD_TYPE, SYSTEM);
result.put(new NameValuePair(VALUE_UTF, method));
result.setImmutable();
return result;
|
public static com.android.dexgen.rop.annotation.Annotation | makeInnerClass(com.android.dexgen.rop.cst.CstUtf8 name, int accessFlags)Constructs a standard {@code InnerClass} annotation.
Annotation result = new Annotation(INNER_CLASS_TYPE, SYSTEM);
Constant nameCst =
(name != null) ? new CstString(name) : CstKnownNull.THE_ONE;
result.put(new NameValuePair(NAME_UTF, nameCst));
result.put(new NameValuePair(ACCESS_FLAGS_UTF,
CstInteger.make(accessFlags)));
result.setImmutable();
return result;
|
public static com.android.dexgen.rop.annotation.Annotation | makeMemberClasses(com.android.dexgen.rop.type.TypeList types)Constructs a standard {@code MemberClasses} annotation.
CstArray array = makeCstArray(types);
Annotation result = new Annotation(MEMBER_CLASSES_TYPE, SYSTEM);
result.put(new NameValuePair(VALUE_UTF, array));
result.setImmutable();
return result;
|
public static com.android.dexgen.rop.annotation.Annotation | makeSignature(com.android.dexgen.rop.cst.CstUtf8 signature)Constructs a standard {@code Signature} annotation.
Annotation result = new Annotation(SIGNATURE_TYPE, SYSTEM);
/*
* Split the string into pieces that are likely to be common
* across many signatures and the rest of the file.
*/
String raw = signature.getString();
int rawLength = raw.length();
ArrayList<String> pieces = new ArrayList<String>(20);
for (int at = 0; at < rawLength; /*at*/) {
char c = raw.charAt(at);
int endAt = at + 1;
if (c == 'L") {
// Scan to ';' or '<'. Consume ';' but not '<'.
while (endAt < rawLength) {
c = raw.charAt(endAt);
if (c == ';") {
endAt++;
break;
} else if (c == '<") {
break;
}
endAt++;
}
} else {
// Scan to 'L' without consuming it.
while (endAt < rawLength) {
c = raw.charAt(endAt);
if (c == 'L") {
break;
}
endAt++;
}
}
pieces.add(raw.substring(at, endAt));
at = endAt;
}
int size = pieces.size();
CstArray.List list = new CstArray.List(size);
for (int i = 0; i < size; i++) {
list.set(i, new CstString(pieces.get(i)));
}
list.setImmutable();
result.put(new NameValuePair(VALUE_UTF, new CstArray(list)));
result.setImmutable();
return result;
|
public static com.android.dexgen.rop.annotation.Annotation | makeThrows(com.android.dexgen.rop.type.TypeList types)Constructs a standard {@code Throws} annotation.
CstArray array = makeCstArray(types);
Annotation result = new Annotation(THROWS_TYPE, SYSTEM);
result.put(new NameValuePair(VALUE_UTF, array));
result.setImmutable();
return result;
|