CstInterfaceMethodRef.java revision 579d7739c53a2707ad711a2d2cae46d7d782f061
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright (C) 2007 The Android Open Source Project
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Licensed under the Apache License, Version 2.0 (the "License");
5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * you may not use this file except in compliance with the License.
6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * You may obtain a copy of the License at
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *      http://www.apache.org/licenses/LICENSE-2.0
9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) *
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Unless required by applicable law or agreed to in writing, software
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * distributed under the License is distributed on an "AS IS" BASIS,
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * See the License for the specific language governing permissions and
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * limitations under the License.
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)package com.android.dx.rop.cst;
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * Constants of type {@code CONSTANT_InterfaceMethodref_info}.
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)public final class CstInterfaceMethodRef
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        extends CstBaseMethodRef {
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * {@code null-ok;} normal {@link CstMethodRef} that corresponds to this
26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * instance, if calculated
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    private CstMethodRef methodRef;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Constructs an instance.
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     *
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @param definingClass {@code non-null;} the type of the defining class
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @param nat {@code non-null;} the name-and-type
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public CstInterfaceMethodRef(CstType definingClass, CstNat nat) {
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        super(definingClass, nat);
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        methodRef = null;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    /** {@inheritDoc} */
42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    @Override
43    public String typeName() {
44        return "ifaceMethod";
45    }
46
47    /**
48     * Gets a normal (non-interface) {@link CstMethodRef} that corresponds to
49     * this instance.
50     *
51     * @return {@code non-null;} an appropriate instance
52     */
53    public CstMethodRef toMethodRef() {
54        if (methodRef == null) {
55            methodRef = new CstMethodRef(getDefiningClass(), getNat());
56        }
57
58        return methodRef;
59    }
60}
61