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