00001 #ifndef _method_h_included_ 00002 #define _method_h_included_ 00003 00004 /*! 00005 * @file method.h 00006 * 00007 * @brief Method management functions for the JVM. 00008 * 00009 * 00010 * @section Control 00011 * 00012 * \$URL: https://svn.apache.org/path/name/method.h $ \$Id: method.h 0 09/28/2005 dlydick $ 00013 * 00014 * Copyright 2005 The Apache Software Foundation 00015 * or its licensors, as applicable. 00016 * 00017 * Licensed under the Apache License, Version 2.0 ("the License"); 00018 * you may not use this file except in compliance with the License. 00019 * You may obtain a copy of the License at 00020 * 00021 * http://www.apache.org/licenses/LICENSE-2.0 00022 * 00023 * Unless required by applicable law or agreed to in writing, 00024 * software distributed under the License is distributed on an 00025 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 00026 * either express or implied. 00027 * 00028 * See the License for the specific language governing permissions 00029 * and limitations under the License. 00030 * 00031 * @version \$LastChangedRevision: 0 $ 00032 * 00033 * @date \$LastChangedDate: 09/28/2005 $ 00034 * 00035 * @author \$LastChangedBy: dlydick $ 00036 * Original code contributed by Daniel Lydick on 09/28/2005. 00037 * 00038 * @section Reference 00039 * 00040 */ 00041 00042 ARCH_COPYRIGHT_APACHE(method, h, "$URL: https://svn.apache.org/path/name/method.h $ $Id: method.h 0 09/28/2005 dlydick $"); 00043 00044 00045 /*! 00046 * @def METHOD 00047 * @brief Access structures of a class' method table at certain index. 00048 * 00049 * Each class has a table of methods, divided into virtual methods 00050 * @e within the Java code and native methods referenced @e from the 00051 * Java code and implemented in some outside object library. 00052 * They may be distinquished by the @link #ACC_NATIVE ACC_NATIVE@endlink 00053 * status bit in @link #rclass.status rclass.status@endlink 00054 * This macro references one of them using the @p @b clsidx index for 00055 * the class and @p @b mthidx for the method table entry in that class. 00056 * 00057 * @param clsidx Class table index into the global 00058 * @link #rjvm.class rjvm.class[]@endlink array (via 00059 * @link #pjvm pjvm->class[]@endlink). 00060 * 00061 * @param mthidx Index into method table for this class. 00062 * 00063 * @returns pointer to a method table entry 00064 * 00065 */ 00066 #define METHOD(clsidx, mthidx) \ 00067 (CLASS_OBJECT_LINKAGE(clsidx)->pcfs->methods[mthidx]) 00068 00069 00070 /* Prototypes for functions in 'method.c' */ 00071 00072 extern 00073 jvm_method_index method_find_by_cp_entry(jvm_class_index clsidx, 00074 cp_info_dup *mthname, 00075 cp_info_dup *mthdesc); 00076 00077 extern jvm_method_index method_find_by_prchar(jvm_class_index clsidx, 00078 rchar *mthname, 00079 rchar *mthdesc); 00080 00081 extern jvm_basetype method_return_type(jvm_class_index clsidx, 00082 jvm_constant_pool_index mthdescidx); 00083 00084 #endif /* _method_h_included_ */ 00085 00086 /* EOF */ 00087