AbstractTrie.smali

.class abstract Lorg/ardverk/collection/AbstractTrie;
.super Ljava/util/AbstractMap;

# interfaces
.implements Ldxoptimizer/csn;
.implements Ljava/io/Serializable;


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lorg/ardverk/collection/AbstractTrie$BasicEntry;
    }
.end annotation

.annotation system Ldalvik/annotation/Signature;
    value = {
        "<K:",
        "Ljava/lang/Object;",
        "V:",
        "Ljava/lang/Object;",
        ">",
        "Ljava/util/AbstractMap",
        "<TK;TV;>;",
        "Ldxoptimizer/csn",
        "<TK;TV;>;",
        "Ljava/io/Serializable;"
    }
.end annotation


# static fields
.field private static final serialVersionUID:J = -0x583c8c5bd8acba73L


# instance fields
.field protected final keyAnalyzer:Ldxoptimizer/csm;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ldxoptimizer/csm",
            "<-TK;>;"
        }
    .end annotation
.end field


# direct methods
.method public constructor <init>()V
    .registers 2

    invoke-static {}, Lorg/ardverk/collection/DefaultKeyAnalyzer;->singleton()Ldxoptimizer/csm;

    move-result-object v0

    invoke-direct {p0, v0}, Lorg/ardverk/collection/AbstractTrie;-><init>(Ldxoptimizer/csm;)V

    return-void
.end method

.method public constructor <init>(Ldxoptimizer/csm;)V
    .registers 3
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ldxoptimizer/csm",
            "<-TK;>;)V"
        }
    .end annotation

    invoke-direct {p0}, Ljava/util/AbstractMap;-><init>()V

    const-string v0, "keyAnalyzer"

    invoke-static {p1, v0}, Lorg/ardverk/collection/Tries;->a(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ldxoptimizer/csm;

    iput-object v0, p0, Lorg/ardverk/collection/AbstractTrie;->keyAnalyzer:Ldxoptimizer/csm;

    return-void
.end method

.method private bitIndex(Ljava/lang/Object;)I
    .registers 5
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(TK;)I"
        }
    .end annotation

    invoke-virtual {p0, p1}, Lorg/ardverk/collection/AbstractTrie;->lengthInBits(Ljava/lang/Object;)I

    move-result v1

    const/4 v0, 0x0

    :goto_5
    if-ge v0, v1, :cond_11

    invoke-virtual {p0, p1, v0}, Lorg/ardverk/collection/AbstractTrie;->isBitSet(Ljava/lang/Object;I)Z

    move-result v2

    if-eqz v2, :cond_e

    :goto_d
    return v0

    :cond_e
    add-int/lit8 v0, v0, 0x1

    goto :goto_5

    :cond_11
    const/4 v0, -0x1

    goto :goto_d
.end method


# virtual methods
.method final bitIndex(Ljava/lang/Object;Ljava/lang/Object;)I
    .registers 4
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(TK;TK;)I"
        }
    .end annotation

    if-eqz p1, :cond_b

    if-eqz p2, :cond_b

    iget-object v0, p0, Lorg/ardverk/collection/AbstractTrie;->keyAnalyzer:Ldxoptimizer/csm;

    invoke-interface {v0, p1, p2}, Ldxoptimizer/csm;->bitIndex(Ljava/lang/Object;Ljava/lang/Object;)I

    move-result v0

    :goto_a
    return v0

    :cond_b
    if-eqz p1, :cond_14

    if-nez p2, :cond_14

    invoke-direct {p0, p1}, Lorg/ardverk/collection/AbstractTrie;->bitIndex(Ljava/lang/Object;)I

    move-result v0

    goto :goto_a

    :cond_14
    if-nez p1, :cond_1d

    if-eqz p2, :cond_1d

    invoke-direct {p0, p2}, Lorg/ardverk/collection/AbstractTrie;->bitIndex(Ljava/lang/Object;)I

    move-result v0

    goto :goto_a

    :cond_1d
    const/4 v0, -0x1

    goto :goto_a
.end method

