DateTimeFormatterBuilder$MatchingParser.smali

.class Lorg/joda/time/format/DateTimeFormatterBuilder$MatchingParser;
.super Ljava/lang/Object;
.source "DateTimeFormatterBuilder.java"

# interfaces
.implements Lorg/joda/time/format/InternalParser;


# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
    value = Lorg/joda/time/format/DateTimeFormatterBuilder;
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0x8
    name = "MatchingParser"
.end annotation


# instance fields
.field private final iParsedLengthEstimate:I

.field private final iParsers:[Lorg/joda/time/format/InternalParser;


# direct methods
.method constructor <init>([Lorg/joda/time/format/InternalParser;)V
    .registers 5

    .prologue
    .line 2543
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 2544
    iput-object p1, p0, Lorg/joda/time/format/DateTimeFormatterBuilder$MatchingParser;->iParsers:[Lorg/joda/time/format/InternalParser;

    .line 2545
    const/4 v1, 0x0

    .line 2546
    array-length v0, p1

    :goto_7
    add-int/lit8 v2, v0, -0x1

    if-ltz v2, :cond_18

    .line 2547
    aget-object v0, p1, v2

    .line 2548
    if-eqz v0, :cond_1b

    .line 2549
    invoke-interface {v0}, Lorg/joda/time/format/InternalParser;->estimateParsedLength()I

    move-result v0

    .line 2550
    if-le v0, v1, :cond_1b

    :goto_15
    move v1, v0

    move v0, v2

    .line 2554
    goto :goto_7

    .line 2555
    :cond_18
    iput v1, p0, Lorg/joda/time/format/DateTimeFormatterBuilder$MatchingParser;->iParsedLengthEstimate:I

    .line 2556
    return-void

    :cond_1b
    move v0, v1

    goto :goto_15
.end method


# virtual methods
.method public estimateParsedLength()I
    .registers 2

    .prologue
    .line 2559
    iget v0, p0, Lorg/joda/time/format/DateTimeFormatterBuilder$MatchingParser;->iParsedLengthEstimate:I

    return v0
.end method

.method public parseInto(Lorg/joda/time/format/DateTimeParserBucket;Ljava/lang/CharSequence;I)I
    .registers 14

    .prologue
    const/4 v5, 0x0

    .line 2563
    iget-object v7, p0, Lorg/joda/time/format/DateTimeFormatterBuilder$MatchingParser;->iParsers:[Lorg/joda/time/format/InternalParser;

    .line 2564
    array-length v8, v7

    .line 2566
    invoke-virtual {p1}, Lorg/joda/time/format/DateTimeParserBucket;->saveState()Ljava/lang/Object;

    move-result-object v9

    .line 2570
    const/4 v2, 0x0

    move v6, v5

    move v0, p3

    move v4, p3

    .line 2574
    :goto_c
    if-ge v6, v8, :cond_5b

    .line 2575
    aget-object v1, v7, v6

    .line 2576
    if-nez v1, :cond_23

    .line 2578
    if-gt v4, p3, :cond_15

    .line 2616
    :goto_14
    return p3

    .line 2581
    :cond_15
    const/4 v1, 0x1

    .line 2608
    :goto_16
    if-gt v4, p3, :cond_1c

    if-ne v4, p3, :cond_55

    if-eqz v1, :cond_55

    .line 2610
    :cond_1c
    if-eqz v2, :cond_21

    .line 2611
    invoke-virtual {p1, v2}, Lorg/joda/time/format/DateTimeParserBucket;->restoreState(Ljava/lang/Object;)Z

    :cond_21
    move p3, v4

    .line 2613
    goto :goto_14

    .line 2584
    :cond_23
    invoke-interface {v1, p1, p2, p3}, Lorg/joda/time/format/InternalParser;->parseInto(Lorg/joda/time/format/DateTimeParserBucket;Ljava/lang/CharSequence;I)I

    move-result v3

    .line 2585
    if-lt v3, p3, :cond_4b

    .line 2586
    if-le v3, v4, :cond_58

    .line 2587
    invoke-interface {p2}, Ljava/lang/CharSequence;->length()I

    move-result v1

    if-ge v3, v1, :cond_3b

    add-int/lit8 v1, v6, 0x1

    if-ge v1, v8, :cond_3b

    add-int/lit8 v1, v6, 0x1

    aget-object v1, v7, v1

    if-nez v1, :cond_3d

    :cond_3b
    move p3, v3

    .line 2592
    goto :goto_14

    .line 2595
    :cond_3d
    invoke-virtual {p1}, Lorg/joda/time/format/DateTimeParserBucket;->saveState()Ljava/lang/Object;

    move-result-object v1

    move v2, v3

    .line 2605
    :goto_42
    invoke-virtual {p1, v9}, Lorg/joda/time/format/DateTimeParserBucket;->restoreState(Ljava/lang/Object;)Z

    .line 2574
    add-int/lit8 v3, v6, 0x1

    move v6, v3

    move v4, v2

    move-object v2, v1

    goto :goto_c

    .line 2598
    :cond_4b
    if-gez v3, :cond_58

    .line 2599
    xor-int/lit8 v1, v3, -0x1

    .line 2600
    if-le v1, v0, :cond_58

    move v0, v1

    move-object v1, v2

    move v2, v4

    .line 2601
    goto :goto_42

    .line 2616
    :cond_55
    xor-int/lit8 p3, v0, -0x1

    goto :goto_14

    :cond_58
    move-object v1, v2

    move v2, v4

    goto :goto_42

    :cond_5b
    move v1, v5

    goto :goto_16
.end method