CodeInput.java revision 38b861bc63b91114d52ba01e74d31fbf316a5784
13c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein/* 23c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein * Copyright (C) 2011 The Android Open Source Project 33c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein * 43c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein * Licensed under the Apache License, Version 2.0 (the "License"); 53c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein * you may not use this file except in compliance with the License. 63c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein * You may obtain a copy of the License at 73c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein * 83c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein * http://www.apache.org/licenses/LICENSE-2.0 93c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein * 103c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein * Unless required by applicable law or agreed to in writing, software 113c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein * distributed under the License is distributed on an "AS IS" BASIS, 123c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein * See the License for the specific language governing permissions and 143c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein * limitations under the License. 153c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein */ 163c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein 173c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornsteinpackage com.android.dx.io; 183c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein 1919cefdcde26ea31d06cef031032b2ef78013d976Dan Bornsteinimport java.io.EOFException; 2019cefdcde26ea31d06cef031032b2ef78013d976Dan Bornstein 213c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein/** 223c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein * Input stream of code units, for reading in Dalvik bytecode. 233c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein */ 243c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornsteinpublic interface CodeInput { 253c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein /** 260c6b7eb528615d1bf92cc1e83a70c52718efa417Dan Bornstein * Gets the cursor. The cursor is the offset in code units from 270c6b7eb528615d1bf92cc1e83a70c52718efa417Dan Bornstein * the start of the input of the next code unit to be read, where 280c6b7eb528615d1bf92cc1e83a70c52718efa417Dan Bornstein * the input generally consists of the code for a single method. 2932dd826ad1742993cf0627448cd083a5021d71bbDan Bornstein */ 3032dd826ad1742993cf0627448cd083a5021d71bbDan Bornstein public int cursor(); 3132dd826ad1742993cf0627448cd083a5021d71bbDan Bornstein 3232dd826ad1742993cf0627448cd083a5021d71bbDan Bornstein /** 3338b861bc63b91114d52ba01e74d31fbf316a5784Dan Bornstein * Returns whether there are any more code units to read. This 3438b861bc63b91114d52ba01e74d31fbf316a5784Dan Bornstein * is analogous to {@code hasNext()} on an interator. 3538b861bc63b91114d52ba01e74d31fbf316a5784Dan Bornstein */ 3638b861bc63b91114d52ba01e74d31fbf316a5784Dan Bornstein public boolean hasMore(); 3738b861bc63b91114d52ba01e74d31fbf316a5784Dan Bornstein 3838b861bc63b91114d52ba01e74d31fbf316a5784Dan Bornstein /** 3919cefdcde26ea31d06cef031032b2ef78013d976Dan Bornstein * Reads a code unit. 403c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein */ 4119cefdcde26ea31d06cef031032b2ef78013d976Dan Bornstein public int read() throws EOFException; 423c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein 433c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein /** 4419cefdcde26ea31d06cef031032b2ef78013d976Dan Bornstein * Reads two code units, treating them as a little-endian {@code int}. 453c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein */ 4619cefdcde26ea31d06cef031032b2ef78013d976Dan Bornstein public int readInt() throws EOFException; 473c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein 483c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein /** 4919cefdcde26ea31d06cef031032b2ef78013d976Dan Bornstein * Reads four code units, treating them as a little-endian {@code long}. 503c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein */ 5119cefdcde26ea31d06cef031032b2ef78013d976Dan Bornstein public long readLong() throws EOFException; 523c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein} 53