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