BinTrie.smali
.class public Lcom/hankcs/hanlp/collection/trie/bintrie/BinTrie;
.super Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;
# interfaces
.implements Ljava/io/Externalizable;
# annotations
.annotation system Ldalvik/annotation/Signature;
value = {
"<V:",
"Ljava/lang/Object;",
">",
"Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode",
"<TV;>;",
"Ljava/io/Externalizable;"
}
.end annotation
# instance fields
.field private f:I
# direct methods
.method public constructor <init>()V
.registers 2
invoke-direct {p0}, Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;-><init>()V
const/high16 v0, 0x10000
new-array v0, v0, [Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;
iput-object v0, p0, Lcom/hankcs/hanlp/collection/trie/bintrie/BinTrie;->b:[Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;
const/4 v0, 0x0
iput v0, p0, Lcom/hankcs/hanlp/collection/trie/bintrie/BinTrie;->f:I
sget-object v0, Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode$Status;->b:Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode$Status;
iput-object v0, p0, Lcom/hankcs/hanlp/collection/trie/bintrie/BinTrie;->c:Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode$Status;
return-void
.end method
# virtual methods
.method protected a()C
.registers 2
const/4 v0, 0x0
return v0
.end method
.method public a(C)Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;
.registers 3
iget-object v0, p0, Lcom/hankcs/hanlp/collection/trie/bintrie/BinTrie;->b:[Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;
aget-object v0, v0, p1
return-object v0
.end method
.method public a(Ljava/lang/String;Ljava/lang/Object;)V
.registers 10
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/String;",
"TV;)V"
}
.end annotation
invoke-virtual {p1}, Ljava/lang/String;->length()I
move-result v0
if-nez v0, :cond_7
:cond_6
:goto_6
return-void
:cond_7
invoke-virtual {p1}, Ljava/lang/String;->toCharArray()[C
move-result-object v2
const/4 v0, 0x0
move-object v1, p0
:goto_d
array-length v3, v2
add-int/lit8 v3, v3, -0x1
if-ge v0, v3, :cond_28
new-instance v3, Lcom/hankcs/hanlp/collection/trie/bintrie/a;
aget-char v4, v2, v0
sget-object v5, Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode$Status;->b:Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode$Status;
const/4 v6, 0x0
invoke-direct {v3, v4, v5, v6}, Lcom/hankcs/hanlp/collection/trie/bintrie/a;-><init>(CLcom/hankcs/hanlp/collection/trie/bintrie/BaseNode$Status;Ljava/lang/Object;)V
invoke-virtual {v1, v3}, Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;->a(Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;)Z
aget-char v3, v2, v0
invoke-virtual {v1, v3}, Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;->a(C)Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;
move-result-object v1
add-int/lit8 v0, v0, 0x1
goto :goto_d
:cond_28
new-instance v0, Lcom/hankcs/hanlp/collection/trie/bintrie/a;
array-length v3, v2
add-int/lit8 v3, v3, -0x1
aget-char v2, v2, v3
sget-object v3, Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode$Status;->d:Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode$Status;
invoke-direct {v0, v2, v3, p2}, Lcom/hankcs/hanlp/collection/trie/bintrie/a;-><init>(CLcom/hankcs/hanlp/collection/trie/bintrie/BaseNode$Status;Ljava/lang/Object;)V
invoke-virtual {v1, v0}, Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;->a(Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;)Z
move-result v0
if-eqz v0, :cond_6
iget v0, p0, Lcom/hankcs/hanlp/collection/trie/bintrie/BinTrie;->f:I
add-int/lit8 v0, v0, 0x1
iput v0, p0, Lcom/hankcs/hanlp/collection/trie/bintrie/BinTrie;->f:I
goto :goto_6
.end method
.method protected a(Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;)Z
.registers 7
const/4 v0, 0x1
const/4 v1, 0x0
invoke-virtual {p1}, Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;->a()C
move-result v2
invoke-virtual {p0, v2}, Lcom/hankcs/hanlp/collection/trie/bintrie/BinTrie;->a(C)Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;
move-result-object v3
if-nez v3, :cond_12
iget-object v1, p0, Lcom/hankcs/hanlp/collection/trie/bintrie/BinTrie;->b:[Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;
aput-object p1, v1, v2
move v1, v0
:cond_11
:goto_11
return v1
:cond_12
sget-object v2, Lcom/hankcs/hanlp/collection/trie/bintrie/BinTrie$1;->a:[I
iget-object v4, p1, Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;->c:Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode$Status;
invoke-virtual {v4}, Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode$Status;->ordinal()I
move-result v4
aget v2, v2, v4
packed-switch v2, :pswitch_data_52
goto :goto_11
:pswitch_20
iget-object v2, v3, Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;->c:Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode$Status;
sget-object v4, Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode$Status;->b:Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode$Status;
if-eq v2, v4, :cond_11
sget-object v1, Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode$Status;->b:Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode$Status;
iput-object v1, v3, Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;->c:Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode$Status;
move v1, v0
goto :goto_11
:pswitch_2c
iget-object v0, v3, Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;->c:Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode$Status;
sget-object v2, Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode$Status;->d:Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode$Status;
if-ne v0, v2, :cond_11
sget-object v0, Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode$Status;->c:Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode$Status;
iput-object v0, v3, Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;->c:Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode$Status;
goto :goto_11
:pswitch_37
iget-object v2, v3, Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;->c:Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode$Status;
sget-object v4, Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode$Status;->b:Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode$Status;
if-ne v2, v4, :cond_41
sget-object v2, Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode$Status;->c:Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode$Status;
iput-object v2, v3, Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;->c:Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode$Status;
:cond_41
invoke-virtual {v3}, Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;->b()Ljava/lang/Object;
move-result-object v2
if-nez v2, :cond_50
:goto_47
invoke-virtual {p1}, Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;->b()Ljava/lang/Object;
move-result-object v1
invoke-virtual {v3, v1}, Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;->a(Ljava/lang/Object;)V
move v1, v0
goto :goto_11
:cond_50
move v0, v1
goto :goto_47
:pswitch_data_52
.packed-switch 0x1
:pswitch_20
:pswitch_2c
:pswitch_37
.end packed-switch
.end method
.method public c()Ljava/util/Set;
.registers 9
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/Set",
"<",
"Ljava/util/Map$Entry",
"<",
"Ljava/lang/String;",
"TV;>;>;"
}
.end annotation
new-instance v1, Ljava/util/TreeSet;
invoke-direct {v1}, Ljava/util/TreeSet;-><init>()V
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
iget-object v3, p0, Lcom/hankcs/hanlp/collection/trie/bintrie/BinTrie;->b:[Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;
array-length v4, v3
const/4 v0, 0x0
:goto_e
if-ge v0, v4, :cond_24
aget-object v5, v3, v0
if-nez v5, :cond_17
:goto_14
add-int/lit8 v0, v0, 0x1
goto :goto_e
:cond_17
new-instance v6, Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v7
invoke-direct {v6, v7}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v5, v6, v1}, Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;->a(Ljava/lang/StringBuilder;Ljava/util/Set;)V
goto :goto_14
:cond_24
return-object v1
.end method
.method public readExternal(Ljava/io/ObjectInput;)V
.registers 5
invoke-interface {p1}, Ljava/io/ObjectInput;->readInt()I
move-result v0
iput v0, p0, Lcom/hankcs/hanlp/collection/trie/bintrie/BinTrie;->f:I
const/4 v0, 0x0
:goto_7
iget-object v1, p0, Lcom/hankcs/hanlp/collection/trie/bintrie/BinTrie;->b:[Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;
array-length v1, v1
if-ge v0, v1, :cond_26
invoke-interface {p1}, Ljava/io/ObjectInput;->readInt()I
move-result v1
const/4 v2, 0x1
if-ne v1, v2, :cond_23
iget-object v1, p0, Lcom/hankcs/hanlp/collection/trie/bintrie/BinTrie;->b:[Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;
new-instance v2, Lcom/hankcs/hanlp/collection/trie/bintrie/a;
invoke-direct {v2}, Lcom/hankcs/hanlp/collection/trie/bintrie/a;-><init>()V
aput-object v2, v1, v0
iget-object v1, p0, Lcom/hankcs/hanlp/collection/trie/bintrie/BinTrie;->b:[Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;
aget-object v1, v1, v0
invoke-virtual {v1, p1}, Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;->a(Ljava/io/ObjectInput;)V
:cond_23
add-int/lit8 v0, v0, 0x1
goto :goto_7
:cond_26
return-void
.end method
.method public writeExternal(Ljava/io/ObjectOutput;)V
.registers 8
const/4 v1, 0x0
iget v0, p0, Lcom/hankcs/hanlp/collection/trie/bintrie/BinTrie;->f:I
invoke-interface {p1, v0}, Ljava/io/ObjectOutput;->writeInt(I)V
iget-object v2, p0, Lcom/hankcs/hanlp/collection/trie/bintrie/BinTrie;->b:[Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;
array-length v3, v2
move v0, v1
:goto_a
if-ge v0, v3, :cond_1e
aget-object v4, v2, v0
if-nez v4, :cond_16
invoke-interface {p1, v1}, Ljava/io/ObjectOutput;->writeInt(I)V
:goto_13
add-int/lit8 v0, v0, 0x1
goto :goto_a
:cond_16
const/4 v5, 0x1
invoke-interface {p1, v5}, Ljava/io/ObjectOutput;->writeInt(I)V
invoke-virtual {v4, p1}, Lcom/hankcs/hanlp/collection/trie/bintrie/BaseNode;->a(Ljava/io/ObjectOutput;)V
goto :goto_13
:cond_1e
return-void
.end method