1eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov/******************************************************************************* 2eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov * Copyright (c) 2009, 2017 Mountainminds GmbH & Co. KG and Contributors 3eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov * All rights reserved. This program and the accompanying materials 4eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov * are made available under the terms of the Eclipse Public License v1.0 5eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov * which accompanies this distribution, and is available at 6eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov * http://www.eclipse.org/legal/epl-v10.html 7eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov * 8eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov * Contributors: 9eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov * Evgeny Mandrikov - initial API and implementation 10eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov * 11eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov *******************************************************************************/ 12eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikovpackage org.jacoco.core.internal.analysis.filter; 13eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov 14eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikovimport org.objectweb.asm.tree.MethodNode; 15eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov 16eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov/** 17eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov * Interface for filter implementations. Instances of filters are reused and so 18eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov * must be stateless. 19eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov */ 20eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikovpublic interface IFilter { 21eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov 221f34a6a6f07af31c40deb4f4cb7d19ae09c375e0Marc R. Hoffmann /** 231f34a6a6f07af31c40deb4f4cb7d19ae09c375e0Marc R. Hoffmann * This method is called for every method. The filter implementation is 241f34a6a6f07af31c40deb4f4cb7d19ae09c375e0Marc R. Hoffmann * expected to inspect the provided method and report its result to the 251f34a6a6f07af31c40deb4f4cb7d19ae09c375e0Marc R. Hoffmann * given {@link IFilterOutput} instance. 26e94c7af58000b3421bc63a252ee054c08a863568Evgeny Mandrikov * 27e94c7af58000b3421bc63a252ee054c08a863568Evgeny Mandrikov * @param className 28e94c7af58000b3421bc63a252ee054c08a863568Evgeny Mandrikov * class name 29e94c7af58000b3421bc63a252ee054c08a863568Evgeny Mandrikov * @param superClassName 30e94c7af58000b3421bc63a252ee054c08a863568Evgeny Mandrikov * superclass name 311f34a6a6f07af31c40deb4f4cb7d19ae09c375e0Marc R. Hoffmann * @param methodNode 321f34a6a6f07af31c40deb4f4cb7d19ae09c375e0Marc R. Hoffmann * method to inspect 331f34a6a6f07af31c40deb4f4cb7d19ae09c375e0Marc R. Hoffmann * @param output 341f34a6a6f07af31c40deb4f4cb7d19ae09c375e0Marc R. Hoffmann * callback to report filtering results to 351f34a6a6f07af31c40deb4f4cb7d19ae09c375e0Marc R. Hoffmann */ 36e94c7af58000b3421bc63a252ee054c08a863568Evgeny Mandrikov void filter(String className, String superClassName, MethodNode methodNode, 37e94c7af58000b3421bc63a252ee054c08a863568Evgeny Mandrikov IFilterOutput output); 38eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov 39eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov} 40