CodedInputStream.smali
.class public abstract Lcom/google/protobuf/CodedInputStream;
.super Ljava/lang/Object;
.source "CodedInputStream.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/google/protobuf/CodedInputStream$StreamDecoder;,
Lcom/google/protobuf/CodedInputStream$UnsafeDirectNioDecoder;,
Lcom/google/protobuf/CodedInputStream$ArrayDecoder;
}
.end annotation
# static fields
.field private static final DEFAULT_BUFFER_SIZE:I = 0x1000
.field private static final DEFAULT_RECURSION_LIMIT:I = 0x64
.field private static final DEFAULT_SIZE_LIMIT:I = 0x7fffffff
# instance fields
.field recursionDepth:I
.field recursionLimit:I
.field sizeLimit:I
# direct methods
.method private constructor <init>()V
.registers 2
.prologue
.line 154
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 69
const/16 v0, 0x64
iput v0, p0, Lcom/google/protobuf/CodedInputStream;->recursionLimit:I
.line 72
const v0, 0x7fffffff
iput v0, p0, Lcom/google/protobuf/CodedInputStream;->sizeLimit:I
.line 154
return-void
.end method
.method synthetic constructor <init>(Lcom/google/protobuf/CodedInputStream$1;)V
.registers 2
.prologue
.line 60
invoke-direct {p0}, Lcom/google/protobuf/CodedInputStream;-><init>()V
return-void
.end method
.method public static decodeZigZag32(I)I
.registers 3
.prologue
.line 453
ushr-int/lit8 v0, p0, 0x1
and-int/lit8 v1, p0, 0x1
neg-int v1, v1
xor-int/2addr v0, v1
return v0
.end method
.method public static decodeZigZag64(J)J
.registers 6
.prologue
.line 466
const/4 v0, 0x1
ushr-long v0, p0, v0
const-wide/16 v2, 0x1
and-long/2addr v2, p0
neg-long v2, v2
xor-long/2addr v0, v2
return-wide v0
.end method
.method public static newInstance(Ljava/io/InputStream;)Lcom/google/protobuf/CodedInputStream;
.registers 2
.prologue
.line 76
const/16 v0, 0x1000
invoke-static {p0, v0}, Lcom/google/protobuf/CodedInputStream;->newInstance(Ljava/io/InputStream;I)Lcom/google/protobuf/CodedInputStream;
move-result-object v0
return-object v0
.end method
.method static newInstance(Ljava/io/InputStream;I)Lcom/google/protobuf/CodedInputStream;
.registers 4
.prologue
.line 81
if-nez p0, :cond_9
.line 83
sget-object v0, Lcom/google/protobuf/Internal;->EMPTY_BYTE_ARRAY:[B
invoke-static {v0}, Lcom/google/protobuf/CodedInputStream;->newInstance([B)Lcom/google/protobuf/CodedInputStream;
move-result-object v0
.line 85
:goto_8
return-object v0
:cond_9
new-instance v0, Lcom/google/protobuf/CodedInputStream$StreamDecoder;
const/4 v1, 0x0
invoke-direct {v0, p0, p1, v1}, Lcom/google/protobuf/CodedInputStream$StreamDecoder;-><init>(Ljava/io/InputStream;ILcom/google/protobuf/CodedInputStream$1;)V
goto :goto_8
.end method
.method public static newInstance(Ljava/nio/ByteBuffer;)Lcom/google/protobuf/CodedInputStream;
.registers 2
.prologue
.line 131
const/4 v0, 0x0
invoke-static {p0, v0}, Lcom/google/protobuf/CodedInputStream;->newInstance(Ljava/nio/ByteBuffer;Z)Lcom/google/protobuf/CodedInputStream;
move-result-object v0
return-object v0
.end method
.method static newInstance(Ljava/nio/ByteBuffer;Z)Lcom/google/protobuf/CodedInputStream;
.registers 6
.prologue
.line 136
invoke-virtual {p0}, Ljava/nio/ByteBuffer;->hasArray()Z
move-result v0
if-eqz v0, :cond_1c
.line 138
invoke-virtual {p0}, Ljava/nio/ByteBuffer;->array()[B
move-result-object v0
invoke-virtual {p0}, Ljava/nio/ByteBuffer;->arrayOffset()I
move-result v1
invoke-virtual {p0}, Ljava/nio/ByteBuffer;->position()I
move-result v2
add-int/2addr v1, v2
invoke-virtual {p0}, Ljava/nio/ByteBuffer;->remaining()I
move-result v2
.line 137
invoke-static {v0, v1, v2, p1}, Lcom/google/protobuf/CodedInputStream;->newInstance([BIIZ)Lcom/google/protobuf/CodedInputStream;
move-result-object v0
.line 150
:goto_1b
return-object v0
.line 141
:cond_1c
invoke-virtual {p0}, Ljava/nio/ByteBuffer;->isDirect()Z
move-result v0
if-eqz v0, :cond_2f
invoke-static {}, Lcom/google/protobuf/CodedInputStream$UnsafeDirectNioDecoder;->isSupported()Z
move-result v0
if-eqz v0, :cond_2f
.line 142
new-instance v0, Lcom/google/protobuf/CodedInputStream$UnsafeDirectNioDecoder;
const/4 v1, 0x0
invoke-direct {v0, p0, p1, v1}, Lcom/google/protobuf/CodedInputStream$UnsafeDirectNioDecoder;-><init>(Ljava/nio/ByteBuffer;ZLcom/google/protobuf/CodedInputStream$1;)V
goto :goto_1b
.line 148
:cond_2f
invoke-virtual {p0}, Ljava/nio/ByteBuffer;->remaining()I
move-result v0
new-array v0, v0, [B
.line 149
invoke-virtual {p0}, Ljava/nio/ByteBuffer;->duplicate()Ljava/nio/ByteBuffer;
move-result-object v1
invoke-virtual {v1, v0}, Ljava/nio/ByteBuffer;->get([B)Ljava/nio/ByteBuffer;
.line 150
const/4 v1, 0x0
array-length v2, v0
const/4 v3, 0x1
invoke-static {v0, v1, v2, v3}, Lcom/google/protobuf/CodedInputStream;->newInstance([BIIZ)Lcom/google/protobuf/CodedInputStream;
move-result-object v0
goto :goto_1b
.end method
.method public static newInstance([B)Lcom/google/protobuf/CodedInputStream;
.registers 3
.prologue
.line 90
const/4 v0, 0x0
array-length v1, p0
invoke-static {p0, v0, v1}, Lcom/google/protobuf/CodedInputStream;->newInstance([BII)Lcom/google/protobuf/CodedInputStream;
move-result-object v0
return-object v0
.end method
.method public static newInstance([BII)Lcom/google/protobuf/CodedInputStream;
.registers 4
.prologue
.line 95
const/4 v0, 0x0
invoke-static {p0, p1, p2, v0}, Lcom/google/protobuf/CodedInputStream;->newInstance([BIIZ)Lcom/google/protobuf/CodedInputStream;
move-result-object v0
return-object v0
.end method
.method static newInstance([BIIZ)Lcom/google/protobuf/CodedInputStream;
.registers 10
.prologue
.line 101
new-instance v0, Lcom/google/protobuf/CodedInputStream$ArrayDecoder;
const/4 v5, 0x0
move-object v1, p0
move v2, p1
move v3, p2
move v4, p3
invoke-direct/range {v0 .. v5}, Lcom/google/protobuf/CodedInputStream$ArrayDecoder;-><init>([BIIZLcom/google/protobuf/CodedInputStream$1;)V
.line 108
:try_start_a
invoke-virtual {v0, p2}, Lcom/google/protobuf/CodedInputStream$ArrayDecoder;->pushLimit(I)I
:try_end_d
.catch Lcom/google/protobuf/InvalidProtocolBufferException; {:try_start_a .. :try_end_d} :catch_e
.line 119
return-object v0
.line 109
:catch_e
move-exception v0
.line 117
new-instance v1, Ljava/lang/IllegalArgumentException;
invoke-direct {v1, v0}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/Throwable;)V
throw v1
.end method
.method public static readRawVarint32(ILjava/io/InputStream;)I
.registers 6
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.prologue
const/4 v3, -0x1
.line 475
and-int/lit16 v0, p0, 0x80
if-nez v0, :cond_6
.line 498
:cond_5
:goto_5
return p0
.line 479
:cond_6
and-int/lit8 p0, p0, 0x7f
.line 480
const/4 v0, 0x7
.line 481
:goto_9
const/16 v1, 0x20
if-ge v0, v1, :cond_25
.line 482
invoke-virtual {p1}, Ljava/io/InputStream;->read()I
move-result v1
.line 483
if-ne v1, v3, :cond_18
.line 484
invoke-static {}, Lcom/google/protobuf/InvalidProtocolBufferException;->truncatedMessage()Lcom/google/protobuf/InvalidProtocolBufferException;
move-result-object v0
throw v0
.line 486
:cond_18
and-int/lit8 v2, v1, 0x7f
shl-int/2addr v2, v0
or-int/2addr p0, v2
.line 487
and-int/lit16 v1, v1, 0x80
if-eqz v1, :cond_5
.line 481
add-int/lit8 v0, v0, 0x7
goto :goto_9
.line 492
:cond_23
add-int/lit8 v0, v0, 0x7
:cond_25
const/16 v1, 0x40
if-ge v0, v1, :cond_39
.line 493
invoke-virtual {p1}, Ljava/io/InputStream;->read()I
move-result v1
.line 494
if-ne v1, v3, :cond_34
.line 495
invoke-static {}, Lcom/google/protobuf/InvalidProtocolBufferException;->truncatedMessage()Lcom/google/protobuf/InvalidProtocolBufferException;
move-result-object v0
throw v0
.line 497
:cond_34
and-int/lit16 v1, v1, 0x80
if-nez v1, :cond_23
goto :goto_5
.line 501
:cond_39
invoke-static {}, Lcom/google/protobuf/InvalidProtocolBufferException;->malformedVarint()Lcom/google/protobuf/InvalidProtocolBufferException;
move-result-object v0
throw v0
.end method
.method static readRawVarint32(Ljava/io/InputStream;)I
.registers 3
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.prologue
.line 511
invoke-virtual {p0}, Ljava/io/InputStream;->read()I
move-result v0
.line 512
const/4 v1, -0x1
if-ne v0, v1, :cond_c
.line 513
invoke-static {}, Lcom/google/protobuf/InvalidProtocolBufferException;->truncatedMessage()Lcom/google/protobuf/InvalidProtocolBufferException;
move-result-object v0
throw v0
.line 515
:cond_c
invoke-static {v0, p0}, Lcom/google/protobuf/CodedInputStream;->readRawVarint32(ILjava/io/InputStream;)I
move-result v0
return v0
.end method
# virtual methods
.method public abstract checkLastTagWas(I)V
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/protobuf/InvalidProtocolBufferException;
}
.end annotation
.end method
.method public abstract enableAliasing(Z)V
.end method
.method public abstract getBytesUntilLimit()I
.end method
.method public abstract getLastTag()I
.end method
.method public abstract getTotalBytesRead()I
.end method
.method public abstract isAtEnd()Z
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract popLimit(I)V
.end method
.method public abstract pushLimit(I)I
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/protobuf/InvalidProtocolBufferException;
}
.end annotation
.end method
.method public abstract readBool()Z
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readByteArray()[B
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readByteBuffer()Ljava/nio/ByteBuffer;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readBytes()Lcom/google/protobuf/ByteString;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readDouble()D
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readEnum()I
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readFixed32()I
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readFixed64()J
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readFloat()F
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readGroup(ILcom/google/protobuf/Parser;Lcom/google/protobuf/ExtensionRegistryLite;)Lcom/google/protobuf/MessageLite;
.annotation system Ldalvik/annotation/Signature;
value = {
"<T::",
"Lcom/google/protobuf/MessageLite;",
">(I",
"Lcom/google/protobuf/Parser",
"<TT;>;",
"Lcom/google/protobuf/ExtensionRegistryLite;",
")TT;"
}
.end annotation
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readGroup(ILcom/google/protobuf/MessageLite$Builder;Lcom/google/protobuf/ExtensionRegistryLite;)V
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readInt32()I
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readInt64()J
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readMessage(Lcom/google/protobuf/Parser;Lcom/google/protobuf/ExtensionRegistryLite;)Lcom/google/protobuf/MessageLite;
.annotation system Ldalvik/annotation/Signature;
value = {
"<T::",
"Lcom/google/protobuf/MessageLite;",
">(",
"Lcom/google/protobuf/Parser",
"<TT;>;",
"Lcom/google/protobuf/ExtensionRegistryLite;",
")TT;"
}
.end annotation
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readMessage(Lcom/google/protobuf/MessageLite$Builder;Lcom/google/protobuf/ExtensionRegistryLite;)V
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readRawByte()B
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readRawBytes(I)[B
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readRawLittleEndian32()I
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readRawLittleEndian64()J
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readRawVarint32()I
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readRawVarint64()J
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method abstract readRawVarint64SlowPath()J
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readSFixed32()I
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readSFixed64()J
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readSInt32()I
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readSInt64()J
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readString()Ljava/lang/String;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readStringRequireUtf8()Ljava/lang/String;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readTag()I
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readUInt32()I
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readUInt64()J
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract readUnknownGroup(ILcom/google/protobuf/MessageLite$Builder;)V
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.end method
.method public abstract resetSizeCounter()V
.end method
.method public final setRecursionLimit(I)I
.registers 5
.prologue
.line 344
if-gez p1, :cond_1b
.line 345
new-instance v0, Ljava/lang/IllegalArgumentException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Recursion limit cannot be negative: "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 347
:cond_1b
iget v0, p0, Lcom/google/protobuf/CodedInputStream;->recursionLimit:I
.line 348
iput p1, p0, Lcom/google/protobuf/CodedInputStream;->recursionLimit:I
.line 349
return v0
.end method
.method public final setSizeLimit(I)I
.registers 5
.prologue
.line 367
if-gez p1, :cond_1b
.line 368
new-instance v0, Ljava/lang/IllegalArgumentException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Size limit cannot be negative: "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 370
:cond_1b
iget v0, p0, Lcom/google/protobuf/CodedInputStream;->sizeLimit:I
.line 371
iput p1, p0, Lcom/google/protobuf/CodedInputStream;->sizeLimit:I
.line 372
return v0
.end method
.method public abstract skipField(I)Z
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract skipField(ILcom/google/protobuf/CodedOutputStream;)Z
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.end method
.method public abstract skipMessage()V
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract skipMessage(Lcom/google/protobuf/CodedOutputStream;)V
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method
.method public abstract skipRawBytes(I)V
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.end method