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+
28+package 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+
42+class 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