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.io.EOFException; 20d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornsteinimport java.util.HashMap; 21d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein 22d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein/** 23d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * Map from addresses to addresses, where addresses are all 24d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * {@code int}s. 25d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein */ 26d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornsteinpublic final class AddressMap { 27d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein /** underlying map. TODO: This might be too inefficient. */ 28d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein private final HashMap<Integer,Integer> map; 29d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein 30d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein /** 31d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * Constructs an instance. 32d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein */ 33d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein public AddressMap() { 34d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein map = new HashMap<Integer,Integer>(); 35d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein } 36d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein 37d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein /** 38d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * Gets the value address corresponding to the given key address. Returns 39d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * {@code -1} if there is no mapping. 40d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein */ 41d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein public int get(int keyAddress) { 42d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein Integer value = map.get(keyAddress); 43d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein return (value == null) ? -1 : value; 44d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein } 45d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein 46d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein /** 47d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein * Sets the value address associated with the given key address. 48d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein */ 49d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein public void put(int keyAddress, int valueAddress) { 50d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein map.put(keyAddress, valueAddress); 51d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein } 52d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein} 53