1 /* 2 * Javassist, a Java-bytecode translator toolkit. 3 * Copyright (C) 1999- Shigeru Chiba. All Rights Reserved. 4 * 5 * The contents of this file are subject to the Mozilla Public License Version 6 * 1.1 (the "License"); you may not use this file except in compliance with 7 * the License. Alternatively, the contents of this file may be used under 8 * the terms of the GNU Lesser General Public License Version 2.1 or later, 9 * or the Apache License Version 2.0. 10 * 11 * Software distributed under the License is distributed on an "AS IS" basis, 12 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 13 * for the specific language governing rights and limitations under the 14 * License. 15 */ 16 17 package javassist.convert; 18 19 import javassist.CannotCompileException; 20 import javassist.CtClass; 21 import javassist.bytecode.BadBytecode; 22 import javassist.bytecode.CodeAttribute; 23 import javassist.bytecode.CodeIterator; 24 import javassist.bytecode.ConstPool; 25 import javassist.bytecode.MethodInfo; 26 import javassist.bytecode.Opcode; 27 28 /** 29 * Transformer and its subclasses are used for executing 30 * code transformation specified by CodeConverter. 31 * 32 * @see javassist.CodeConverter 33 */ 34 public abstract class Transformer implements Opcode { 35 private Transformer next; 36 Transformer(Transformer t)37 public Transformer(Transformer t) { 38 next = t; 39 } 40 getNext()41 public Transformer getNext() { return next; } 42 initialize(ConstPool cp, CodeAttribute attr)43 public void initialize(ConstPool cp, CodeAttribute attr) {} 44 initialize(ConstPool cp, CtClass clazz, MethodInfo minfo)45 public void initialize(ConstPool cp, CtClass clazz, MethodInfo minfo) throws CannotCompileException { 46 initialize(cp, minfo.getCodeAttribute()); 47 } 48 clean()49 public void clean() {} 50 transform(CtClass clazz, int pos, CodeIterator it, ConstPool cp)51 public abstract int transform(CtClass clazz, int pos, CodeIterator it, 52 ConstPool cp) throws CannotCompileException, BadBytecode; 53 extraLocals()54 public int extraLocals() { return 0; } 55 extraStack()56 public int extraStack() { return 0; } 57 } 58