annotate dwt/internal/image/LEDataInputStream.d @ 259:c0d810de7093

Update SWT 3.4M7 to 3.4
author Frank Benoit <benoit@tionex.de>
date Sun, 29 Jun 2008 14:33:38 +0200
parents ce446666f5a2
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
146
a3471c255cd2 bugfixes
Frank Benoit <benoit@tionex.de>
parents: 131
diff changeset
1 /*******************************************************************************
259
c0d810de7093 Update SWT 3.4M7 to 3.4
Frank Benoit <benoit@tionex.de>
parents: 240
diff changeset
2 * Copyright (c) 2000, 2007 IBM Corporation and others.
12
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 *
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 * Contributors:
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
108
0f12f6bb9739 author notice
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
10 * Port to the D programming language:
0f12f6bb9739 author notice
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
11 * Frank Benoit <benoit@tionex.de>
12
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12 *******************************************************************************/
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 module dwt.internal.image.LEDataInputStream;
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16 import dwt.dwthelper.InputStream;
25
fc2b263b8a3f Merged back the System.arraycopy and use a System class
Frank Benoit <benoit@tionex.de>
parents: 13
diff changeset
17 import dwt.dwthelper.System;
12
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18 import tango.core.Exception;
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 final class LEDataInputStream : InputStream{
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21
13
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents: 12
diff changeset
22 alias InputStream.read read;
3d9bbe0a83a0 FileFormats
Frank Benoit <benoit@tionex.de>
parents: 12
diff changeset
23
12
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 InputStream host;
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
26 int position;
12
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
28 /**
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
29 * The byte array containing the bytes to read.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
30 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
31 protected byte[] buf;
12
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
33 /**
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
34 * The current position within the byte array <code>buf</code>. A value
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
35 * equal to buf.length indicates no bytes available. A value of
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
36 * 0 indicates the buffer is full.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
37 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
38 protected int pos;
12
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
41 public this(InputStream input) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
42 this(input, 512);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
43 }
12
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
45 public this(InputStream input, int bufferSize) {
12
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 host = input;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
47 if (bufferSize > 0) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
48 buf = new byte[bufferSize];
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
49 pos = bufferSize;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
50 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
51 else throw new IllegalArgumentException("bufferSize must be greater zero" );
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
52 }
12
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
54 public void close() {
12
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55 buf = null;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
56 if (host !is null) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
57 host.close();
12
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58 host = null;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
59 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
60 }
12
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
62 /**
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
63 * Answer how many bytes were read.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
64 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
65 public int getPosition() {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
66 return position;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
67 }
12
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
69 /**
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
70 * Answers how many bytes are available for reading without blocking
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
71 */
150
f2e04420fd6c reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents: 146
diff changeset
72 public override int available() {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
73 if (buf is null) throw new IOException("buf is null");
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
74 return (buf.length - pos) + host.available();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
75 }
12
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
77 /**
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
78 * Answer the next byte of the input stream.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
79 */
150
f2e04420fd6c reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents: 146
diff changeset
80 public override int read() {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
81 if (buf is null) throw new IOException("buf is null");
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
82 if (pos < buf.length) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
83 position++;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
84 return (buf[pos++] & 0xFF);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
85 }
12
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86 int c = host.read();
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 108
diff changeset
87 if (c !is -1 ) position++;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
88 return c;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
89 }
12
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
91 /**
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
92 * Don't imitate the JDK behaviour of reading a random number
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
93 * of bytes when you can actually read them all.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
94 */
150
f2e04420fd6c reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents: 146
diff changeset
95 public override int read(byte b[], int off, int len) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
96 int read = 0, count;
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 108
diff changeset
97 while (read !is len && (count = readData(b, off, len - read)) !is -1) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
98 off += count;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
99 read += count;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
100 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
101 position += read;
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 108
diff changeset
102 if (read is 0 && read !is len) return -1;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
103 return read;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
104 }
12
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
105
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
106 /**
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
107 * Reads at most <code>length</code> bytes from this LEDataInputStream and
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
108 * stores them in byte array <code>buffer</code> starting at <code>offset</code>.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
109 * <p>
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
110 * Answer the number of bytes actually read or -1 if no bytes were read and
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
111 * end of stream was encountered. This implementation reads bytes from
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
112 * the pushback buffer first, then the target stream if more bytes are required
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
113 * to satisfy <code>count</code>.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
114 * </p>
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
115 * @param buffer the byte array in which to store the read bytes.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
116 * @param offset the offset in <code>buffer</code> to store the read bytes.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
117 * @param length the maximum number of bytes to store in <code>buffer</code>.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
118 *
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
119 * @return int the number of bytes actually read or -1 if end of stream.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
120 *
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
121 * @exception java.io.IOException if an IOException occurs.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
122 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
123 private int readData(byte[] buffer, int offset, int len) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
124 if (buf is null) throw new IOException("buf is null");
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
125 if (offset < 0 || offset > buffer.length ||
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
126 len < 0 || (len > buffer.length - offset)) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
127 throw new ArrayBoundsException(__FILE__,__LINE__);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
128 }
12
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
129
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
130 int cacheCopied = 0;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
131 int newOffset = offset;
12
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
132
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
133 // Are there pushback bytes available?
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
134 int available = buf.length - pos;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
135 if (available > 0) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
136 cacheCopied = (available >= len) ? len : available;
25
fc2b263b8a3f Merged back the System.arraycopy and use a System class
Frank Benoit <benoit@tionex.de>
parents: 13
diff changeset
137 System.arraycopy(buf, pos, buffer, newOffset, cacheCopied);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
138 newOffset += cacheCopied;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
139 pos += cacheCopied;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
140 }
12
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
142 // Have we copied enough?
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 108
diff changeset
143 if (cacheCopied is len) return len;
12
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
144
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
145 int inCopied = host.read( buffer, newOffset, len - cacheCopied );
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 108
diff changeset
146 if( inCopied is -1 ) inCopied = -1;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
147 if (inCopied > 0 ) return inCopied + cacheCopied;
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 108
diff changeset
148 if (cacheCopied is 0) return inCopied;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
149 return cacheCopied;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
150 }
12
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
151
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
152 /**
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
153 * Answer an integer comprised of the next
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
154 * four bytes of the input stream.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
155 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
156 public int readInt() {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
157 byte[4] buf = void;
146
a3471c255cd2 bugfixes
Frank Benoit <benoit@tionex.de>
parents: 131
diff changeset
158 read(buf);
240
ce446666f5a2 Update to SWT 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
159 return ((buf[3] & 0xFF) << 24) |
ce446666f5a2 Update to SWT 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
160 ((buf[2] & 0xFF) << 16) |
ce446666f5a2 Update to SWT 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
161 ((buf[1] & 0xFF) << 8) |
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
162 (buf[0] & 0xFF);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
163 }
12
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
164
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
165 /**
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
166 * Answer a short comprised of the next
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
167 * two bytes of the input stream.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
168 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
169 public short readShort() {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
170 byte[2] buf = void;
146
a3471c255cd2 bugfixes
Frank Benoit <benoit@tionex.de>
parents: 131
diff changeset
171 read(buf);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
172 return cast(short)(((buf[1] & 0xFF) << 8) | (buf[0] & 0xFF));
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
173 }
12
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
174
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
175 /**
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
176 * Push back the entire content of the given buffer <code>b</code>.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
177 * <p>
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
178 * The bytes are pushed so that they would be read back b[0], b[1], etc.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
179 * If the push back buffer cannot handle the bytes copied from <code>b</code>,
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
180 * an IOException will be thrown and no byte will be pushed back.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
181 * </p>
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
182 *
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
183 * @param b the byte array containing bytes to push back into the stream
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
184 *
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
185 * @exception java.io.IOException if the pushback buffer is too small
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
186 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
187 public void unread(byte[] b) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
188 int l = b.length;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
189 if (l > pos) throw new IOException("cannot unread");
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
190 position -= l;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
191 pos -= l;
25
fc2b263b8a3f Merged back the System.arraycopy and use a System class
Frank Benoit <benoit@tionex.de>
parents: 13
diff changeset
192 System.arraycopy(b, 0, buf, pos, l);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 25
diff changeset
193 }
12
0c78fa47d476 helper classes
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
194 }