0dadad75a45828fe0e774c493ac9a2572cef20aa
[jpf-core.git] / src / classes / java / nio / Buffer.java
1 /*
2  * Copyright (C) 2014, United States Government, as represented by the
3  * Administrator of the National Aeronautics and Space Administration.
4  * All rights reserved.
5  *
6  * The Java Pathfinder core (jpf-core) platform is licensed under the
7  * Apache License, Version 2.0 (the "License"); you may not use this file except
8  * in compliance with the License. You may obtain a copy of the License at
9  * 
10  *        http://www.apache.org/licenses/LICENSE-2.0. 
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and 
16  * limitations under the License.
17  */
18 package java.nio;
19
20 public abstract class Buffer {
21         protected int position;
22         protected int capacity;
23         protected int limit;
24
25         public final int capacity() {
26                 return capacity;
27         }
28
29         public final Buffer position(int newPosition) {
30                 if ((newPosition<0)||(newPosition>limit)) {
31                         throw new IllegalArgumentException("Illegal buffer position exception: "+newPosition);
32                 }
33                 this.position = newPosition;
34                 return this;
35         }
36
37         public final int position() {
38                 return position;
39         }
40
41         public final int limit() {
42                 return this.limit;
43         }
44
45         public final Buffer limit(int newLimit) {
46                 if ((newLimit<0)||(newLimit>capacity)) {
47                         throw new IllegalArgumentException("Illegal buffer limit exception: "+newLimit);
48                 }
49                 this.limit = newLimit;
50                 return this;
51         }
52
53         public final Buffer clear(){
54                 position = 0;
55                 limit = capacity;
56                 return this;
57         }
58
59         public final Buffer flip() {
60                 limit = position;
61                 position = 0;
62                 return this;
63         }
64
65         public final Buffer rewind() {
66                 position = 0;
67                 return this;
68         }
69
70         public final int remaining() {
71                 return limit-position;
72         }
73
74         public final boolean hasRemaining() {
75                 return remaining()>0;
76         }
77
78         public abstract boolean hasArray();
79
80         public abstract Object array();
81 }