本文整理汇总了Java中org.jf.dexlib2.iface.reference.StringReference类的典型用法代码示例。如果您正苦于以下问题:Java StringReference类的具体用法?Java StringReference怎么用?Java StringReference使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
StringReference类属于org.jf.dexlib2.iface.reference包,在下文中一共展示了StringReference类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: if
import org.jf.dexlib2.iface.reference.StringReference; //导入依赖的package包/类
public LinkedHashMap<String,BundleListing.BundleInfo>read(String className,String memberName) throws Exception {
if (reader!= null) {
Method method = (Method) reader.read(className, memberName);
if (method!= null){
Iterable<? extends Instruction> instructions = method.getImplementation().getInstructions();
for (Instruction instruction:instructions){
if (instruction instanceof ReferenceInstruction){
if (((ReferenceInstruction) instruction).getReferenceType()== 0){
StringReference s = (StringReference) ((ReferenceInstruction) instruction).getReference();
return BundleListingUtil.parseArray(s.getString(), (LinkedHashMap<String, BundleListing.BundleInfo>) map);
}
}
}
}
}
return null;
}
示例2: writeReference
import org.jf.dexlib2.iface.reference.StringReference; //导入依赖的package包/类
public static void writeReference(IndentingWriter writer, int referenceType,
Reference reference) throws IOException {
switch (referenceType) {
case ReferenceType.STRING:
writeStringReference(writer, ((StringReference)reference).getString());
return;
case ReferenceType.TYPE:
writer.write(((TypeReference)reference).getType());
return;
case ReferenceType.METHOD:
ReferenceUtil.writeMethodDescriptor(writer, (MethodReference) reference);
return;
case ReferenceType.FIELD:
ReferenceUtil.writeFieldDescriptor(writer, (FieldReference)reference);
return;
default:
throw new IllegalStateException("Unknown reference type");
}
}
示例3: addRegisterAssignmentDebugInfo
import org.jf.dexlib2.iface.reference.StringReference; //导入依赖的package包/类
private void addRegisterAssignmentDebugInfo(
LocalRegisterAssignmentInformation registerAssignment, Map<Local, Integer> seenRegisters, MethodImplementationBuilder builder) {
Local local = registerAssignment.getLocal();
String dexLocalType = SootToDexUtils.getDexTypeDescriptor(local.getType());
StringReference localName = dexFile.internStringReference(local.getName());
Register reg = registerAssignment.getRegister();
int register = reg.getNumber();
Integer beforeRegister = seenRegisters.get(local);
if (beforeRegister != null)
{
if (beforeRegister == register)
//No change
return;
builder.addEndLocal(beforeRegister);
}
builder.addStartLocal(register, localName, dexFile.internTypeReference(dexLocalType), dexFile.internStringReference(""));
seenRegisters.put(local, register);
}
示例4: of
import org.jf.dexlib2.iface.reference.StringReference; //导入依赖的package包/类
@Nonnull
public static ImmutableReference of(Reference reference) {
if (reference instanceof StringReference) {
return ImmutableStringReference.of((StringReference) reference);
}
if (reference instanceof TypeReference) {
return ImmutableTypeReference.of((TypeReference) reference);
}
if (reference instanceof FieldReference) {
return ImmutableFieldReference.of((FieldReference) reference);
}
if (reference instanceof MethodReference) {
return ImmutableMethodReference.of((MethodReference) reference);
}
throw new ExceptionWithContext("Invalid reference type");
}
示例5: internReference
import org.jf.dexlib2.iface.reference.StringReference; //导入依赖的package包/类
@Nonnull
public BuilderReference internReference(@Nonnull Reference reference) {
if (reference instanceof StringReference) {
return internStringReference(((StringReference) reference).getString());
}
if (reference instanceof TypeReference) {
return internTypeReference(((TypeReference) reference).getType());
}
if (reference instanceof MethodReference) {
return internMethodReference((MethodReference) reference);
}
if (reference instanceof FieldReference) {
return internFieldReference((FieldReference) reference);
}
throw new IllegalArgumentException("Could not determine type of reference");
}
示例6: getReferenceString
import org.jf.dexlib2.iface.reference.StringReference; //导入依赖的package包/类
@Nullable
public static String getReferenceString(Reference reference) {
if (reference instanceof StringReference) {
return String.format("\"%s\"", StringUtils.escapeString(((StringReference) reference).getString()));
}
if (reference instanceof TypeReference) {
return ((TypeReference) reference).getType();
}
if (reference instanceof FieldReference) {
return getFieldDescriptor((FieldReference) reference);
}
if (reference instanceof MethodReference) {
return getMethodDescriptor((MethodReference) reference);
}
return null;
}
示例7: convertDebugItem
import org.jf.dexlib2.iface.reference.StringReference; //导入依赖的package包/类
@Nonnull
private BuilderDebugItem convertDebugItem(@Nonnull DebugItem debugItem) {
switch (debugItem.getDebugItemType()) {
case DebugItemType.START_LOCAL: {
StartLocal startLocal = (StartLocal) debugItem;
return new BuilderStartLocal(startLocal.getRegister(),
(StringReference) convertReference(startLocal.getNameReference()),
(TypeReference) convertReference(startLocal.getTypeReference()),
(StringReference) convertReference(startLocal.getSignatureReference()));
}
case DebugItemType.END_LOCAL: {
EndLocal endLocal = (EndLocal) debugItem;
return new BuilderEndLocal(endLocal.getRegister());
}
case DebugItemType.RESTART_LOCAL: {
RestartLocal restartLocal = (RestartLocal) debugItem;
return new BuilderRestartLocal(restartLocal.getRegister());
}
case DebugItemType.PROLOGUE_END:
return new BuilderPrologueEnd();
case DebugItemType.EPILOGUE_BEGIN:
return new BuilderEpilogueBegin();
case DebugItemType.LINE_NUMBER: {
LineNumber lineNumber = (LineNumber) debugItem;
return new BuilderLineNumber(lineNumber.getLineNumber());
}
case DebugItemType.SET_SOURCE_FILE: {
SetSourceFile setSourceFile = (SetSourceFile) debugItem;
return new BuilderSetSourceFile(
(StringReference) convertReference(setSourceFile.getSourceFileReference())
);
}
default:
throw new ExceptionWithContext("Invalid debug item type: " + debugItem.getDebugItemType());
}
}
示例8: analyze
import org.jf.dexlib2.iface.reference.StringReference; //导入依赖的package包/类
private void analyze(@Nonnull DexBackedMethodImplementation implementation) {
cyclomaticComplexity = calculateComplexity(implementation);
registerCount = implementation.getRegisterCount();
tryCatchCount = implementation.getTryBlocks().size();
debugItemCount = Utils.makeCollection(implementation.getDebugItems()).size();
for (Instruction instruction : implementation.getInstructions()) {
instructionCount++;
Opcode op = instruction.getOpcode();
opCounts.adjustOrPutValue(op, 1, 1);
if (instruction instanceof ReferenceInstruction) {
ReferenceInstruction refInstr = (ReferenceInstruction) instruction;
switch (op.referenceType) {
case ReferenceType.METHOD:
MethodReference methodRef = (MethodReference) refInstr.getReference();
if (fullMethodSignatures) {
apiCounts.adjustOrPutValue(methodRef, 1, 1);
} else {
ShortMethodReference shortMethodRef = new ShortMethodReference(methodRef);
apiCounts.adjustOrPutValue(shortMethodRef, 1, 1);
}
break;
case ReferenceType.FIELD:
FieldReference fieldRef = (FieldReference) refInstr.getReference();
fieldReferenceCounts.adjustOrPutValue(fieldRef, 1, 1);
break;
case ReferenceType.STRING:
StringReference stringRef = (StringReference) refInstr.getReference();
stringReferenceCounts.adjustOrPutValue(stringRef, 1, 1);
break;
}
}
}
}
示例9: getSourceFileReference
import org.jf.dexlib2.iface.reference.StringReference; //导入依赖的package包/类
@Nullable @Override public StringReference getSourceFileReference() {
return sourceFile==null?null:new BaseStringReference() {
@Nonnull @Override public String getString() {
return sourceFile;
}
};
}
示例10: getNameReference
import org.jf.dexlib2.iface.reference.StringReference; //导入依赖的package包/类
@Nullable @Override public StringReference getNameReference() {
return name==null?null:new BaseStringReference() {
@Nonnull @Override public String getString() {
return name;
}
};
}
示例11: getSignatureReference
import org.jf.dexlib2.iface.reference.StringReference; //导入依赖的package包/类
@Nullable @Override public StringReference getSignatureReference() {
return signature==null?null:new BaseStringReference() {
@Nonnull @Override public String getString() {
return signature;
}
};
}
示例12: of
import org.jf.dexlib2.iface.reference.StringReference; //导入依赖的package包/类
@Nonnull
public static ImmutableStringReference of(@Nonnull StringReference stringReference) {
if (stringReference instanceof ImmutableStringReference) {
return (ImmutableStringReference)stringReference;
}
return new ImmutableStringReference(stringReference.getString());
}
示例13: equals
import org.jf.dexlib2.iface.reference.StringReference; //导入依赖的package包/类
@Override
public boolean equals(@Nullable Object o) {
if (o != null && o instanceof StringReference) {
return getString().equals(((StringReference)o).getString());
}
return false;
}
示例14: makeInstructionWriter
import org.jf.dexlib2.iface.reference.StringReference; //导入依赖的package包/类
@Nonnull static <StringRef extends StringReference, TypeRef extends TypeReference, FieldRefKey extends FieldReference, MethodRefKey extends MethodReference>
InstructionWriter<StringRef, TypeRef, FieldRefKey, MethodRefKey>
makeInstructionWriter(
@Nonnull DexDataWriter writer,
@Nonnull StringSection<?, StringRef> stringSection,
@Nonnull TypeSection<?, ?, TypeRef> typeSection,
@Nonnull FieldSection<?, ?, FieldRefKey, ?> fieldSection,
@Nonnull MethodSection<?, ?, ?, MethodRefKey, ?> methodSection) {
return new InstructionWriter<StringRef, TypeRef, FieldRefKey, MethodRefKey>(
writer, stringSection, typeSection, fieldSection, methodSection);
}
示例15: getItemIndex
import org.jf.dexlib2.iface.reference.StringReference; //导入依赖的package包/类
@Override public int getItemIndex(@Nonnull StringReference key) {
Integer index = internedItems.get(key.toString());
if (index == null) {
throw new ExceptionWithContext("Item not found.: %s", key.toString());
}
return index;
}