EnumAdapter.smali
.class public final Lcom/squareup/wire/EnumAdapter;
.super Ljava/lang/Object;
.source "EnumAdapter.java"
# annotations
.annotation system Ldalvik/annotation/Signature;
value = {
"<E::",
"Lcom/squareup/wire/ProtoEnum;",
">",
"Ljava/lang/Object;"
}
.end annotation
# static fields
.field public static final COMPARATOR:Ljava/util/Comparator;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Comparator<",
"Lcom/squareup/wire/ProtoEnum;",
">;"
}
.end annotation
.end field
# instance fields
.field public final constants:[Lcom/squareup/wire/ProtoEnum;
.annotation system Ldalvik/annotation/Signature;
value = {
"[TE;"
}
.end annotation
.end field
.field public final isDense:Z
.field public final type:Ljava/lang/Class;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/lang/Class<",
"TE;>;"
}
.end annotation
.end field
.field public final values:[I
# direct methods
.method public static constructor <clinit>()V
.registers 1
new-instance v0, Lcom/squareup/wire/EnumAdapter$1;
invoke-direct {v0}, Lcom/squareup/wire/EnumAdapter$1;-><init>()V
sput-object v0, Lcom/squareup/wire/EnumAdapter;->COMPARATOR:Ljava/util/Comparator;
return-void
.end method
.method public constructor <init>(Ljava/lang/Class;)V
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"TE;>;)V"
}
.end annotation
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
iput-object p1, p0, Lcom/squareup/wire/EnumAdapter;->type:Ljava/lang/Class;
invoke-virtual {p1}, Ljava/lang/Class;->getEnumConstants()[Ljava/lang/Object;
move-result-object p1
check-cast p1, [Lcom/squareup/wire/ProtoEnum;
iput-object p1, p0, Lcom/squareup/wire/EnumAdapter;->constants:[Lcom/squareup/wire/ProtoEnum;
sget-object v0, Lcom/squareup/wire/EnumAdapter;->COMPARATOR:Ljava/util/Comparator;
invoke-static {p1, v0}, Ljava/util/Arrays;->sort([Ljava/lang/Object;Ljava/util/Comparator;)V
iget-object p1, p0, Lcom/squareup/wire/EnumAdapter;->constants:[Lcom/squareup/wire/ProtoEnum;
array-length v0, p1
const/4 v1, 0x0
aget-object p1, p1, v1
invoke-interface {p1}, Lcom/squareup/wire/ProtoEnum;->getValue()I
move-result p1
const/4 v2, 0x1
if-ne p1, v2, :cond_31
iget-object p1, p0, Lcom/squareup/wire/EnumAdapter;->constants:[Lcom/squareup/wire/ProtoEnum;
add-int/lit8 v3, v0, -0x1
aget-object p1, p1, v3
invoke-interface {p1}, Lcom/squareup/wire/ProtoEnum;->getValue()I
move-result p1
if-ne p1, v0, :cond_31
iput-boolean v2, p0, Lcom/squareup/wire/EnumAdapter;->isDense:Z
const/4 p1, 0x0
iput-object p1, p0, Lcom/squareup/wire/EnumAdapter;->values:[I
goto :goto_48
:cond_31
iput-boolean v1, p0, Lcom/squareup/wire/EnumAdapter;->isDense:Z
new-array p1, v0, [I
iput-object p1, p0, Lcom/squareup/wire/EnumAdapter;->values:[I
:goto_37
if-ge v1, v0, :cond_48
iget-object p1, p0, Lcom/squareup/wire/EnumAdapter;->values:[I
iget-object v2, p0, Lcom/squareup/wire/EnumAdapter;->constants:[Lcom/squareup/wire/ProtoEnum;
aget-object v2, v2, v1
invoke-interface {v2}, Lcom/squareup/wire/ProtoEnum;->getValue()I
move-result v2
aput v2, p1, v1
add-int/lit8 v1, v1, 0x1
goto :goto_37
:cond_48
:goto_48
return-void
.end method
# virtual methods
.method public fromInt(I)Lcom/squareup/wire/ProtoEnum;
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(I)TE;"
}
.end annotation
iget-boolean v0, p0, Lcom/squareup/wire/EnumAdapter;->isDense:Z
if-eqz v0, :cond_7
add-int/lit8 v0, p1, -0x1
goto :goto_d
:cond_7
iget-object v0, p0, Lcom/squareup/wire/EnumAdapter;->values:[I
invoke-static {v0, p1}, Ljava/util/Arrays;->binarySearch([II)I
move-result v0
:goto_d
:try_start_d
iget-object v1, p0, Lcom/squareup/wire/EnumAdapter;->constants:[Lcom/squareup/wire/ProtoEnum;
aget-object p1, v1, v0
:try_end_11
.catch Ljava/lang/IndexOutOfBoundsException; {:try_start_d .. :try_end_11} :catch_12
return-object p1
:catch_12
new-instance v0, Ljava/lang/IllegalArgumentException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Unknown enum tag "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string p1, " for "
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object p1, p0, Lcom/squareup/wire/EnumAdapter;->type:Ljava/lang/Class;
invoke-virtual {p1}, Ljava/lang/Class;->getCanonicalName()Ljava/lang/String;
move-result-object p1
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {v0, p1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public toInt(Lcom/squareup/wire/ProtoEnum;)I
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"(TE;)I"
}
.end annotation
invoke-interface {p1}, Lcom/squareup/wire/ProtoEnum;->getValue()I
move-result p1
return p1
.end method