All Downloads are FREE. Search and download functionalities are using the official Maven repository.

bsh.org.objectweb.asm.ClassVisitor Maven / Gradle / Ivy

The newest version!
/*
 * #%L
 * The AIBench Shell Plugin
 * %%
 * Copyright (C) 2006 - 2017 Daniel Glez-Peña and Florentino Fdez-Riverola
 * %%
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Lesser Public License for more details.
 * 
 * You should have received a copy of the GNU General Lesser Public
 * License along with this program.  If not, see
 * .
 * #L%
 */
/***
 * ASM: a very small and fast Java bytecode manipulation framework
 * Copyright (C) 2000 INRIA, France Telecom
 * Copyright (C) 2002 France Telecom
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 * Contact: [email protected]
 *
 * Author: Eric Bruneton
 */

package bsh.org.objectweb.asm;

/**
 * A visitor to visit a Java class. The methods of this interface must be called
 * in the following order: visit (visitField |
 * visitMethod | visitInnerClass)* visitEnd.
 */

public interface ClassVisitor {

        /**
         * Visits the header of the class.
         * 
         * @param access
         *                the class's access flags (see {@link Constants}).
         *                This parameter also indicates if the class is
         *                deprecated.
         * @param name
         *                the internal name of the class (see
         *                {@link Type#getInternalName getInternalName}).
         * @param superName
         *                the internal of name of the super class (see {@link
         *                Type#getInternalName getInternalName}). For
         *                interfaces, the super class is {@link Object}. May be
         *                null, but only for the {@link Object
         *                java.lang.Object} class.
         * @param interfaces
         *                the internal names of the class's interfaces (see
         *                {@link Type#getInternalName getInternalName}). May be
         *                null.
         * @param sourceFile
         *                the name of the source file from which this class was
         *                compiled. May be null.
         */

        void visit(int access, String name, String superName, String[] interfaces, String sourceFile);

        /**
         * Visits information about an inner class. This inner class is not
         * necessarily a member of the class being visited.
         * 
         * @param name
         *                the internal name of an inner class (see {@link
         *                Type#getInternalName getInternalName}).
         * @param outerName
         *                the internal name of the class to which the inner
         *                class belongs (see
         *                {@link Type#getInternalName getInternalName}). May be
         *                null.
         * @param innerName
         *                the (simple) name of the inner class inside its
         *                enclosing class. May be null for anonymous
         *                inner classes.
         * @param access
         *                the access flags of the inner class as originally
         *                declared in the enclosing class.
         */

        void visitInnerClass(String name, String outerName, String innerName, int access);

        /**
         * Visits a field of the class.
         * 
         * @param access
         *                the field's access flags (see {@link Constants}).
         *                This parameter also indicates if the field is
         *                synthetic and/or deprecated.
         * @param name
         *                the field's name.
         * @param desc
         *                the field's descriptor (see {@link Type Type}).
         * @param value
         *                the field's initial value. This parameter, which may
         *                be null if the field does not have an
         *                initial value, must be an
         *                {@link java.lang.Integer Integer}, a
         *                {@link java.lang.Float Float}, a
         *                {@link java.lang.Long Long}, a
         *                {@link java.lang.Double Double} or a
         *                {@link String String}.
         */

        void visitField(int access, String name, String desc, Object value);

        /**
         * Visits a method of the class. This method must return a new
         * {@link CodeVisitor CodeVisitor} instance (or null) each
         * time it is called, i.e., it should not return a previously returned
         * visitor.
         * 
         * @param access
         *                the method's access flags (see {@link Constants}).
         *                This parameter also indicates if the method is
         *                synthetic and/or deprecated.
         * @param name
         *                the method's name.
         * @param desc
         *                the method's descriptor (see {@link Type Type}).
         * @param exceptions
         *                the internal names of the method's exception classes
         *                (see {@link Type#getInternalName getInternalName}).
         *                May be null.
         * @return an object to visit the byte code of the method, or
         *         null if this class visitor is not interested in
         *         visiting the code of this method.
         */

        CodeVisitor visitMethod(int access, String name, String desc, String[] exceptions);

        /**
         * Visits the end of the class. This method, which is the last one to be
         * called, is used to inform the visitor that all the fields and methods
         * of the class have been visited.
         */

        void visitEnd();
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy