public final class android.database.CursorJoiner implements java.util.Iterator<android.database.CursorJoiner$Result>, java.lang.Iterable<android.database.CursorJoiner$Result>
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: android.database.CursorJoiner
super_class: java.lang.Object
{
private android.database.Cursor mCursorLeft;
descriptor: Landroid/database/Cursor;
flags: (0x0002) ACC_PRIVATE
private android.database.Cursor mCursorRight;
descriptor: Landroid/database/Cursor;
flags: (0x0002) ACC_PRIVATE
private boolean mCompareResultIsValid;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private android.database.CursorJoiner$Result mCompareResult;
descriptor: Landroid/database/CursorJoiner$Result;
flags: (0x0002) ACC_PRIVATE
private int[] mColumnsLeft;
descriptor: [I
flags: (0x0002) ACC_PRIVATE
private int[] mColumnsRight;
descriptor: [I
flags: (0x0002) ACC_PRIVATE
private java.lang.String[] mValues;
descriptor: [Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
private static volatile int[] $SWITCH_TABLE$android$database$CursorJoiner$Result;
descriptor: [I
flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Landroid/database/CursorJoiner;
invokevirtual java.lang.Class.desiredAssertionStatus:()Z
ifne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: putstatic android.database.CursorJoiner.$assertionsDisabled:Z
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(android.database.Cursor, java.lang.String[], android.database.Cursor, java.lang.String[]);
descriptor: (Landroid/database/Cursor;[Ljava/lang/String;Landroid/database/Cursor;[Ljava/lang/String;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 2
arraylength
aload 4
arraylength
if_icmpeq 7
2: new java.lang.IllegalArgumentException
dup
3: new java.lang.StringBuilder
dup
ldc "you must have the same number of columns on the left and right, "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
4: aload 2
arraylength
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " != "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 4
arraylength
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
5: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
6: invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
7: StackMap locals: android.database.CursorJoiner android.database.Cursor java.lang.String[] android.database.Cursor java.lang.String[]
StackMap stack:
aload 0
aload 1
putfield android.database.CursorJoiner.mCursorLeft:Landroid/database/Cursor;
8: aload 0
aload 3
putfield android.database.CursorJoiner.mCursorRight:Landroid/database/Cursor;
9: aload 0
getfield android.database.CursorJoiner.mCursorLeft:Landroid/database/Cursor;
invokeinterface android.database.Cursor.moveToFirst:()Z
pop
10: aload 0
getfield android.database.CursorJoiner.mCursorRight:Landroid/database/Cursor;
invokeinterface android.database.Cursor.moveToFirst:()Z
pop
11: aload 0
iconst_0
putfield android.database.CursorJoiner.mCompareResultIsValid:Z
12: aload 0
aload 0
aload 1
aload 2
invokevirtual android.database.CursorJoiner.buildColumnIndiciesArray:(Landroid/database/Cursor;[Ljava/lang/String;)[I
putfield android.database.CursorJoiner.mColumnsLeft:[I
13: aload 0
aload 0
aload 3
aload 4
invokevirtual android.database.CursorJoiner.buildColumnIndiciesArray:(Landroid/database/Cursor;[Ljava/lang/String;)[I
putfield android.database.CursorJoiner.mColumnsRight:[I
14: aload 0
aload 0
getfield android.database.CursorJoiner.mColumnsLeft:[I
arraylength
iconst_2
imul
anewarray java.lang.String
putfield android.database.CursorJoiner.mValues:[Ljava/lang/String;
15: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Landroid/database/CursorJoiner;
0 16 1 cursorLeft Landroid/database/Cursor;
0 16 2 columnNamesLeft [Ljava/lang/String;
0 16 3 cursorRight Landroid/database/Cursor;
0 16 4 columnNamesRight [Ljava/lang/String;
MethodParameters:
Name Flags
cursorLeft
columnNamesLeft
cursorRight
columnNamesRight
public java.util.Iterator<android.database.CursorJoiner$Result> iterator();
descriptor: ()Ljava/util/Iterator;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Landroid/database/CursorJoiner;
Signature: ()Ljava/util/Iterator<Landroid/database/CursorJoiner$Result;>;
private int[] buildColumnIndiciesArray(android.database.Cursor, java.lang.String[]);
descriptor: (Landroid/database/Cursor;[Ljava/lang/String;)[I
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 2
arraylength
newarray 10
astore 3
start local 3 1: iconst_0
istore 4
start local 4 2: goto 5
3: StackMap locals: int[] int
StackMap stack:
aload 3
iload 4
aload 1
aload 2
iload 4
aaload
invokeinterface android.database.Cursor.getColumnIndexOrThrow:(Ljava/lang/String;)I
iastore
4: iinc 4 1
StackMap locals:
StackMap stack:
5: iload 4
aload 2
arraylength
if_icmplt 3
end local 4 6: aload 3
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Landroid/database/CursorJoiner;
0 7 1 cursor Landroid/database/Cursor;
0 7 2 columnNames [Ljava/lang/String;
1 7 3 columns [I
2 6 4 i I
MethodParameters:
Name Flags
cursor
columnNames
public boolean hasNext();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=1, args_size=1
start local 0 0: aload 0
getfield android.database.CursorJoiner.mCompareResultIsValid:Z
ifeq 11
1: invokestatic android.database.CursorJoiner.$SWITCH_TABLE$android$database$CursorJoiner$Result:()[I
aload 0
getfield android.database.CursorJoiner.mCompareResult:Landroid/database/CursorJoiner$Result;
invokevirtual android.database.CursorJoiner$Result.ordinal:()I
iaload
tableswitch { // 1 - 3
1: 6
2: 4
3: 2
default: 8
}
2: StackMap locals:
StackMap stack:
aload 0
getfield android.database.CursorJoiner.mCursorLeft:Landroid/database/Cursor;
invokeinterface android.database.Cursor.isLast:()Z
ifeq 3
aload 0
getfield android.database.CursorJoiner.mCursorRight:Landroid/database/Cursor;
invokeinterface android.database.Cursor.isLast:()Z
ifeq 3
iconst_0
ireturn
StackMap locals:
StackMap stack:
3: iconst_1
ireturn
4: StackMap locals:
StackMap stack:
aload 0
getfield android.database.CursorJoiner.mCursorLeft:Landroid/database/Cursor;
invokeinterface android.database.Cursor.isLast:()Z
ifeq 5
aload 0
getfield android.database.CursorJoiner.mCursorRight:Landroid/database/Cursor;
invokeinterface android.database.Cursor.isAfterLast:()Z
ifeq 5
iconst_0
ireturn
StackMap locals:
StackMap stack:
5: iconst_1
ireturn
6: StackMap locals:
StackMap stack:
aload 0
getfield android.database.CursorJoiner.mCursorLeft:Landroid/database/Cursor;
invokeinterface android.database.Cursor.isAfterLast:()Z
ifeq 7
aload 0
getfield android.database.CursorJoiner.mCursorRight:Landroid/database/Cursor;
invokeinterface android.database.Cursor.isLast:()Z
ifeq 7
iconst_0
ireturn
StackMap locals:
StackMap stack:
7: iconst_1
ireturn
8: StackMap locals:
StackMap stack:
new java.lang.IllegalStateException
dup
new java.lang.StringBuilder
dup
ldc "bad value for mCompareResult, "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
9: aload 0
getfield android.database.CursorJoiner.mCompareResult:Landroid/database/CursorJoiner$Result;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
10: invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
11: StackMap locals:
StackMap stack:
aload 0
getfield android.database.CursorJoiner.mCursorLeft:Landroid/database/Cursor;
invokeinterface android.database.Cursor.isAfterLast:()Z
ifeq 12
aload 0
getfield android.database.CursorJoiner.mCursorRight:Landroid/database/Cursor;
invokeinterface android.database.Cursor.isAfterLast:()Z
ifeq 12
iconst_0
ireturn
StackMap locals:
StackMap stack:
12: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Landroid/database/CursorJoiner;
public android.database.CursorJoiner$Result next();
descriptor: ()Landroid/database/CursorJoiner$Result;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=1
start local 0 0: aload 0
invokevirtual android.database.CursorJoiner.hasNext:()Z
ifne 2
1: new java.lang.IllegalStateException
dup
ldc "you must only call next() when hasNext() is true"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
invokevirtual android.database.CursorJoiner.incrementCursors:()V
3: getstatic android.database.CursorJoiner.$assertionsDisabled:Z
ifne 4
aload 0
invokevirtual android.database.CursorJoiner.hasNext:()Z
ifne 4
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
4: StackMap locals:
StackMap stack:
aload 0
getfield android.database.CursorJoiner.mCursorLeft:Landroid/database/Cursor;
invokeinterface android.database.Cursor.isAfterLast:()Z
ifeq 5
iconst_0
goto 6
StackMap locals:
StackMap stack:
5: iconst_1
StackMap locals:
StackMap stack: int
6: istore 1
start local 1 7: aload 0
getfield android.database.CursorJoiner.mCursorRight:Landroid/database/Cursor;
invokeinterface android.database.Cursor.isAfterLast:()Z
ifeq 8
iconst_0
goto 9
StackMap locals: int
StackMap stack:
8: iconst_1
StackMap locals:
StackMap stack: int
9: istore 2
start local 2 10: iload 1
ifeq 20
iload 2
ifeq 20
11: aload 0
getfield android.database.CursorJoiner.mValues:[Ljava/lang/String;
aload 0
getfield android.database.CursorJoiner.mCursorLeft:Landroid/database/Cursor;
aload 0
getfield android.database.CursorJoiner.mColumnsLeft:[I
iconst_0
invokestatic android.database.CursorJoiner.populateValues:([Ljava/lang/String;Landroid/database/Cursor;[II)V
12: aload 0
getfield android.database.CursorJoiner.mValues:[Ljava/lang/String;
aload 0
getfield android.database.CursorJoiner.mCursorRight:Landroid/database/Cursor;
aload 0
getfield android.database.CursorJoiner.mColumnsRight:[I
iconst_1
invokestatic android.database.CursorJoiner.populateValues:([Ljava/lang/String;Landroid/database/Cursor;[II)V
13: aload 0
getfield android.database.CursorJoiner.mValues:[Ljava/lang/String;
invokestatic android.database.CursorJoiner.compareStrings:([Ljava/lang/String;)I
tableswitch { // -1 - 1
-1: 14
0: 16
1: 18
default: 19
}
14: StackMap locals: int
StackMap stack:
aload 0
getstatic android.database.CursorJoiner$Result.LEFT:Landroid/database/CursorJoiner$Result;
putfield android.database.CursorJoiner.mCompareResult:Landroid/database/CursorJoiner$Result;
15: goto 25
16: StackMap locals:
StackMap stack:
aload 0
getstatic android.database.CursorJoiner$Result.BOTH:Landroid/database/CursorJoiner$Result;
putfield android.database.CursorJoiner.mCompareResult:Landroid/database/CursorJoiner$Result;
17: goto 25
18: StackMap locals:
StackMap stack:
aload 0
getstatic android.database.CursorJoiner$Result.RIGHT:Landroid/database/CursorJoiner$Result;
putfield android.database.CursorJoiner.mCompareResult:Landroid/database/CursorJoiner$Result;
19: StackMap locals:
StackMap stack:
goto 25
StackMap locals:
StackMap stack:
20: iload 1
ifeq 23
21: aload 0
getstatic android.database.CursorJoiner$Result.LEFT:Landroid/database/CursorJoiner$Result;
putfield android.database.CursorJoiner.mCompareResult:Landroid/database/CursorJoiner$Result;
22: goto 25
23: StackMap locals:
StackMap stack:
getstatic android.database.CursorJoiner.$assertionsDisabled:Z
ifne 24
iload 2
ifne 24
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
24: StackMap locals:
StackMap stack:
aload 0
getstatic android.database.CursorJoiner$Result.RIGHT:Landroid/database/CursorJoiner$Result;
putfield android.database.CursorJoiner.mCompareResult:Landroid/database/CursorJoiner$Result;
25: StackMap locals:
StackMap stack:
aload 0
iconst_1
putfield android.database.CursorJoiner.mCompareResultIsValid:Z
26: aload 0
getfield android.database.CursorJoiner.mCompareResult:Landroid/database/CursorJoiner$Result;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 27 0 this Landroid/database/CursorJoiner;
7 27 1 hasLeft Z
10 27 2 hasRight Z
public void remove();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: new java.lang.UnsupportedOperationException
dup
ldc "not implemented"
invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Landroid/database/CursorJoiner;
private static void populateValues(java.lang.String[], android.database.Cursor, int[], int);
descriptor: ([Ljava/lang/String;Landroid/database/Cursor;[II)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: getstatic android.database.CursorJoiner.$assertionsDisabled:Z
ifne 1
iload 3
ifeq 1
iload 3
iconst_1
if_icmpeq 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
iconst_0
istore 4
start local 4 2: goto 5
3: StackMap locals: int
StackMap stack:
aload 0
iload 3
iload 4
iconst_2
imul
iadd
aload 1
aload 2
iload 4
iaload
invokeinterface android.database.Cursor.getString:(I)Ljava/lang/String;
aastore
4: iinc 4 1
StackMap locals:
StackMap stack:
5: iload 4
aload 2
arraylength
if_icmplt 3
end local 4 6: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 values [Ljava/lang/String;
0 7 1 cursor Landroid/database/Cursor;
0 7 2 columnIndicies [I
0 7 3 startingIndex I
2 6 4 i I
MethodParameters:
Name Flags
values
cursor
columnIndicies
startingIndex
private void incrementCursors();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield android.database.CursorJoiner.mCompareResultIsValid:Z
ifeq 9
1: invokestatic android.database.CursorJoiner.$SWITCH_TABLE$android$database$CursorJoiner$Result:()[I
aload 0
getfield android.database.CursorJoiner.mCompareResult:Landroid/database/CursorJoiner$Result;
invokevirtual android.database.CursorJoiner$Result.ordinal:()I
iaload
tableswitch { // 1 - 3
1: 4
2: 2
3: 6
default: 8
}
2: StackMap locals:
StackMap stack:
aload 0
getfield android.database.CursorJoiner.mCursorLeft:Landroid/database/Cursor;
invokeinterface android.database.Cursor.moveToNext:()Z
pop
3: goto 8
4: StackMap locals:
StackMap stack:
aload 0
getfield android.database.CursorJoiner.mCursorRight:Landroid/database/Cursor;
invokeinterface android.database.Cursor.moveToNext:()Z
pop
5: goto 8
6: StackMap locals:
StackMap stack:
aload 0
getfield android.database.CursorJoiner.mCursorLeft:Landroid/database/Cursor;
invokeinterface android.database.Cursor.moveToNext:()Z
pop
7: aload 0
getfield android.database.CursorJoiner.mCursorRight:Landroid/database/Cursor;
invokeinterface android.database.Cursor.moveToNext:()Z
pop
8: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield android.database.CursorJoiner.mCompareResultIsValid:Z
9: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Landroid/database/CursorJoiner;
private static int compareStrings(java.lang.String[]);
descriptor: ([Ljava/lang/String;)I
flags: (0x008a) ACC_PRIVATE, ACC_STATIC, ACC_VARARGS
Code:
stack=4, locals=3, args_size=1
start local 0 0: aload 0
arraylength
iconst_2
irem
ifeq 2
1: new java.lang.IllegalArgumentException
dup
ldc "you must specify an even number of values"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
iconst_0
istore 1
start local 1 3: goto 15
4: StackMap locals: int
StackMap stack:
aload 0
iload 1
aaload
ifnonnull 7
5: aload 0
iload 1
iconst_1
iadd
aaload
ifnonnull 6
goto 14
6: StackMap locals:
StackMap stack:
iconst_m1
ireturn
7: StackMap locals:
StackMap stack:
aload 0
iload 1
iconst_1
iadd
aaload
ifnonnull 9
8: iconst_1
ireturn
9: StackMap locals:
StackMap stack:
aload 0
iload 1
aaload
aload 0
iload 1
iconst_1
iadd
aaload
invokevirtual java.lang.String.compareTo:(Ljava/lang/String;)I
istore 2
start local 2 10: iload 2
ifeq 14
11: iload 2
ifge 12
iconst_m1
goto 13
StackMap locals: int
StackMap stack:
12: iconst_1
StackMap locals:
StackMap stack: int
13: ireturn
end local 2 14: StackMap locals:
StackMap stack:
iinc 1 2
StackMap locals:
StackMap stack:
15: iload 1
aload 0
arraylength
if_icmplt 4
end local 1 16: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 values [Ljava/lang/String;
3 16 1 index I
10 14 2 comp I
MethodParameters:
Name Flags
values
public java.lang.Object next();
descriptor: ()Ljava/lang/Object;
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=1, locals=1, args_size=1
0: aload 0
invokevirtual android.database.CursorJoiner.next:()Landroid/database/CursorJoiner$Result;
areturn
LocalVariableTable:
Start End Slot Name Signature
static int[] $SWITCH_TABLE$android$database$CursorJoiner$Result();
descriptor: ()[I
flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=1, args_size=0
0: getstatic android.database.CursorJoiner.$SWITCH_TABLE$android$database$CursorJoiner$Result:[I
dup
ifnull 1
areturn
StackMap locals:
StackMap stack: int[]
1: pop
invokestatic android.database.CursorJoiner$Result.values:()[Landroid/database/CursorJoiner$Result;
arraylength
newarray 10
astore 0
2: aload 0
getstatic android.database.CursorJoiner$Result.BOTH:Landroid/database/CursorJoiner$Result;
invokevirtual android.database.CursorJoiner$Result.ordinal:()I
iconst_3
iastore
3: goto 5
StackMap locals: int[]
StackMap stack: java.lang.NoSuchFieldError
4: pop
StackMap locals:
StackMap stack:
5: aload 0
getstatic android.database.CursorJoiner$Result.LEFT:Landroid/database/CursorJoiner$Result;
invokevirtual android.database.CursorJoiner$Result.ordinal:()I
iconst_2
iastore
6: goto 8
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
7: pop
StackMap locals:
StackMap stack:
8: aload 0
getstatic android.database.CursorJoiner$Result.RIGHT:Landroid/database/CursorJoiner$Result;
invokevirtual android.database.CursorJoiner$Result.ordinal:()I
iconst_1
iastore
9: goto 11
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
10: pop
StackMap locals:
StackMap stack:
11: aload 0
dup
putstatic android.database.CursorJoiner.$SWITCH_TABLE$android$database$CursorJoiner$Result:[I
areturn
LocalVariableTable:
Start End Slot Name Signature
Exception table:
from to target type
2 3 4 Class java.lang.NoSuchFieldError
5 6 7 Class java.lang.NoSuchFieldError
8 9 10 Class java.lang.NoSuchFieldError
}
Signature: Ljava/lang/Object;Ljava/util/Iterator<Landroid/database/CursorJoiner$Result;>;Ljava/lang/Iterable<Landroid/database/CursorJoiner$Result;>;
SourceFile: "CursorJoiner.java"
NestMembers:
android.database.CursorJoiner$Result
InnerClasses:
public final Result = android.database.CursorJoiner$Result of android.database.CursorJoiner