1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 package org.apache.bcel.generic; 18 19 /** 20 * IFNULL - Branch if reference is not null 21 * 22 * <PRE> 23 * Stack: ..., reference -> ... 24 * </PRE> 25 */ 26 public class IFNULL extends IfInstruction { 27 28 /** 29 * Empty constructor needed for Instruction.readInstruction. Not to be used otherwise. 30 */ 31 IFNULL() { 32 } 33 34 public IFNULL(final InstructionHandle target) { 35 super(org.apache.bcel.Const.IFNULL, target); 36 } 37 38 /** 39 * Call corresponding visitor method(s). The order is: Call visitor methods of implemented interfaces first, then call 40 * methods according to the class hierarchy in descending order, i.e., the most specific visitXXX() call comes last. 41 * 42 * @param v Visitor object 43 */ 44 @Override 45 public void accept(final Visitor v) { 46 v.visitStackConsumer(this); 47 v.visitBranchInstruction(this); 48 v.visitIfInstruction(this); 49 v.visitIFNULL(this); 50 } 51 52 /** 53 * @return negation of instruction 54 */ 55 @Override 56 public IfInstruction negate() { 57 return new IFNONNULL(super.getTarget()); 58 } 59 }