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