1d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein/*
2d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * Copyright (C) 2011 The Android Open Source Project
3d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein *
4d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * Licensed under the Apache License, Version 2.0 (the "License");
5d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * you may not use this file except in compliance with the License.
6d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * You may obtain a copy of the License at
7d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein *
8d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein *      http://www.apache.org/licenses/LICENSE-2.0
9d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein *
10d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * Unless required by applicable law or agreed to in writing, software
11d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * distributed under the License is distributed on an "AS IS" BASIS,
12d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * See the License for the specific language governing permissions and
14d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * limitations under the License.
15d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein */
16d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein
17537939ca06a47668f719ee06159303bcd3175c69Dan Bornsteinpackage com.android.dx.io.instructions;
18d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein
19d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornsteinimport java.util.HashMap;
20d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein
21d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein/**
22d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * Map from addresses to addresses, where addresses are all
23d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * {@code int}s.
24d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein */
25d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornsteinpublic final class AddressMap {
26d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein    /** underlying map. TODO: This might be too inefficient. */
27d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein    private final HashMap<Integer,Integer> map;
28d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein
29d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein    /**
30d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein     * Constructs an instance.
31d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein     */
32d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein    public AddressMap() {
33d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein        map = new HashMap<Integer,Integer>();
34d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein    }
35d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein
36d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein    /**
37d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein     * Gets the value address corresponding to the given key address. Returns
38d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein     * {@code -1} if there is no mapping.
39d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein     */
40d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein    public int get(int keyAddress) {
41d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein        Integer value = map.get(keyAddress);
42d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein        return (value == null) ? -1 : value;
43d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein    }
44d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein
45d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein    /**
46d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein     * Sets the value address associated with the given key address.
47d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein     */
48d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein    public void put(int keyAddress, int valueAddress) {
49d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein        map.put(keyAddress, valueAddress);
50d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein    }
51d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein}
52