BuilderSwitchElement.java revision 899b1e6611d260370aa81b9fb23684d2052e5f5f
1e80efa670f1027fdf3882a298216a460199e38d0Ben Gruverpackage org.jf.dexlib2.builder.instruction;
2e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver
3e80efa670f1027fdf3882a298216a460199e38d0Ben Gruverimport org.jf.dexlib2.builder.BuilderSwitchPayload;
4e80efa670f1027fdf3882a298216a460199e38d0Ben Gruverimport org.jf.dexlib2.builder.Label;
5e80efa670f1027fdf3882a298216a460199e38d0Ben Gruverimport org.jf.dexlib2.iface.instruction.SwitchElement;
6e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver
7e80efa670f1027fdf3882a298216a460199e38d0Ben Gruverimport javax.annotation.Nonnull;
8e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver
9e80efa670f1027fdf3882a298216a460199e38d0Ben Gruverpublic class BuilderSwitchElement implements SwitchElement {
10e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver    @Nonnull BuilderSwitchPayload parent;
11e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver    private final int key;
12e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver    @Nonnull private final Label target;
13e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver
14e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver    public BuilderSwitchElement(@Nonnull BuilderSwitchPayload parent,
15e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver                                int key,
16e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver                                @Nonnull Label target) {
17e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver        this.parent = parent;
18e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver        this.key = key;
19e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver        this.target = target;
20e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver    }
21e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver
22e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver    @Override public int getKey() {
23e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver        return key;
24e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver    }
25e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver
26e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver    @Override public int getOffset() {
279a2de93a998958e582e9c2aa0bff7de602cc8771Ben Gruver        return target.getCodeAddress() - parent.getReferrer().getCodeAddress();
28e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver    }
29899b1e6611d260370aa81b9fb23684d2052e5f5fBen Gruver
30899b1e6611d260370aa81b9fb23684d2052e5f5fBen Gruver    @Nonnull
31899b1e6611d260370aa81b9fb23684d2052e5f5fBen Gruver    public Label getTarget() {
32899b1e6611d260370aa81b9fb23684d2052e5f5fBen Gruver        return target;
33899b1e6611d260370aa81b9fb23684d2052e5f5fBen Gruver    }
34e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver}
35