/** * Constructs a standard {@code SourceDebugExtension} annotation. * * @param smapString {@code non-null;} the SMAP string associated with * @return {@code non-null;} the annotation */ public static Annotation makeSourceDebugExtension(CstString smapString) { Annotation result = new Annotation(SOURCE_DEBUG_EXTENSION_TYPE, SYSTEM); result.put(new NameValuePair(VALUE_STRING, smapString)); result.setImmutable(); return result; }
Annotation annotation = new Annotation(cstType, AnnotationVisibility.RUNTIME); annotation.add(nvp);
/** {@inheritDoc} */ @Override protected int compareTo0(OffsettedItem other) { AnnotationItem otherAnnotation = (AnnotationItem) other; return annotation.compareTo(otherAnnotation.annotation); }
int sz = methods.size(); Annotation result = new Annotation(thisClass, AnnotationVisibility.EMBEDDED); boolean any = false; one.getNat().getName(), oneDefault.getValue()); result.add(pair); any = true; result.setImmutable(); return AnnotationUtils.makeAnnotationDefault(result);
/** * Write a (listing file) annotation for this instance to the given * output, that consumes no bytes of output. This is for annotating * a reference to this instance at the point of the reference. * * @param out {@code non-null;} where to output to * @param prefix {@code non-null;} prefix for each line of output */ public void annotateTo(AnnotatedOutput out, String prefix) { out.annotate(0, prefix + "visibility: " + annotation.getVisibility().toHuman()); out.annotate(0, prefix + "type: " + annotation.getType().toHuman()); for (NameValuePair pair : annotation.getNameValuePairs()) { CstString name = pair.getName(); Constant value = pair.getValue(); out.annotate(0, prefix + name.toHuman() + ": " + ValueEncoder.constantToHuman(value)); } }
/** * Helper for {@code addContents()} methods, which adds * contents for a particular {@link Annotation}, calling itself * recursively should it encounter a nested annotation. * * @param file {@code non-null;} the file to add to * @param annotation {@code non-null;} the annotation to add contents for */ public static void addContents(DexFile file, Annotation annotation) { TypeIdsSection typeIds = file.getTypeIds(); StringIdsSection stringIds = file.getStringIds(); typeIds.intern(annotation.getType()); for (NameValuePair pair : annotation.getNameValuePairs()) { stringIds.intern(pair.getName()); addContents(file, pair.getValue()); } }
/** {@inheritDoc} */ @Override public int hashCode() { return annotation.hashCode(); }
/** {@inheritDoc} */ @Override public boolean equals(Object other) { if (! (other instanceof CstAnnotation)) { return false; } return annotation.equals(((CstAnnotation) other).annotation); }
/** {@inheritDoc} */ public void addContents(DexFile file) { type = file.getTypeIds().intern(annotation.getType()); ValueEncoder.addContents(file, annotation); }
protected void writeTo0(DexFile file, AnnotatedOutput out) { boolean annotates = out.annotates(); AnnotationVisibility visibility = annotation.getVisibility();
int sz = methods.size(); Annotation result = new Annotation(thisClass, AnnotationVisibility.EMBEDDED); boolean any = false; one.getNat().getName(), oneDefault.getValue()); result.add(pair); any = true; result.setImmutable(); return AnnotationUtils.makeAnnotationDefault(result);
/** * Write a (listing file) annotation for this instance to the given * output, that consumes no bytes of output. This is for annotating * a reference to this instance at the point of the reference. * * @param out {@code non-null;} where to output to * @param prefix {@code non-null;} prefix for each line of output */ public void annotateTo(AnnotatedOutput out, String prefix) { out.annotate(0, prefix + "visibility: " + annotation.getVisibility().toHuman()); out.annotate(0, prefix + "type: " + annotation.getType().toHuman()); for (NameValuePair pair : annotation.getNameValuePairs()) { CstString name = pair.getName(); Constant value = pair.getValue(); out.annotate(0, prefix + name.toHuman() + ": " + ValueEncoder.constantToHuman(value)); } }
/** * Helper for {@code addContents()} methods, which adds * contents for a particular {@link Annotation}, calling itself * recursively should it encounter a nested annotation. * * @param file {@code non-null;} the file to add to * @param annotation {@code non-null;} the annotation to add contents for */ public static void addContents(DexFile file, Annotation annotation) { TypeIdsSection typeIds = file.getTypeIds(); StringIdsSection stringIds = file.getStringIds(); typeIds.intern(annotation.getType()); for (NameValuePair pair : annotation.getNameValuePairs()) { stringIds.intern(pair.getName()); addContents(file, pair.getValue()); } }
/** {@inheritDoc} */ @Override public int hashCode() { return annotation.hashCode(); }
/** {@inheritDoc} */ @Override public boolean equals(Object other) { if (! (other instanceof CstAnnotation)) { return false; } return annotation.equals(((CstAnnotation) other).annotation); }
/** {@inheritDoc} */ @Override public void addContents(DexFile file) { type = file.getTypeIds().intern(annotation.getType()); ValueEncoder.addContents(file, annotation); }
protected void writeTo0(DexFile file, AnnotatedOutput out) { boolean annotates = out.annotates(); AnnotationVisibility visibility = annotation.getVisibility();
/** * Constructs a standard {@code EnclosingMethod} annotation. * * @param method {@code non-null;} the enclosing method * @return {@code non-null;} the annotation */ public static Annotation makeEnclosingMethod(CstMethodRef method) { Annotation result = new Annotation(ENCLOSING_METHOD_TYPE, SYSTEM); result.put(new NameValuePair(VALUE_UTF, method)); result.setImmutable(); return result; }
int sz = methods.size(); Annotation result = new Annotation(thisClass, AnnotationVisibility.EMBEDDED); boolean any = false; one.getNat().getName(), oneDefault.getValue()); result.add(pair); any = true; result.setImmutable(); return AnnotationUtils.makeAnnotationDefault(result);
/** * Write a (listing file) annotation for this instance to the given * output, that consumes no bytes of output. This is for annotating * a reference to this instance at the point of the reference. * * @param out {@code non-null;} where to output to * @param prefix {@code non-null;} prefix for each line of output */ public void annotateTo(AnnotatedOutput out, String prefix) { out.annotate(0, prefix + "visibility: " + annotation.getVisibility().toHuman()); out.annotate(0, prefix + "type: " + annotation.getType().toHuman()); for (NameValuePair pair : annotation.getNameValuePairs()) { CstString name = pair.getName(); Constant value = pair.getValue(); out.annotate(0, prefix + name.toHuman() + ": " + ValueEncoder.constantToHuman(value)); } }