History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/pkg/java/nio/Heap-X-Buffer.java.template (1 of 18352 files). Show all

Unified · Split

java/pkg/java/nio/Heap-X-Buffer.java.template+595−0
@@ -0,0 +1,595 @@
1/*
2 * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26#warn This file is preprocessed before being compiled
27
28package java.nio;
29
30
31/**
32#if[rw]
33 * A read/write Heap$Type$Buffer.
34#else[rw]
35 * A read-only Heap$Type$Buffer. This class extends the corresponding
36 * read/write class, overriding the mutation methods to throw a {@link
37 * ReadOnlyBufferException} and overriding the view-buffer methods to return an
38 * instance of this class rather than of the superclass.
39#end[rw]
40 */
41
42class Heap$Type$Buffer$RW$
43 extends {#if[ro]?Heap}$Type$Buffer
44{
45
46 // For speed these fields are actually declared in X-Buffer;
47 // these declarations are here as documentation
48 /*
49#if[rw]
50 protected final $type$[] hb;
51 protected final int offset;
52#end[rw]
53 */
54
55 Heap$Type$Buffer$RW$(int cap, int lim) { // package-private
56#if[rw]
57 super(-1, 0, lim, cap, new $type$[cap], 0);
58 /*
59 hb = new $type$[cap];
60 offset = 0;
61 */
62#else[rw]
63 super(cap, lim);
64 this.isReadOnly = true;
65#end[rw]
66 }
67
68 Heap$Type$Buffer$RW$($type$[] buf, int off, int len) { // package-private
69#if[rw]
70 super(-1, off, off + len, buf.length, buf, 0);
71 /*
72 hb = buf;
73 offset = 0;
74 */
75#else[rw]
76 super(buf, off, len);
77 this.isReadOnly = true;
78#end[rw]
79 }
80
81 protected Heap$Type$Buffer$RW$($type$[] buf,
82 int mark, int pos, int lim, int cap,
83 int off)
84 {
85#if[rw]
86 super(mark, pos, lim, cap, buf, off);
87 /*
88 hb = buf;
89 offset = off;
90 */
91#else[rw]
92 super(buf, mark, pos, lim, cap, off);
93 this.isReadOnly = true;
94#end[rw]
95 }
96
97 public $Type$Buffer slice() {
98 return new Heap$Type$Buffer$RW$(hb,
99 -1,
100 0,
101 this.remaining(),
102 this.remaining(),
103 this.position() + offset);
104 }
105
106 public $Type$Buffer duplicate() {
107 return new Heap$Type$Buffer$RW$(hb,
108 this.markValue(),
109 this.position(),
110 this.limit(),
111 this.capacity(),
112 offset);
113 }
114
115 public $Type$Buffer asReadOnlyBuffer() {
116#if[rw]
117 return new Heap$Type$BufferR(hb,
118 this.markValue(),
119 this.position(),
120 this.limit(),
121 this.capacity(),
122 offset);
123#else[rw]
124 return duplicate();
125#end[rw]
126 }
127
128#if[rw]
129
130 protected int ix(int i) {
131 return i + offset;
132 }
133
134 public $type$ get() {
135 return hb[ix(nextGetIndex())];
136 }
137
138 public $type$ get(int i) {
139 return hb[ix(checkIndex(i))];
140 }
141
142 public $Type$Buffer get($type$[] dst, int offset, int length) {
143 checkBounds(offset, length, dst.length);
144 if (length > remaining())
145 throw new BufferUnderflowException();
146 System.arraycopy(hb, ix(position()), dst, offset, length);
147 position(position() + length);
148 return this;
149 }
150
151 public boolean isDirect() {
152 return false;
153 }
154
155#end[rw]
156
157 public boolean isReadOnly() {
158 return {#if[rw]?false:true};
159 }
160
161 public $Type$Buffer put($type$ x) {
162#if[rw]
163 hb[ix(nextPutIndex())] = x;
164 return this;
165#else[rw]
166 throw new ReadOnlyBufferException();
167#end[rw]
168 }
169
170 public $Type$Buffer put(int i, $type$ x) {
171#if[rw]
172 hb[ix(checkIndex(i))] = x;
173 return this;
174#else[rw]
175 throw new ReadOnlyBufferException();
176#end[rw]
177 }
178
179 public $Type$Buffer put($type$[] src, int offset, int length) {
180#if[rw]
181 checkBounds(offset, length, src.length);
182 if (length > remaining())
183 throw new BufferOverflowException();
184 System.arraycopy(src, offset, hb, ix(position()), length);
185 position(position() + length);
186 return this;
187#else[rw]
188 throw new ReadOnlyBufferException();
189#end[rw]
190 }
191
192 public $Type$Buffer put($Type$Buffer src) {
193#if[rw]
194 if (src instanceof Heap$Type$Buffer) {
195 if (src == this)
196 throw new IllegalArgumentException();
197 Heap$Type$Buffer sb = (Heap$Type$Buffer)src;
198 int n = sb.remaining();
199 if (n > remaining())
200 throw new BufferOverflowException();
201 System.arraycopy(sb.hb, sb.ix(sb.position()),
202 hb, ix(position()), n);
203 sb.position(sb.position() + n);
204 position(position() + n);
205 } else if (src.isDirect()) {
206 int n = src.remaining();
207 if (n > remaining())
208 throw new BufferOverflowException();
209 src.get(hb, ix(position()), n);
210 position(position() + n);
211 } else {
212 super.put(src);
213 }
214 return this;
215#else[rw]
216 throw new ReadOnlyBufferException();
217#end[rw]
218 }
219
220 public $Type$Buffer compact() {
221#if[rw]
222 System.arraycopy(hb, ix(position()), hb, ix(0), remaining());
223 position(remaining());
224 limit(capacity());
225 discardMark();
226 return this;
227#else[rw]
228 throw new ReadOnlyBufferException();
229#end[rw]
230 }
231
232
233
234#if[byte]
235
236 byte _get(int i) { // package-private
237 return hb[i];
238 }
239
240 void _put(int i, byte b) { // package-private
241#if[rw]
242 hb[i] = b;
243#else[rw]
244 throw new ReadOnlyBufferException();
245#end[rw]
246 }
247
248 // char
249
250#if[rw]
251
252 public char getChar() {
253 return Bits.getChar(this, ix(nextGetIndex(2)), bigEndian);
254 }
255
256 public char getChar(int i) {
257 return Bits.getChar(this, ix(checkIndex(i, 2)), bigEndian);
258 }
259
260#end[rw]
261
262 public $Type$Buffer putChar(char x) {
263#if[rw]
264 Bits.putChar(this, ix(nextPutIndex(2)), x, bigEndian);
265 return this;
266#else[rw]
267 throw new ReadOnlyBufferException();
268#end[rw]
269 }
270
271 public $Type$Buffer putChar(int i, char x) {
272#if[rw]
273 Bits.putChar(this, ix(checkIndex(i, 2)), x, bigEndian);
274 return this;
275#else[rw]
276 throw new ReadOnlyBufferException();
277#end[rw]
278 }
279
280 public CharBuffer asCharBuffer() {
281 int size = this.remaining() >> 1;
282 int off = offset + position();
283 return (bigEndian
284 ? (CharBuffer)(new ByteBufferAsCharBuffer$RW$B(this,
285 -1,
286 0,
287 size,
288 size,
289 off))
290 : (CharBuffer)(new ByteBufferAsCharBuffer$RW$L(this,
291 -1,
292 0,
293 size,
294 size,
295 off)));
296 }
297
298
299 // short
300
301#if[rw]
302
303 public short getShort() {
304 return Bits.getShort(this, ix(nextGetIndex(2)), bigEndian);
305 }
306
307 public short getShort(int i) {
308 return Bits.getShort(this, ix(checkIndex(i, 2)), bigEndian);
309 }
310
311#end[rw]
312
313 public $Type$Buffer putShort(short x) {
314#if[rw]
315 Bits.putShort(this, ix(nextPutIndex(2)), x, bigEndian);
316 return this;
317#else[rw]
318 throw new ReadOnlyBufferException();
319#end[rw]
320 }
321
322 public $Type$Buffer putShort(int i, short x) {
323#if[rw]
324 Bits.putShort(this, ix(checkIndex(i, 2)), x, bigEndian);
325 return this;
326#else[rw]
327 throw new ReadOnlyBufferException();
328#end[rw]
329 }
330
331 public ShortBuffer asShortBuffer() {
332 int size = this.remaining() >> 1;
333 int off = offset + position();
334 return (bigEndian
335 ? (ShortBuffer)(new ByteBufferAsShortBuffer$RW$B(this,
336 -1,
337 0,
338 size,
339 size,
340 off))
341 : (ShortBuffer)(new ByteBufferAsShortBuffer$RW$L(this,
342 -1,
343 0,
344 size,
345 size,
346 off)));
347 }
348
349
350 // int
351
352#if[rw]
353
354 public int getInt() {
355 return Bits.getInt(this, ix(nextGetIndex(4)), bigEndian);
356 }
357
358 public int getInt(int i) {
359 return Bits.getInt(this, ix(checkIndex(i, 4)), bigEndian);
360 }
361
362#end[rw]
363
364 public $Type$Buffer putInt(int x) {
365#if[rw]
366 Bits.putInt(this, ix(nextPutIndex(4)), x, bigEndian);
367 return this;
368#else[rw]
369 throw new ReadOnlyBufferException();
370#end[rw]
371 }
372
373 public $Type$Buffer putInt(int i, int x) {
374#if[rw]
375 Bits.putInt(this, ix(checkIndex(i, 4)), x, bigEndian);
376 return this;
377#else[rw]
378 throw new ReadOnlyBufferException();
379#end[rw]
380 }
381
382 public IntBuffer asIntBuffer() {
383 int size = this.remaining() >> 2;
384 int off = offset + position();
385 return (bigEndian
386 ? (IntBuffer)(new ByteBufferAsIntBuffer$RW$B(this,
387 -1,
388 0,
389 size,
390 size,
391 off))
392 : (IntBuffer)(new ByteBufferAsIntBuffer$RW$L(this,
393 -1,
394 0,
395 size,
396 size,
397 off)));
398 }
399
400
401 // long
402
403#if[rw]
404
405 public long getLong() {
406 return Bits.getLong(this, ix(nextGetIndex(8)), bigEndian);
407 }
408
409 public long getLong(int i) {
410 return Bits.getLong(this, ix(checkIndex(i, 8)), bigEndian);
411 }
412
413#end[rw]
414
415 public $Type$Buffer putLong(long x) {
416#if[rw]
417 Bits.putLong(this, ix(nextPutIndex(8)), x, bigEndian);
418 return this;
419#else[rw]
420 throw new ReadOnlyBufferException();
421#end[rw]
422 }
423
424 public $Type$Buffer putLong(int i, long x) {
425#if[rw]
426 Bits.putLong(this, ix(checkIndex(i, 8)), x, bigEndian);
427 return this;
428#else[rw]
429 throw new ReadOnlyBufferException();
430#end[rw]
431 }
432
433 public LongBuffer asLongBuffer() {
434 int size = this.remaining() >> 3;
435 int off = offset + position();
436 return (bigEndian
437 ? (LongBuffer)(new ByteBufferAsLongBuffer$RW$B(this,
438 -1,
439 0,
440 size,
441 size,
442 off))
443 : (LongBuffer)(new ByteBufferAsLongBuffer$RW$L(this,
444 -1,
445 0,
446 size,
447 size,
448 off)));
449 }
450
451
452 // float
453
454#if[rw]
455
456 public float getFloat() {
457 return Bits.getFloat(this, ix(nextGetIndex(4)), bigEndian);
458 }
459
460 public float getFloat(int i) {
461 return Bits.getFloat(this, ix(checkIndex(i, 4)), bigEndian);
462 }
463
464#end[rw]
465
466 public $Type$Buffer putFloat(float x) {
467#if[rw]
468 Bits.putFloat(this, ix(nextPutIndex(4)), x, bigEndian);
469 return this;
470#else[rw]
471 throw new ReadOnlyBufferException();
472#end[rw]
473 }
474
475 public $Type$Buffer putFloat(int i, float x) {
476#if[rw]
477 Bits.putFloat(this, ix(checkIndex(i, 4)), x, bigEndian);
478 return this;
479#else[rw]
480 throw new ReadOnlyBufferException();
481#end[rw]
482 }
483
484 public FloatBuffer asFloatBuffer() {
485 int size = this.remaining() >> 2;
486 int off = offset + position();
487 return (bigEndian
488 ? (FloatBuffer)(new ByteBufferAsFloatBuffer$RW$B(this,
489 -1,
490 0,
491 size,
492 size,
493 off))
494 : (FloatBuffer)(new ByteBufferAsFloatBuffer$RW$L(this,
495 -1,
496 0,
497 size,
498 size,
499 off)));
500 }
501
502
503 // double
504
505#if[rw]
506
507 public double getDouble() {
508 return Bits.getDouble(this, ix(nextGetIndex(8)), bigEndian);
509 }
510
511 public double getDouble(int i) {
512 return Bits.getDouble(this, ix(checkIndex(i, 8)), bigEndian);
513 }
514
515#end[rw]
516
517 public $Type$Buffer putDouble(double x) {
518#if[rw]
519 Bits.putDouble(this, ix(nextPutIndex(8)), x, bigEndian);
520 return this;
521#else[rw]
522 throw new ReadOnlyBufferException();
523#end[rw]
524 }
525
526 public $Type$Buffer putDouble(int i, double x) {
527#if[rw]
528 Bits.putDouble(this, ix(checkIndex(i, 8)), x, bigEndian);
529 return this;
530#else[rw]
531 throw new ReadOnlyBufferException();
532#end[rw]
533 }
534
535 public DoubleBuffer asDoubleBuffer() {
536 int size = this.remaining() >> 3;
537 int off = offset + position();
538 return (bigEndian
539 ? (DoubleBuffer)(new ByteBufferAsDoubleBuffer$RW$B(this,
540 -1,
541 0,
542 size,
543 size,
544 off))
545 : (DoubleBuffer)(new ByteBufferAsDoubleBuffer$RW$L(this,
546 -1,
547 0,
548 size,
549 size,
550 off)));
551 }
552
553
554#end[byte]
555
556
557#if[char]
558
559 String toString(int start, int end) { // package-private
560 try {
561 return new String(hb, start + offset, end - start);
562 } catch (StringIndexOutOfBoundsException x) {
563 throw new IndexOutOfBoundsException();
564 }
565 }
566
567
568 // --- Methods to support CharSequence ---
569
570 public CharBuffer subSequence(int start, int end) {
571 if ((start < 0)
572 || (end > length())
573 || (start > end))
574 throw new IndexOutOfBoundsException();
575 int pos = position();
576 return new HeapCharBuffer$RW$(hb,
577 -1,
578 pos + start,
579 pos + end,
580 capacity(),
581 offset);
582 }
583
584#end[char]
585
586
587#if[!byte]
588
589 public ByteOrder order() {
590 return ByteOrder.nativeOrder();
591 }
592
593#end[!byte]
594
595}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t