1282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski/* 2282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Copyright (C) 2008 The Android Open Source Project 3282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 4282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Licensed under the Apache License, Version 2.0 (the "License"); 5282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * you may not use this file except in compliance with the License. 6282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * You may obtain a copy of the License at 7282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 8282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * http://www.apache.org/licenses/LICENSE-2.0 9282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 10282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Unless required by applicable law or agreed to in writing, software 11282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * distributed under the License is distributed on an "AS IS" BASIS, 12282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * See the License for the specific language governing permissions and 14282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * limitations under the License. 15282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 16282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 17282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipackage com.android.tools.layoutlib.create; 18282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 19282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 20282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski/** 21282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * An adapter to make it easier to use {@link MethodListener}. 22282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * <p/> 23282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * The adapter calls the void {@link #onInvokeV(String, boolean, Object)} listener 24282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * for all types (I, L, F, D and A), returning 0 or null as appropriate. 25282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 26282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic class MethodAdapter implements MethodListener { 27282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /** 28282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * A stub method is being invoked. 29282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * <p/> 30282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Known limitation: caller arguments are not available. 31282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 32282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @param signature The signature of the method being invoked, composed of the 33282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * binary class name followed by the method descriptor (aka argument 34282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * types). Example: "com/foo/MyClass/InnerClass/printInt(I)V". 35282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @param isNative True if the method was a native method. 36282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @param caller The calling object. Null for static methods, "this" for instance methods. 37282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 38282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 39282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public void onInvokeV(String signature, boolean isNative, Object caller) { 40282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 41282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 42282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /** 43282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Same as {@link #onInvokeV(String, boolean, Object)} but returns an integer or similar. 44282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @see #onInvokeV(String, boolean, Object) 45282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @return an integer, or a boolean, or a short or a byte. 46282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 47282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 48282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public int onInvokeI(String signature, boolean isNative, Object caller) { 49282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski onInvokeV(signature, isNative, caller); 50282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return 0; 51282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 52282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 53282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /** 54282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Same as {@link #onInvokeV(String, boolean, Object)} but returns a long. 55282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @see #onInvokeV(String, boolean, Object) 56282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @return a long. 57282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 58282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 59282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public long onInvokeL(String signature, boolean isNative, Object caller) { 60282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski onInvokeV(signature, isNative, caller); 61282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return 0; 62282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 63282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 64282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /** 65282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Same as {@link #onInvokeV(String, boolean, Object)} but returns a float. 66282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @see #onInvokeV(String, boolean, Object) 67282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @return a float. 68282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 69282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 70282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public float onInvokeF(String signature, boolean isNative, Object caller) { 71282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski onInvokeV(signature, isNative, caller); 72282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return 0; 73282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 74282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 75282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /** 76282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Same as {@link #onInvokeV(String, boolean, Object)} but returns a double. 77282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @see #onInvokeV(String, boolean, Object) 78282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @return a double. 79282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 80282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 81282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public double onInvokeD(String signature, boolean isNative, Object caller) { 82282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski onInvokeV(signature, isNative, caller); 83282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return 0; 84282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 85282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 86282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /** 87282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Same as {@link #onInvokeV(String, boolean, Object)} but returns an object. 88282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @see #onInvokeV(String, boolean, Object) 89282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @return an object. 90282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 91282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 92282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public Object onInvokeA(String signature, boolean isNative, Object caller) { 93282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski onInvokeV(signature, isNative, caller); 94282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return null; 95282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 96282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski} 97282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 98