1 package org.sentrysoftware.jawk.intermediate; 2 3 /*- 4 * ╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲ 5 * Jawk 6 * ჻჻჻჻჻჻ 7 * Copyright (C) 2006 - 2023 Sentry Software 8 * ჻჻჻჻჻჻ 9 * This program is free software: you can redistribute it and/or modify 10 * it under the terms of the GNU Lesser General Public License as 11 * published by the Free Software Foundation, either version 3 of the 12 * License, or (at your option) any later version. 13 * 14 * This program is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * GNU General Lesser Public License for more details. 18 * 19 * You should have received a copy of the GNU General Lesser Public 20 * License along with this program. If not, see 21 * <http://www.gnu.org/licenses/lgpl-3.0.html>. 22 * ╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱ 23 */ 24 25 /** 26 * An interface to a tuple position for interpretation. 27 * <p> 28 * This is differentiated from a position interface for 29 * compilation because compilation requires linear 30 * access (i.e., non-jumps) to the tuple list, while 31 * interpretation requires this as well as jump capability. 32 * 33 * @author Danny Daglas 34 */ 35 public interface PositionForInterpretation extends Position { 36 37 /** 38 * Reposition to the tuple located at a particular address. 39 * This is usually done in a response to an if condition. 40 * However, this is also done to perform loops, etc. 41 * 42 * @param address The target address for the jump. 43 */ 44 void jump(Address address); 45 46 /** 47 * <p>current.</p> 48 * 49 * @return The current index into the tuple list (queue) 50 * of the tuple located at the current position. 51 */ 52 int current(); 53 54 /** 55 * Reposition to the tuple located at a particular index 56 * into the tuple list (queue).. 57 * 58 * @param idx The target index for the jump. 59 */ 60 void jump(int idx); 61 }