View Javadoc
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  }