1ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski/* 2ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * Copyright (C) 2008 The Android Open Source Project 3ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * 4ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * Licensed under the Apache License, Version 2.0 (the "License"); 5ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * you may not use this file except in compliance with the License. 6ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * You may obtain a copy of the License at 7ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * 8ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * http://www.apache.org/licenses/LICENSE-2.0 9ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * 10ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * Unless required by applicable law or agreed to in writing, software 11ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * distributed under the License is distributed on an "AS IS" BASIS, 12ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * See the License for the specific language governing permissions and 14ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * limitations under the License. 15ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski */ 16ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 17ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinskipackage com.android.tools.layoutlib.create; 18ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 19ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 20ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski/** 21ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * An adapter to make it easier to use {@link MethodListener}. 22ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * <p/> 23ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * The adapter calls the void {@link #onInvokeV(String, boolean, Object)} listener 24ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * for all types (I, L, F, D and A), returning 0 or null as appropriate. 25ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski */ 26ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinskipublic class MethodAdapter implements MethodListener { 27ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski /** 28ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * A stub method is being invoked. 29ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * <p/> 30ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * Known limitation: caller arguments are not available. 31ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * 32ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * @param signature The signature of the method being invoked, composed of the 33ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * binary class name followed by the method descriptor (aka argument 34ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * types). Example: "com/foo/MyClass/InnerClass/printInt(I)V". 35ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * @param isNative True if the method was a native method. 36ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * @param caller The calling object. Null for static methods, "this" for instance methods. 37ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski */ 38ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski @Override 39ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski public void onInvokeV(String signature, boolean isNative, Object caller) { 40ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 41ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 42ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski /** 43ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * Same as {@link #onInvokeV(String, boolean, Object)} but returns an integer or similar. 44ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * @see #onInvokeV(String, boolean, Object) 45ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * @return an integer, or a boolean, or a short or a byte. 46ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski */ 47ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski @Override 48ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski public int onInvokeI(String signature, boolean isNative, Object caller) { 49ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski onInvokeV(signature, isNative, caller); 50ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return 0; 51ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 52ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 53ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski /** 54ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * Same as {@link #onInvokeV(String, boolean, Object)} but returns a long. 55ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * @see #onInvokeV(String, boolean, Object) 56ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * @return a long. 57ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski */ 58ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski @Override 59ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski public long onInvokeL(String signature, boolean isNative, Object caller) { 60ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski onInvokeV(signature, isNative, caller); 61ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return 0; 62ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 63ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 64ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski /** 65ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * Same as {@link #onInvokeV(String, boolean, Object)} but returns a float. 66ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * @see #onInvokeV(String, boolean, Object) 67ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * @return a float. 68ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski */ 69ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski @Override 70ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski public float onInvokeF(String signature, boolean isNative, Object caller) { 71ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski onInvokeV(signature, isNative, caller); 72ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return 0; 73ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 74ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 75ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski /** 76ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * Same as {@link #onInvokeV(String, boolean, Object)} but returns a double. 77ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * @see #onInvokeV(String, boolean, Object) 78ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * @return a double. 79ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski */ 80ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski @Override 81ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski public double onInvokeD(String signature, boolean isNative, Object caller) { 82ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski onInvokeV(signature, isNative, caller); 83ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return 0; 84ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 85ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 86ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski /** 87ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * Same as {@link #onInvokeV(String, boolean, Object)} but returns an object. 88ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * @see #onInvokeV(String, boolean, Object) 89ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * @return an object. 90ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski */ 91ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski @Override 92ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski public Object onInvokeA(String signature, boolean isNative, Object caller) { 93ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski onInvokeV(signature, isNative, caller); 94ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return null; 95ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 96ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski} 97ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 98