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
17537939ca06a47668f719ee06159303bcd3175c69Dan Bornsteinpackage com.android.dx.io.instructions;
183c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein
193c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein/**
203c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein * Output stream of code units, for writing out Dalvik bytecode.
213c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein */
22d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornsteinpublic interface CodeOutput extends CodeCursor {
233c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein    /**
2419cefdcde26ea31d06cef031032b2ef78013d976Dan Bornstein     * Writes a code unit.
253c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein     */
263c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein    public void write(short codeUnit);
273c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein
283c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein    /**
2919cefdcde26ea31d06cef031032b2ef78013d976Dan Bornstein     * Writes two code units.
303c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein     */
313c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein    public void write(short u0, short u1);
323c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein
333c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein    /**
3419cefdcde26ea31d06cef031032b2ef78013d976Dan Bornstein     * Writes three code units.
353c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein     */
363c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein    public void write(short u0, short u1, short u2);
373c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein
383c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein    /**
3919cefdcde26ea31d06cef031032b2ef78013d976Dan Bornstein     * Writes four code units.
403c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein     */
413c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein    public void write(short u0, short u1, short u2, short u3);
423c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein
433c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein    /**
4419cefdcde26ea31d06cef031032b2ef78013d976Dan Bornstein     * Writes five code units.
453c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein     */
463c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein    public void write(short u0, short u1, short u2, short u3, short u4);
4732dd826ad1742993cf0627448cd083a5021d71bbDan Bornstein
4832dd826ad1742993cf0627448cd083a5021d71bbDan Bornstein    /**
49d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein     * Writes an {@code int}, little-endian.
50d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein     */
51d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein    public void writeInt(int value);
52d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein
53d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein    /**
54d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein     * Writes a {@code long}, little-endian.
55d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein     */
56d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein    public void writeLong(long value);
57d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein
58d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein    /**
59d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein     * Writes the contents of the given array.
60d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein     */
61d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein    public void write(byte[] data);
62d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein
63d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein    /**
6432dd826ad1742993cf0627448cd083a5021d71bbDan Bornstein     * Writes the contents of the given array.
6532dd826ad1742993cf0627448cd083a5021d71bbDan Bornstein     */
6632dd826ad1742993cf0627448cd083a5021d71bbDan Bornstein    public void write(short[] data);
67d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein
68d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein    /**
69d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein     * Writes the contents of the given array.
70d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein     */
71d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein    public void write(int[] data);
72d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein
73d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein    /**
74d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein     * Writes the contents of the given array.
75d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein     */
76d63837a6a16a19e3ae943cdfad52b6f6c8d04a22Dan Bornstein    public void write(long[] data);
773c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein}
78