.method final compareKeys(Ljava/lang/Object;Ljava/lang/Object;)Z
    .registers 6
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(TK;TK;)Z"
        }
    .end annotation

    const/4 v0, 0x1

    const/4 v1, 0x0

    if-nez p1, :cond_9

    if-nez p2, :cond_7

    :cond_6
    :goto_6
    return v0

    :cond_7
    move v0, v1

    goto :goto_6

    :cond_9
    if-nez p2, :cond_f

    if-eqz p1, :cond_6

    move v0, v1

    goto :goto_6

    :cond_f
    iget-object v2, p0, Lorg/ardverk/collection/AbstractTrie;->keyAnalyzer:Ldxoptimizer/csm;

    invoke-interface {v2, p1, p2}, Ldxoptimizer/csm;->compare(Ljava/lang/Object;Ljava/lang/Object;)I

    move-result v2

    if-eqz v2, :cond_6

    move v0, v1

    goto :goto_6
.end method

.method public getKeyAnalyzer()Ldxoptimizer/csm;
    .registers 2
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ldxoptimizer/csm",
            "<-TK;>;"
        }
    .end annotation

    iget-object v0, p0, Lorg/ardverk/collection/AbstractTrie;->keyAnalyzer:Ldxoptimizer/csm;

    return-object v0
.end method

.method final isBitSet(Ljava/lang/Object;I)Z
    .registers 4
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(TK;I)Z"
        }
    .end annotation

    if-nez p1, :cond_4

    const/4 v0, 0x0

    :goto_3
    return v0

    :cond_4
    iget-object v0, p0, Lorg/ardverk/collection/AbstractTrie;->keyAnalyzer:Ldxoptimizer/csm;

    invoke-interface {v0, p1, p2}, Ldxoptimizer/csm;->isBitSet(Ljava/lang/Object;I)Z

    move-result v0

    goto :goto_3
.end method

.method final lengthInBits(Ljava/lang/Object;)I
    .registers 3
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(TK;)I"
        }
    .end annotation

    if-nez p1, :cond_4

    const/4 v0, 0x0

    :goto_3
    return v0

    :cond_4
    iget-object v0, p0, Lorg/ardverk/collection/AbstractTrie;->keyAnalyzer:Ldxoptimizer/csm;

    invoke-interface {v0, p1}, Ldxoptimizer/csm;->lengthInBits(Ljava/lang/Object;)I

    move-result v0

    goto :goto_3
.end method

.method public selectKey(Ljava/lang/Object;)Ljava/lang/Object;
    .registers 3
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(TK;)TK;"
        }
    .end annotation

    invoke-virtual {p0, p1}, Lorg/ardverk/collection/AbstractTrie;->select(Ljava/lang/Object;)Ljava/util/Map$Entry;

    move-result-object v0

    if-eqz v0, :cond_b

    invoke-interface {v0}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;

    move-result-object v0

    :goto_a
    return-object v0

    :cond_b
    const/4 v0, 0x0

    goto :goto_a
.end method

.method public selectValue(Ljava/lang/Object;)Ljava/lang/Object;
    .registers 3
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(TK;)TV;"
        }
    .end annotation

    invoke-virtual {p0, p1}, Lorg/ardverk/collection/AbstractTrie;->select(Ljava/lang/Object;)Ljava/util/Map$Entry;

    move-result-object v0

    if-eqz v0, :cond_b

    invoke-interface {v0}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;

    move-result-object v0

    :goto_a
    return-object v0

    :cond_b
    const/4 v0, 0x0

    goto :goto_a
.end method

.method public toString()Ljava/lang/String;
    .registers 5

    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v0, "Trie["

    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {p0}, Lorg/ardverk/collection/AbstractTrie;->size()I

    move-result v2

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v0

    const-string v2, "]={\n"

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {p0}, Lorg/ardverk/collection/AbstractTrie;->entrySet()Ljava/util/Set;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;

    move-result-object v2

    :goto_20
    invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_3c

    invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/util/Map$Entry;

    const-string v3, "  "

    invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v3

    invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v0

    const-string v3, "\n"

    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    goto :goto_20

    :cond_3c
    const-string v0, "}\n"

    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method