AddressMap.java revision 579d7739c53a2707ad711a2d2cae46d7d782f061
1304cc33f8259ef467e8e3c79f448d0bae0e8cd85yangguo@chromium.org/*
23484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org * Copyright (C) 2011 The Android Open Source Project
33484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org *
4304cc33f8259ef467e8e3c79f448d0bae0e8cd85yangguo@chromium.org * Licensed under the Apache License, Version 2.0 (the "License");
5304cc33f8259ef467e8e3c79f448d0bae0e8cd85yangguo@chromium.org * you may not use this file except in compliance with the License.
6304cc33f8259ef467e8e3c79f448d0bae0e8cd85yangguo@chromium.org * You may obtain a copy of the License at
7304cc33f8259ef467e8e3c79f448d0bae0e8cd85yangguo@chromium.org *
81e2d50cf3d94ff48285da107b7a9da1ad0fc873dmachenbach@chromium.org *      http://www.apache.org/licenses/LICENSE-2.0
95de0074a922429f5e0ec2cf140c2d2989bf88140yangguo@chromium.org *
105de0074a922429f5e0ec2cf140c2d2989bf88140yangguo@chromium.org * Unless required by applicable law or agreed to in writing, software
115de0074a922429f5e0ec2cf140c2d2989bf88140yangguo@chromium.org * distributed under the License is distributed on an "AS IS" BASIS,
12196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org * See the License for the specific language governing permissions and
14196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org * limitations under the License.
15304cc33f8259ef467e8e3c79f448d0bae0e8cd85yangguo@chromium.org */
16304cc33f8259ef467e8e3c79f448d0bae0e8cd85yangguo@chromium.org
17304cc33f8259ef467e8e3c79f448d0bae0e8cd85yangguo@chromium.orgpackage com.android.dx.io.instructions;
18304cc33f8259ef467e8e3c79f448d0bae0e8cd85yangguo@chromium.org
19a6bbcc801f63c451f814d6da77a1a48fba3d36c6yangguo@chromium.orgimport java.io.EOFException;
204954674151afa960af66efb4831df06bde727333yangguo@chromium.orgimport java.util.HashMap;
21fb37721ea34922d8758d5cb26ae465aaf241e6b6yangguo@chromium.org
22304cc33f8259ef467e8e3c79f448d0bae0e8cd85yangguo@chromium.org/**
235de0074a922429f5e0ec2cf140c2d2989bf88140yangguo@chromium.org * Map from addresses to addresses, where addresses are all
24304cc33f8259ef467e8e3c79f448d0bae0e8cd85yangguo@chromium.org * {@code int}s.
255e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org */
265e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.orgpublic final class AddressMap {
271f34ad3eadf9b0e6b8ed415817d276f54dd6d06bdanno@chromium.org    /** underlying map. TODO: This might be too inefficient. */
285e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org    private final HashMap<Integer,Integer> map;
291f34ad3eadf9b0e6b8ed415817d276f54dd6d06bdanno@chromium.org
305e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org    /**
315e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org     * Constructs an instance.
325e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org     */
335e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org    public AddressMap() {
345e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org        map = new HashMap<Integer,Integer>();
355e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org    }
365e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org
375e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org    /**
385e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org     * Gets the value address corresponding to the given key address. Returns
395e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org     * {@code -1} if there is no mapping.
405e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org     */
411e2d50cf3d94ff48285da107b7a9da1ad0fc873dmachenbach@chromium.org    public int get(int keyAddress) {
421e2d50cf3d94ff48285da107b7a9da1ad0fc873dmachenbach@chromium.org        Integer value = map.get(keyAddress);
434954674151afa960af66efb4831df06bde727333yangguo@chromium.org        return (value == null) ? -1 : value;
448e36b5ba34174c8ceb04a47d7e10dcc8f43d94a4machenbach@chromium.org    }
452ed0d029906d9c6f0ae06fe8eb7f1180077ae2b0mstarzinger@chromium.org
464954674151afa960af66efb4831df06bde727333yangguo@chromium.org    /**
472ed0d029906d9c6f0ae06fe8eb7f1180077ae2b0mstarzinger@chromium.org     * Sets the value address associated with the given key address.
488e36b5ba34174c8ceb04a47d7e10dcc8f43d94a4machenbach@chromium.org     */
498e36b5ba34174c8ceb04a47d7e10dcc8f43d94a4machenbach@chromium.org    public void put(int keyAddress, int valueAddress) {
508e36b5ba34174c8ceb04a47d7e10dcc8f43d94a4machenbach@chromium.org        map.put(keyAddress, valueAddress);
512ed0d029906d9c6f0ae06fe8eb7f1180077ae2b0mstarzinger@chromium.org    }
52304cc33f8259ef467e8e3c79f448d0bae0e8cd85yangguo@chromium.org}
53304cc33f8259ef467e8e3c79f448d0bae0e8cd85yangguo@chromium.org