<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<title>Source code</title>
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
</head>
<body>
<div class="sourceContainer">
<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
<span class="sourceLineNo">002</span> *  Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
<span class="sourceLineNo">003</span> *  or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
<span class="sourceLineNo">004</span> *  distributed with this work for additional information<a name="line.4"></a>
<span class="sourceLineNo">005</span> *  regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
<span class="sourceLineNo">006</span> *  to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
<span class="sourceLineNo">007</span> *  "License"); you may not use this file except in compliance<a name="line.7"></a>
<span class="sourceLineNo">008</span> *  with the License.  You may obtain a copy of the License at<a name="line.8"></a>
<span class="sourceLineNo">009</span> *<a name="line.9"></a>
<span class="sourceLineNo">010</span> *    http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
<span class="sourceLineNo">011</span> *<a name="line.11"></a>
<span class="sourceLineNo">012</span> *  Unless required by applicable law or agreed to in writing,<a name="line.12"></a>
<span class="sourceLineNo">013</span> *  software distributed under the License is distributed on an<a name="line.13"></a>
<span class="sourceLineNo">014</span> *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY<a name="line.14"></a>
<span class="sourceLineNo">015</span> *  KIND, either express or implied.  See the License for the<a name="line.15"></a>
<span class="sourceLineNo">016</span> *  specific language governing permissions and limitations<a name="line.16"></a>
<span class="sourceLineNo">017</span> *  under the License.<a name="line.17"></a>
<span class="sourceLineNo">018</span> *<a name="line.18"></a>
<span class="sourceLineNo">019</span> */<a name="line.19"></a>
<span class="sourceLineNo">020</span>package org.apache.mina.core.buffer;<a name="line.20"></a>
<span class="sourceLineNo">021</span><a name="line.21"></a>
<span class="sourceLineNo">022</span>import java.io.IOException;<a name="line.22"></a>
<span class="sourceLineNo">023</span>import java.io.InputStream;<a name="line.23"></a>
<span class="sourceLineNo">024</span>import java.io.OutputStream;<a name="line.24"></a>
<span class="sourceLineNo">025</span>import java.nio.BufferOverflowException;<a name="line.25"></a>
<span class="sourceLineNo">026</span>import java.nio.ByteBuffer;<a name="line.26"></a>
<span class="sourceLineNo">027</span>import java.nio.ByteOrder;<a name="line.27"></a>
<span class="sourceLineNo">028</span>import java.nio.CharBuffer;<a name="line.28"></a>
<span class="sourceLineNo">029</span>import java.nio.DoubleBuffer;<a name="line.29"></a>
<span class="sourceLineNo">030</span>import java.nio.FloatBuffer;<a name="line.30"></a>
<span class="sourceLineNo">031</span>import java.nio.IntBuffer;<a name="line.31"></a>
<span class="sourceLineNo">032</span>import java.nio.LongBuffer;<a name="line.32"></a>
<span class="sourceLineNo">033</span>import java.nio.ReadOnlyBufferException;<a name="line.33"></a>
<span class="sourceLineNo">034</span>import java.nio.ShortBuffer;<a name="line.34"></a>
<span class="sourceLineNo">035</span>import java.nio.charset.CharacterCodingException;<a name="line.35"></a>
<span class="sourceLineNo">036</span>import java.nio.charset.CharsetDecoder;<a name="line.36"></a>
<span class="sourceLineNo">037</span>import java.nio.charset.CharsetEncoder;<a name="line.37"></a>
<span class="sourceLineNo">038</span>import java.util.EnumSet;<a name="line.38"></a>
<span class="sourceLineNo">039</span>import java.util.Set;<a name="line.39"></a>
<span class="sourceLineNo">040</span><a name="line.40"></a>
<span class="sourceLineNo">041</span>import org.apache.mina.core.session.IoSession;<a name="line.41"></a>
<span class="sourceLineNo">042</span><a name="line.42"></a>
<span class="sourceLineNo">043</span>/**<a name="line.43"></a>
<span class="sourceLineNo">044</span> * A byte buffer used by MINA applications.<a name="line.44"></a>
<span class="sourceLineNo">045</span> * &lt;p&gt;<a name="line.45"></a>
<span class="sourceLineNo">046</span> * This is a replacement for {@link ByteBuffer}. Please refer to<a name="line.46"></a>
<span class="sourceLineNo">047</span> * {@link ByteBuffer} documentation for preliminary usage. MINA does not use NIO<a name="line.47"></a>
<span class="sourceLineNo">048</span> * {@link ByteBuffer} directly for two reasons:<a name="line.48"></a>
<span class="sourceLineNo">049</span> * &lt;ul&gt;<a name="line.49"></a>
<span class="sourceLineNo">050</span> *   &lt;li&gt;It doesn't provide useful getters and putters such as &lt;code&gt;fill&lt;/code&gt;,<a name="line.50"></a>
<span class="sourceLineNo">051</span> *       &lt;code&gt;get/putString&lt;/code&gt;, and &lt;code&gt;get/putAsciiInt()&lt;/code&gt; enough.&lt;/li&gt;<a name="line.51"></a>
<span class="sourceLineNo">052</span> *   &lt;li&gt;It is difficult to write variable-length data due to its fixed capacity&lt;/li&gt;<a name="line.52"></a>
<span class="sourceLineNo">053</span> * &lt;/ul&gt;<a name="line.53"></a>
<span class="sourceLineNo">054</span> * <a name="line.54"></a>
<span class="sourceLineNo">055</span> * &lt;h2&gt;Allocation&lt;/h2&gt;<a name="line.55"></a>
<span class="sourceLineNo">056</span> * &lt;p&gt;<a name="line.56"></a>
<span class="sourceLineNo">057</span> *   You can allocate a new heap buffer.<a name="line.57"></a>
<span class="sourceLineNo">058</span> * <a name="line.58"></a>
<span class="sourceLineNo">059</span> *   &lt;pre&gt;<a name="line.59"></a>
<span class="sourceLineNo">060</span> *     IoBuffer buf = IoBuffer.allocate(1024, false);<a name="line.60"></a>
<span class="sourceLineNo">061</span> *   &lt;/pre&gt;<a name="line.61"></a>
<span class="sourceLineNo">062</span> * <a name="line.62"></a>
<span class="sourceLineNo">063</span> *   You can also allocate a new direct buffer:<a name="line.63"></a>
<span class="sourceLineNo">064</span> * <a name="line.64"></a>
<span class="sourceLineNo">065</span> *   &lt;pre&gt;<a name="line.65"></a>
<span class="sourceLineNo">066</span> *     IoBuffer buf = IoBuffer.allocate(1024, true);<a name="line.66"></a>
<span class="sourceLineNo">067</span> *   &lt;/pre&gt;<a name="line.67"></a>
<span class="sourceLineNo">068</span> * <a name="line.68"></a>
<span class="sourceLineNo">069</span> *   or you can set the default buffer type.<a name="line.69"></a>
<span class="sourceLineNo">070</span> * <a name="line.70"></a>
<span class="sourceLineNo">071</span> *   &lt;pre&gt;<a name="line.71"></a>
<span class="sourceLineNo">072</span> *     // Allocate heap buffer by default.<a name="line.72"></a>
<span class="sourceLineNo">073</span> *     IoBuffer.setUseDirectBuffer(false);<a name="line.73"></a>
<span class="sourceLineNo">074</span> * <a name="line.74"></a>
<span class="sourceLineNo">075</span> *     // A new heap buffer is returned.<a name="line.75"></a>
<span class="sourceLineNo">076</span> *     IoBuffer buf = IoBuffer.allocate(1024);<a name="line.76"></a>
<span class="sourceLineNo">077</span> *   &lt;/pre&gt;<a name="line.77"></a>
<span class="sourceLineNo">078</span> * <a name="line.78"></a>
<span class="sourceLineNo">079</span> * &lt;h2&gt;Wrapping existing NIO buffers and arrays&lt;/h2&gt;<a name="line.79"></a>
<span class="sourceLineNo">080</span> * &lt;p&gt;<a name="line.80"></a>
<span class="sourceLineNo">081</span> *   This class provides a few &lt;tt&gt;wrap(...)&lt;/tt&gt; methods that wraps any NIO<a name="line.81"></a>
<span class="sourceLineNo">082</span> *   buffers and byte arrays.<a name="line.82"></a>
<span class="sourceLineNo">083</span> * <a name="line.83"></a>
<span class="sourceLineNo">084</span> * &lt;h2&gt;AutoExpand&lt;/h2&gt;<a name="line.84"></a>
<span class="sourceLineNo">085</span> * &lt;p&gt;<a name="line.85"></a>
<span class="sourceLineNo">086</span> *   Writing variable-length data using NIO &lt;tt&gt;ByteBuffers&lt;/tt&gt; is not really<a name="line.86"></a>
<span class="sourceLineNo">087</span> *   easy, and it is because its size is fixed at allocation. {@link IoBuffer} introduces<a name="line.87"></a>
<span class="sourceLineNo">088</span> *   the &lt;tt&gt;autoExpand&lt;/tt&gt; property. If &lt;tt&gt;autoExpand&lt;/tt&gt; property is set to true, <a name="line.88"></a>
<span class="sourceLineNo">089</span> *   you never get a {@link BufferOverflowException} or<a name="line.89"></a>
<span class="sourceLineNo">090</span> *   an {@link IndexOutOfBoundsException} (except when index is negative). It<a name="line.90"></a>
<span class="sourceLineNo">091</span> *   automatically expands its capacity. For instance:<a name="line.91"></a>
<span class="sourceLineNo">092</span> * <a name="line.92"></a>
<span class="sourceLineNo">093</span> *   &lt;pre&gt;<a name="line.93"></a>
<span class="sourceLineNo">094</span> *     String greeting = messageBundle.getMessage(&amp;quot;hello&amp;quot;);<a name="line.94"></a>
<span class="sourceLineNo">095</span> *     IoBuffer buf = IoBuffer.allocate(16);<a name="line.95"></a>
<span class="sourceLineNo">096</span> *     // Turn on autoExpand (it is off by default)<a name="line.96"></a>
<span class="sourceLineNo">097</span> *     buf.setAutoExpand(true);<a name="line.97"></a>
<span class="sourceLineNo">098</span> *     buf.putString(greeting, utf8encoder);<a name="line.98"></a>
<span class="sourceLineNo">099</span> *   &lt;/pre&gt;<a name="line.99"></a>
<span class="sourceLineNo">100</span> * <a name="line.100"></a>
<span class="sourceLineNo">101</span> *   The underlying {@link ByteBuffer} is reallocated by {@link IoBuffer} behind<a name="line.101"></a>
<span class="sourceLineNo">102</span> *   the scene if the encoded data is larger than 16 bytes in the example above.<a name="line.102"></a>
<span class="sourceLineNo">103</span> *   Its capacity will double, and its limit will increase to the last position<a name="line.103"></a>
<span class="sourceLineNo">104</span> *   the string is written.<a name="line.104"></a>
<span class="sourceLineNo">105</span> * <a name="line.105"></a>
<span class="sourceLineNo">106</span> * &lt;h2&gt;AutoShrink&lt;/h2&gt;<a name="line.106"></a>
<span class="sourceLineNo">107</span> * &lt;p&gt;<a name="line.107"></a>
<span class="sourceLineNo">108</span> *   You might also want to decrease the capacity of the buffer when most of the<a name="line.108"></a>
<span class="sourceLineNo">109</span> *   allocated memory area is not being used. {@link IoBuffer} provides<a name="line.109"></a>
<span class="sourceLineNo">110</span> *   &lt;tt&gt;autoShrink&lt;/tt&gt; property to take care of this issue. If<a name="line.110"></a>
<span class="sourceLineNo">111</span> *   &lt;tt&gt;autoShrink&lt;/tt&gt; is turned on, {@link IoBuffer} halves the capacity of the<a name="line.111"></a>
<span class="sourceLineNo">112</span> *   buffer when {@link #compact()} is invoked and only 1/4 or less of the current<a name="line.112"></a>
<span class="sourceLineNo">113</span> *   capacity is being used.<a name="line.113"></a>
<span class="sourceLineNo">114</span> * &lt;p&gt;<a name="line.114"></a>
<span class="sourceLineNo">115</span> *   You can also call the {@link #shrink()} method manually to shrink the capacity of the<a name="line.115"></a>
<span class="sourceLineNo">116</span> *   buffer.<a name="line.116"></a>
<span class="sourceLineNo">117</span> * &lt;p&gt;<a name="line.117"></a>
<span class="sourceLineNo">118</span> *   The underlying {@link ByteBuffer} is reallocated by the {@link IoBuffer} behind<a name="line.118"></a>
<span class="sourceLineNo">119</span> *   the scene, and therefore {@link #buf()} will return a different<a name="line.119"></a>
<span class="sourceLineNo">120</span> *   {@link ByteBuffer} instance once capacity changes. Please also note<a name="line.120"></a>
<span class="sourceLineNo">121</span> *   that the {@link #compact()} method or the {@link #shrink()} method<a name="line.121"></a>
<span class="sourceLineNo">122</span> *   will not decrease the capacity if the new capacity is less than the <a name="line.122"></a>
<span class="sourceLineNo">123</span> *   {@link #minimumCapacity()} of the buffer.<a name="line.123"></a>
<span class="sourceLineNo">124</span> * <a name="line.124"></a>
<span class="sourceLineNo">125</span> * &lt;h2&gt;Derived Buffers&lt;/h2&gt;<a name="line.125"></a>
<span class="sourceLineNo">126</span> * &lt;p&gt;<a name="line.126"></a>
<span class="sourceLineNo">127</span> *   Derived buffers are the buffers which were created by the {@link #duplicate()},<a name="line.127"></a>
<span class="sourceLineNo">128</span> *   {@link #slice()}, or {@link #asReadOnlyBuffer()} methods. They are useful especially<a name="line.128"></a>
<span class="sourceLineNo">129</span> *   when you broadcast the same messages to multiple {@link IoSession}s. Please<a name="line.129"></a>
<span class="sourceLineNo">130</span> *   note that the buffer derived from and its derived buffers are not <a name="line.130"></a>
<span class="sourceLineNo">131</span> *   auto-expandable nor auto-shrinkable. Trying to call<a name="line.131"></a>
<span class="sourceLineNo">132</span> *   {@link #setAutoExpand(boolean)} or {@link #setAutoShrink(boolean)} with<a name="line.132"></a>
<span class="sourceLineNo">133</span> *   &lt;tt&gt;true&lt;/tt&gt; parameter will raise an {@link IllegalStateException}.<a name="line.133"></a>
<span class="sourceLineNo">134</span> * <a name="line.134"></a>
<span class="sourceLineNo">135</span> * &lt;h2&gt;Changing Buffer Allocation Policy&lt;/h2&gt;<a name="line.135"></a>
<span class="sourceLineNo">136</span> * &lt;p&gt;<a name="line.136"></a>
<span class="sourceLineNo">137</span> *   The {@link IoBufferAllocator} interface lets you override the default buffer<a name="line.137"></a>
<span class="sourceLineNo">138</span> *   management behavior. There are two allocators provided out-of-the-box:<a name="line.138"></a>
<span class="sourceLineNo">139</span> *   &lt;ul&gt;<a name="line.139"></a>
<span class="sourceLineNo">140</span> *     &lt;li&gt;{@link SimpleBufferAllocator} (default)&lt;/li&gt;<a name="line.140"></a>
<span class="sourceLineNo">141</span> *     &lt;li&gt;{@link CachedBufferAllocator}&lt;/li&gt;<a name="line.141"></a>
<span class="sourceLineNo">142</span> *   &lt;/ul&gt;<a name="line.142"></a>
<span class="sourceLineNo">143</span> *   You can implement your own allocator and use it by calling<a name="line.143"></a>
<span class="sourceLineNo">144</span> *   {@link #setAllocator(IoBufferAllocator)}.<a name="line.144"></a>
<span class="sourceLineNo">145</span> * <a name="line.145"></a>
<span class="sourceLineNo">146</span> * @author &lt;a href="http://mina.apache.org"&gt;Apache MINA Project&lt;/a&gt;<a name="line.146"></a>
<span class="sourceLineNo">147</span> */<a name="line.147"></a>
<span class="sourceLineNo">148</span>public abstract class IoBuffer implements Comparable&lt;IoBuffer&gt; {<a name="line.148"></a>
<span class="sourceLineNo">149</span>    /** The allocator used to create new buffers */<a name="line.149"></a>
<span class="sourceLineNo">150</span>    private static IoBufferAllocator allocator = new SimpleBufferAllocator();<a name="line.150"></a>
<span class="sourceLineNo">151</span><a name="line.151"></a>
<span class="sourceLineNo">152</span>    /** A flag indicating which type of buffer we are using : heap or direct */<a name="line.152"></a>
<span class="sourceLineNo">153</span>    private static boolean useDirectBuffer = false;<a name="line.153"></a>
<span class="sourceLineNo">154</span><a name="line.154"></a>
<span class="sourceLineNo">155</span>    /**<a name="line.155"></a>
<span class="sourceLineNo">156</span>     * @return the allocator used by existing and new buffers<a name="line.156"></a>
<span class="sourceLineNo">157</span>     */<a name="line.157"></a>
<span class="sourceLineNo">158</span>    public static IoBufferAllocator getAllocator() {<a name="line.158"></a>
<span class="sourceLineNo">159</span>        return allocator;<a name="line.159"></a>
<span class="sourceLineNo">160</span>    }<a name="line.160"></a>
<span class="sourceLineNo">161</span><a name="line.161"></a>
<span class="sourceLineNo">162</span>    /**<a name="line.162"></a>
<span class="sourceLineNo">163</span>     * Sets the allocator used by existing and new buffers<a name="line.163"></a>
<span class="sourceLineNo">164</span>     * <a name="line.164"></a>
<span class="sourceLineNo">165</span>     * @param newAllocator the new allocator to use<a name="line.165"></a>
<span class="sourceLineNo">166</span>     */<a name="line.166"></a>
<span class="sourceLineNo">167</span>    public static void setAllocator(IoBufferAllocator newAllocator) {<a name="line.167"></a>
<span class="sourceLineNo">168</span>        if (newAllocator == null) {<a name="line.168"></a>
<span class="sourceLineNo">169</span>            throw new IllegalArgumentException("allocator");<a name="line.169"></a>
<span class="sourceLineNo">170</span>        }<a name="line.170"></a>
<span class="sourceLineNo">171</span><a name="line.171"></a>
<span class="sourceLineNo">172</span>        IoBufferAllocator oldAllocator = allocator;<a name="line.172"></a>
<span class="sourceLineNo">173</span><a name="line.173"></a>
<span class="sourceLineNo">174</span>        allocator = newAllocator;<a name="line.174"></a>
<span class="sourceLineNo">175</span><a name="line.175"></a>
<span class="sourceLineNo">176</span>        if (null != oldAllocator) {<a name="line.176"></a>
<span class="sourceLineNo">177</span>            oldAllocator.dispose();<a name="line.177"></a>
<span class="sourceLineNo">178</span>        }<a name="line.178"></a>
<span class="sourceLineNo">179</span>    }<a name="line.179"></a>
<span class="sourceLineNo">180</span><a name="line.180"></a>
<span class="sourceLineNo">181</span>    /**<a name="line.181"></a>
<span class="sourceLineNo">182</span>     * @return &lt;tt&gt;true&lt;/tt&gt; if and only if a direct buffer is allocated by<a name="line.182"></a>
<span class="sourceLineNo">183</span>     * default when the type of the new buffer is not specified. The default<a name="line.183"></a>
<span class="sourceLineNo">184</span>     * value is &lt;tt&gt;false&lt;/tt&gt;.<a name="line.184"></a>
<span class="sourceLineNo">185</span>     */<a name="line.185"></a>
<span class="sourceLineNo">186</span>    public static boolean isUseDirectBuffer() {<a name="line.186"></a>
<span class="sourceLineNo">187</span>        return useDirectBuffer;<a name="line.187"></a>
<span class="sourceLineNo">188</span>    }<a name="line.188"></a>
<span class="sourceLineNo">189</span><a name="line.189"></a>
<span class="sourceLineNo">190</span>    /**<a name="line.190"></a>
<span class="sourceLineNo">191</span>     * Sets if a direct buffer should be allocated by default when the type of<a name="line.191"></a>
<span class="sourceLineNo">192</span>     * the new buffer is not specified. The default value is &lt;tt&gt;false&lt;/tt&gt;.<a name="line.192"></a>
<span class="sourceLineNo">193</span>     * <a name="line.193"></a>
<span class="sourceLineNo">194</span>     * @param useDirectBuffer Tells if direct buffers should be allocated<a name="line.194"></a>
<span class="sourceLineNo">195</span>     */<a name="line.195"></a>
<span class="sourceLineNo">196</span>    public static void setUseDirectBuffer(boolean useDirectBuffer) {<a name="line.196"></a>
<span class="sourceLineNo">197</span>        IoBuffer.useDirectBuffer = useDirectBuffer;<a name="line.197"></a>
<span class="sourceLineNo">198</span>    }<a name="line.198"></a>
<span class="sourceLineNo">199</span><a name="line.199"></a>
<span class="sourceLineNo">200</span>    /**<a name="line.200"></a>
<span class="sourceLineNo">201</span>     * Returns the direct or heap buffer which is capable to store the specified<a name="line.201"></a>
<span class="sourceLineNo">202</span>     * amount of bytes.<a name="line.202"></a>
<span class="sourceLineNo">203</span>     * <a name="line.203"></a>
<span class="sourceLineNo">204</span>     * @param capacity the capacity of the buffer<a name="line.204"></a>
<span class="sourceLineNo">205</span>     * @return a IoBuffer which can hold up to capacity bytes<a name="line.205"></a>
<span class="sourceLineNo">206</span>     * <a name="line.206"></a>
<span class="sourceLineNo">207</span>     * @see #setUseDirectBuffer(boolean)<a name="line.207"></a>
<span class="sourceLineNo">208</span>     */<a name="line.208"></a>
<span class="sourceLineNo">209</span>    public static IoBuffer allocate(int capacity) {<a name="line.209"></a>
<span class="sourceLineNo">210</span>        return allocate(capacity, useDirectBuffer);<a name="line.210"></a>
<span class="sourceLineNo">211</span>    }<a name="line.211"></a>
<span class="sourceLineNo">212</span><a name="line.212"></a>
<span class="sourceLineNo">213</span>    /**<a name="line.213"></a>
<span class="sourceLineNo">214</span>     * Returns a direct or heap IoBuffer which can contain the specified number of bytes.<a name="line.214"></a>
<span class="sourceLineNo">215</span>     * <a name="line.215"></a>
<span class="sourceLineNo">216</span>     * @param capacity the capacity of the buffer<a name="line.216"></a>
<span class="sourceLineNo">217</span>     * @param useDirectBuffer &lt;tt&gt;true&lt;/tt&gt; to get a direct buffer, &lt;tt&gt;false&lt;/tt&gt; to get a<a name="line.217"></a>
<span class="sourceLineNo">218</span>     *            heap buffer.<a name="line.218"></a>
<span class="sourceLineNo">219</span>     * @return a direct or heap  IoBuffer which can hold up to capacity bytes<a name="line.219"></a>
<span class="sourceLineNo">220</span>     */<a name="line.220"></a>
<span class="sourceLineNo">221</span>    public static IoBuffer allocate(int capacity, boolean useDirectBuffer) {<a name="line.221"></a>
<span class="sourceLineNo">222</span>        if (capacity &lt; 0) {<a name="line.222"></a>
<span class="sourceLineNo">223</span>            throw new IllegalArgumentException("capacity: " + capacity);<a name="line.223"></a>
<span class="sourceLineNo">224</span>        }<a name="line.224"></a>
<span class="sourceLineNo">225</span><a name="line.225"></a>
<span class="sourceLineNo">226</span>        return allocator.allocate(capacity, useDirectBuffer);<a name="line.226"></a>
<span class="sourceLineNo">227</span>    }<a name="line.227"></a>
<span class="sourceLineNo">228</span><a name="line.228"></a>
<span class="sourceLineNo">229</span>    /**<a name="line.229"></a>
<span class="sourceLineNo">230</span>     * Wraps the specified NIO {@link ByteBuffer} into a MINA buffer (either direct or heap).<a name="line.230"></a>
<span class="sourceLineNo">231</span>     * <a name="line.231"></a>
<span class="sourceLineNo">232</span>     * @param nioBuffer The {@link ByteBuffer} to wrap<a name="line.232"></a>
<span class="sourceLineNo">233</span>     * @return a IoBuffer containing the bytes stored in the {@link ByteBuffer}<a name="line.233"></a>
<span class="sourceLineNo">234</span>     */<a name="line.234"></a>
<span class="sourceLineNo">235</span>    public static IoBuffer wrap(ByteBuffer nioBuffer) {<a name="line.235"></a>
<span class="sourceLineNo">236</span>        return allocator.wrap(nioBuffer);<a name="line.236"></a>
<span class="sourceLineNo">237</span>    }<a name="line.237"></a>
<span class="sourceLineNo">238</span><a name="line.238"></a>
<span class="sourceLineNo">239</span>    /**<a name="line.239"></a>
<span class="sourceLineNo">240</span>     * Wraps the specified byte array into a MINA heap buffer. Note that<a name="line.240"></a>
<span class="sourceLineNo">241</span>     * the byte array is not copied, so any modification done on it will<a name="line.241"></a>
<span class="sourceLineNo">242</span>     * be visible by both sides.<a name="line.242"></a>
<span class="sourceLineNo">243</span>     * <a name="line.243"></a>
<span class="sourceLineNo">244</span>     * @param byteArray The byte array to wrap<a name="line.244"></a>
<span class="sourceLineNo">245</span>     * @return a heap IoBuffer containing the byte array<a name="line.245"></a>
<span class="sourceLineNo">246</span>     */<a name="line.246"></a>
<span class="sourceLineNo">247</span>    public static IoBuffer wrap(byte[] byteArray) {<a name="line.247"></a>
<span class="sourceLineNo">248</span>        return wrap(ByteBuffer.wrap(byteArray));<a name="line.248"></a>
<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
<span class="sourceLineNo">250</span><a name="line.250"></a>
<span class="sourceLineNo">251</span>    /**<a name="line.251"></a>
<span class="sourceLineNo">252</span>     * Wraps the specified byte array into MINA heap buffer. We just wrap the <a name="line.252"></a>
<span class="sourceLineNo">253</span>     * bytes starting from offset up to offset + length.  Note that<a name="line.253"></a>
<span class="sourceLineNo">254</span>     * the byte array is not copied, so any modification done on it will<a name="line.254"></a>
<span class="sourceLineNo">255</span>     * be visible by both sides.<a name="line.255"></a>
<span class="sourceLineNo">256</span>     * <a name="line.256"></a>
<span class="sourceLineNo">257</span>     * @param byteArray The byte array to wrap<a name="line.257"></a>
<span class="sourceLineNo">258</span>     * @param offset The starting point in the byte array<a name="line.258"></a>
<span class="sourceLineNo">259</span>     * @param length The number of bytes to store<a name="line.259"></a>
<span class="sourceLineNo">260</span>     * @return a heap IoBuffer containing the selected part of the byte array<a name="line.260"></a>
<span class="sourceLineNo">261</span>     */<a name="line.261"></a>
<span class="sourceLineNo">262</span>    public static IoBuffer wrap(byte[] byteArray, int offset, int length) {<a name="line.262"></a>
<span class="sourceLineNo">263</span>        return wrap(ByteBuffer.wrap(byteArray, offset, length));<a name="line.263"></a>
<span class="sourceLineNo">264</span>    }<a name="line.264"></a>
<span class="sourceLineNo">265</span><a name="line.265"></a>
<span class="sourceLineNo">266</span>    /**<a name="line.266"></a>
<span class="sourceLineNo">267</span>     * Normalizes the specified capacity of the buffer to power of 2, which is<a name="line.267"></a>
<span class="sourceLineNo">268</span>     * often helpful for optimal memory usage and performance. If it is greater<a name="line.268"></a>
<span class="sourceLineNo">269</span>     * than or equal to {@link Integer#MAX_VALUE}, it returns<a name="line.269"></a>
<span class="sourceLineNo">270</span>     * {@link Integer#MAX_VALUE}. If it is zero, it returns zero.<a name="line.270"></a>
<span class="sourceLineNo">271</span>     * <a name="line.271"></a>
<span class="sourceLineNo">272</span>     * @param requestedCapacity The IoBuffer capacity we want to be able to store<a name="line.272"></a>
<span class="sourceLineNo">273</span>     * @return The  power of 2 strictly superior to the requested capacity<a name="line.273"></a>
<span class="sourceLineNo">274</span>     */<a name="line.274"></a>
<span class="sourceLineNo">275</span>    protected static int normalizeCapacity(int requestedCapacity) {<a name="line.275"></a>
<span class="sourceLineNo">276</span>        if (requestedCapacity &lt; 0) {<a name="line.276"></a>
<span class="sourceLineNo">277</span>            return Integer.MAX_VALUE;<a name="line.277"></a>
<span class="sourceLineNo">278</span>        }<a name="line.278"></a>
<span class="sourceLineNo">279</span><a name="line.279"></a>
<span class="sourceLineNo">280</span>        int newCapacity = Integer.highestOneBit(requestedCapacity);<a name="line.280"></a>
<span class="sourceLineNo">281</span>        newCapacity &lt;&lt;= (newCapacity &lt; requestedCapacity ? 1 : 0);<a name="line.281"></a>
<span class="sourceLineNo">282</span>        <a name="line.282"></a>
<span class="sourceLineNo">283</span>        return newCapacity &lt; 0 ? Integer.MAX_VALUE : newCapacity;<a name="line.283"></a>
<span class="sourceLineNo">284</span>    }<a name="line.284"></a>
<span class="sourceLineNo">285</span><a name="line.285"></a>
<span class="sourceLineNo">286</span>    /**<a name="line.286"></a>
<span class="sourceLineNo">287</span>     * Creates a new instance. This is an empty constructor. It's protected, <a name="line.287"></a>
<span class="sourceLineNo">288</span>     * to forbid its usage by the users.<a name="line.288"></a>
<span class="sourceLineNo">289</span>     */<a name="line.289"></a>
<span class="sourceLineNo">290</span>    protected IoBuffer() {<a name="line.290"></a>
<span class="sourceLineNo">291</span>        // Do nothing<a name="line.291"></a>
<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
<span class="sourceLineNo">293</span><a name="line.293"></a>
<span class="sourceLineNo">294</span>    /**<a name="line.294"></a>
<span class="sourceLineNo">295</span>     * Declares this buffer and all its derived buffers are not used anymore so<a name="line.295"></a>
<span class="sourceLineNo">296</span>     * that it can be reused by some {@link IoBufferAllocator} implementations.<a name="line.296"></a>
<span class="sourceLineNo">297</span>     * It is not mandatory to call this method, but you might want to invoke<a name="line.297"></a>
<span class="sourceLineNo">298</span>     * this method for maximum performance.<a name="line.298"></a>
<span class="sourceLineNo">299</span>     */<a name="line.299"></a>
<span class="sourceLineNo">300</span>    public abstract void free();<a name="line.300"></a>
<span class="sourceLineNo">301</span><a name="line.301"></a>
<span class="sourceLineNo">302</span>    /**<a name="line.302"></a>
<span class="sourceLineNo">303</span>     * @return the underlying NIO {@link ByteBuffer} instance.<a name="line.303"></a>
<span class="sourceLineNo">304</span>     */<a name="line.304"></a>
<span class="sourceLineNo">305</span>    public abstract ByteBuffer buf();<a name="line.305"></a>
<span class="sourceLineNo">306</span><a name="line.306"></a>
<span class="sourceLineNo">307</span>    /**<a name="line.307"></a>
<span class="sourceLineNo">308</span>     * @see ByteBuffer#isDirect()<a name="line.308"></a>
<span class="sourceLineNo">309</span>     * <a name="line.309"></a>
<span class="sourceLineNo">310</span>     * @return &lt;tt&gt;True&lt;/tt&gt; if this is a direct buffer<a name="line.310"></a>
<span class="sourceLineNo">311</span>     */<a name="line.311"></a>
<span class="sourceLineNo">312</span>    public abstract boolean isDirect();<a name="line.312"></a>
<span class="sourceLineNo">313</span><a name="line.313"></a>
<span class="sourceLineNo">314</span>    /**<a name="line.314"></a>
<span class="sourceLineNo">315</span>     * @return &lt;tt&gt;true&lt;/tt&gt; if and only if this buffer is derived from another<a name="line.315"></a>
<span class="sourceLineNo">316</span>     * buffer via one of the {@link #duplicate()}, {@link #slice()} or<a name="line.316"></a>
<span class="sourceLineNo">317</span>     * {@link #asReadOnlyBuffer()} methods.<a name="line.317"></a>
<span class="sourceLineNo">318</span>     */<a name="line.318"></a>
<span class="sourceLineNo">319</span>    public abstract boolean isDerived();<a name="line.319"></a>
<span class="sourceLineNo">320</span><a name="line.320"></a>
<span class="sourceLineNo">321</span>    /**<a name="line.321"></a>
<span class="sourceLineNo">322</span>     * @see ByteBuffer#isReadOnly()<a name="line.322"></a>
<span class="sourceLineNo">323</span>     * <a name="line.323"></a>
<span class="sourceLineNo">324</span>     * @return &lt;tt&gt;true&lt;/tt&gt; if the buffer is readOnly<a name="line.324"></a>
<span class="sourceLineNo">325</span>     */<a name="line.325"></a>
<span class="sourceLineNo">326</span>    public abstract boolean isReadOnly();<a name="line.326"></a>
<span class="sourceLineNo">327</span><a name="line.327"></a>
<span class="sourceLineNo">328</span>    /**<a name="line.328"></a>
<span class="sourceLineNo">329</span>     * @return the minimum capacity of this buffer which is used to determine<a name="line.329"></a>
<span class="sourceLineNo">330</span>     * the new capacity of the buffer shrunk by the {@link #compact()} and<a name="line.330"></a>
<span class="sourceLineNo">331</span>     * {@link #shrink()} operation. The default value is the initial capacity of<a name="line.331"></a>
<span class="sourceLineNo">332</span>     * the buffer.<a name="line.332"></a>
<span class="sourceLineNo">333</span>     */<a name="line.333"></a>
<span class="sourceLineNo">334</span>    public abstract int minimumCapacity();<a name="line.334"></a>
<span class="sourceLineNo">335</span><a name="line.335"></a>
<span class="sourceLineNo">336</span>    /**<a name="line.336"></a>
<span class="sourceLineNo">337</span>     * Sets the minimum capacity of this buffer which is used to determine the<a name="line.337"></a>
<span class="sourceLineNo">338</span>     * new capacity of the buffer shrunk by {@link #compact()} and<a name="line.338"></a>
<span class="sourceLineNo">339</span>     * {@link #shrink()} operation. The default value is the initial capacity of<a name="line.339"></a>
<span class="sourceLineNo">340</span>     * the buffer.<a name="line.340"></a>
<span class="sourceLineNo">341</span>     * <a name="line.341"></a>
<span class="sourceLineNo">342</span>     * @param minimumCapacity the wanted minimum capacity<a name="line.342"></a>
<span class="sourceLineNo">343</span>     * @return the underlying NIO {@link ByteBuffer} instance.<a name="line.343"></a>
<span class="sourceLineNo">344</span>     */<a name="line.344"></a>
<span class="sourceLineNo">345</span>    public abstract IoBuffer minimumCapacity(int minimumCapacity);<a name="line.345"></a>
<span class="sourceLineNo">346</span><a name="line.346"></a>
<span class="sourceLineNo">347</span>    /**<a name="line.347"></a>
<span class="sourceLineNo">348</span>     * @see ByteBuffer#capacity()<a name="line.348"></a>
<span class="sourceLineNo">349</span>     * <a name="line.349"></a>
<span class="sourceLineNo">350</span>     * @return the buffer capacity<a name="line.350"></a>
<span class="sourceLineNo">351</span>     */<a name="line.351"></a>
<span class="sourceLineNo">352</span>    public abstract int capacity();<a name="line.352"></a>
<span class="sourceLineNo">353</span><a name="line.353"></a>
<span class="sourceLineNo">354</span>    /**<a name="line.354"></a>
<span class="sourceLineNo">355</span>     * Increases the capacity of this buffer. If the new capacity is less than<a name="line.355"></a>
<span class="sourceLineNo">356</span>     * or equal to the current capacity, this method returns the original buffer. <a name="line.356"></a>
<span class="sourceLineNo">357</span>     * If the new capacity is greater than the current capacity, the buffer is<a name="line.357"></a>
<span class="sourceLineNo">358</span>     * reallocated while retaining the position, limit, mark and the content of<a name="line.358"></a>
<span class="sourceLineNo">359</span>     * the buffer.<a name="line.359"></a>
<span class="sourceLineNo">360</span>     * &lt;br&gt;<a name="line.360"></a>
<span class="sourceLineNo">361</span>     * Note that the IoBuffer is replaced, it's not copied.<a name="line.361"></a>
<span class="sourceLineNo">362</span>     * &lt;br&gt;<a name="line.362"></a>
<span class="sourceLineNo">363</span>     * Assuming a buffer contains N bytes, its position is 0 and its current capacity is C, <a name="line.363"></a>
<span class="sourceLineNo">364</span>     * here are the resulting buffer if we set the new capacity to a value V &amp;lt; C and V &amp;gt; C :<a name="line.364"></a>
<span class="sourceLineNo">365</span>     * <a name="line.365"></a>
<span class="sourceLineNo">366</span>     * &lt;pre&gt;<a name="line.366"></a>
<span class="sourceLineNo">367</span>     *  Initial buffer :<a name="line.367"></a>
<span class="sourceLineNo">368</span>     *   <a name="line.368"></a>
<span class="sourceLineNo">369</span>     *   0       L          C<a name="line.369"></a>
<span class="sourceLineNo">370</span>     *  +--------+----------+<a name="line.370"></a>
<span class="sourceLineNo">371</span>     *  |XXXXXXXX|          |<a name="line.371"></a>
<span class="sourceLineNo">372</span>     *  +--------+----------+<a name="line.372"></a>
<span class="sourceLineNo">373</span>     *   ^       ^          ^<a name="line.373"></a>
<span class="sourceLineNo">374</span>     *   |       |          |<a name="line.374"></a>
<span class="sourceLineNo">375</span>     *  pos    limit     capacity<a name="line.375"></a>
<span class="sourceLineNo">376</span>     *  <a name="line.376"></a>
<span class="sourceLineNo">377</span>     * V &amp;lt;= C :<a name="line.377"></a>
<span class="sourceLineNo">378</span>     * <a name="line.378"></a>
<span class="sourceLineNo">379</span>     *   0       L          C<a name="line.379"></a>
<span class="sourceLineNo">380</span>     *  +--------+----------+<a name="line.380"></a>
<span class="sourceLineNo">381</span>     *  |XXXXXXXX|          |<a name="line.381"></a>
<span class="sourceLineNo">382</span>     *  +--------+----------+<a name="line.382"></a>
<span class="sourceLineNo">383</span>     *   ^       ^          ^<a name="line.383"></a>
<span class="sourceLineNo">384</span>     *   |       |          |<a name="line.384"></a>
<span class="sourceLineNo">385</span>     *  pos    limit   newCapacity<a name="line.385"></a>
<span class="sourceLineNo">386</span>     *  <a name="line.386"></a>
<span class="sourceLineNo">387</span>     * V &amp;gt; C :<a name="line.387"></a>
<span class="sourceLineNo">388</span>     * <a name="line.388"></a>
<span class="sourceLineNo">389</span>     *   0       L          C            V<a name="line.389"></a>
<span class="sourceLineNo">390</span>     *  +--------+-----------------------+<a name="line.390"></a>
<span class="sourceLineNo">391</span>     *  |XXXXXXXX|          :            |<a name="line.391"></a>
<span class="sourceLineNo">392</span>     *  +--------+-----------------------+<a name="line.392"></a>
<span class="sourceLineNo">393</span>     *   ^       ^          ^            ^<a name="line.393"></a>
<span class="sourceLineNo">394</span>     *   |       |          |            |<a name="line.394"></a>
<span class="sourceLineNo">395</span>     *  pos    limit   oldCapacity  newCapacity<a name="line.395"></a>
<span class="sourceLineNo">396</span>     *  <a name="line.396"></a>
<span class="sourceLineNo">397</span>     *  The buffer has been increased.<a name="line.397"></a>
<span class="sourceLineNo">398</span>     *  <a name="line.398"></a>
<span class="sourceLineNo">399</span>     * &lt;/pre&gt;<a name="line.399"></a>
<span class="sourceLineNo">400</span>     * <a name="line.400"></a>
<span class="sourceLineNo">401</span>     * @param newCapacity the wanted capacity<a name="line.401"></a>
<span class="sourceLineNo">402</span>     * @return the underlying NIO {@link ByteBuffer} instance.<a name="line.402"></a>
<span class="sourceLineNo">403</span>     */<a name="line.403"></a>
<span class="sourceLineNo">404</span>    public abstract IoBuffer capacity(int newCapacity);<a name="line.404"></a>
<span class="sourceLineNo">405</span><a name="line.405"></a>
<span class="sourceLineNo">406</span>    /**<a name="line.406"></a>
<span class="sourceLineNo">407</span>     * @return &lt;tt&gt;true&lt;/tt&gt; if and only if &lt;tt&gt;autoExpand&lt;/tt&gt; is turned on.<a name="line.407"></a>
<span class="sourceLineNo">408</span>     */<a name="line.408"></a>
<span class="sourceLineNo">409</span>    public abstract boolean isAutoExpand();<a name="line.409"></a>
<span class="sourceLineNo">410</span><a name="line.410"></a>
<span class="sourceLineNo">411</span>    /**<a name="line.411"></a>
<span class="sourceLineNo">412</span>     * Turns on or off &lt;tt&gt;autoExpand&lt;/tt&gt;.<a name="line.412"></a>
<span class="sourceLineNo">413</span>     * <a name="line.413"></a>
<span class="sourceLineNo">414</span>     * @param autoExpand The flag value to set<a name="line.414"></a>
<span class="sourceLineNo">415</span>     * @return The modified IoBuffer instance<a name="line.415"></a>
<span class="sourceLineNo">416</span>     */<a name="line.416"></a>
<span class="sourceLineNo">417</span>    public abstract IoBuffer setAutoExpand(boolean autoExpand);<a name="line.417"></a>
<span class="sourceLineNo">418</span><a name="line.418"></a>
<span class="sourceLineNo">419</span>    /**<a name="line.419"></a>
<span class="sourceLineNo">420</span>     * @return &lt;tt&gt;true&lt;/tt&gt; if and only if &lt;tt&gt;autoShrink&lt;/tt&gt; is turned on.<a name="line.420"></a>
<span class="sourceLineNo">421</span>     */<a name="line.421"></a>
<span class="sourceLineNo">422</span>    public abstract boolean isAutoShrink();<a name="line.422"></a>
<span class="sourceLineNo">423</span><a name="line.423"></a>
<span class="sourceLineNo">424</span>    /**<a name="line.424"></a>
<span class="sourceLineNo">425</span>     * Turns on or off &lt;tt&gt;autoShrink&lt;/tt&gt;.<a name="line.425"></a>
<span class="sourceLineNo">426</span>     * <a name="line.426"></a>
<span class="sourceLineNo">427</span>     * @param autoShrink The flag value to set<a name="line.427"></a>
<span class="sourceLineNo">428</span>     * @return The modified IoBuffer instance<a name="line.428"></a>
<span class="sourceLineNo">429</span>     */<a name="line.429"></a>
<span class="sourceLineNo">430</span>    public abstract IoBuffer setAutoShrink(boolean autoShrink);<a name="line.430"></a>
<span class="sourceLineNo">431</span><a name="line.431"></a>
<span class="sourceLineNo">432</span>    /**<a name="line.432"></a>
<span class="sourceLineNo">433</span>     * Changes the capacity and limit of this buffer so this buffer get the<a name="line.433"></a>
<span class="sourceLineNo">434</span>     * specified &lt;tt&gt;expectedRemaining&lt;/tt&gt; room from the current position. This<a name="line.434"></a>
<span class="sourceLineNo">435</span>     * method works even if you didn't set &lt;tt&gt;autoExpand&lt;/tt&gt; to &lt;tt&gt;true&lt;/tt&gt;.<a name="line.435"></a>
<span class="sourceLineNo">436</span>     * &lt;br&gt;<a name="line.436"></a>
<span class="sourceLineNo">437</span>     * Assuming a buffer contains N bytes, its position is P and its current capacity is C, <a name="line.437"></a>
<span class="sourceLineNo">438</span>     * here are the resulting buffer if we call the expand method with a expectedRemaining<a name="line.438"></a>
<span class="sourceLineNo">439</span>     * value V :<a name="line.439"></a>
<span class="sourceLineNo">440</span>     * <a name="line.440"></a>
<span class="sourceLineNo">441</span>     * &lt;pre&gt;<a name="line.441"></a>
<span class="sourceLineNo">442</span>     *  Initial buffer :<a name="line.442"></a>
<span class="sourceLineNo">443</span>     *   <a name="line.443"></a>
<span class="sourceLineNo">444</span>     *   0       L          C<a name="line.444"></a>
<span class="sourceLineNo">445</span>     *  +--------+----------+<a name="line.445"></a>
<span class="sourceLineNo">446</span>     *  |XXXXXXXX|          |<a name="line.446"></a>
<span class="sourceLineNo">447</span>     *  +--------+----------+<a name="line.447"></a>
<span class="sourceLineNo">448</span>     *   ^       ^          ^<a name="line.448"></a>
<span class="sourceLineNo">449</span>     *   |       |          |<a name="line.449"></a>
<span class="sourceLineNo">450</span>     *  pos    limit     capacity<a name="line.450"></a>
<span class="sourceLineNo">451</span>     *  <a name="line.451"></a>
<span class="sourceLineNo">452</span>     * ( pos + V )  &amp;lt;= L, no change :<a name="line.452"></a>
<span class="sourceLineNo">453</span>     * <a name="line.453"></a>
<span class="sourceLineNo">454</span>     *   0       L          C<a name="line.454"></a>
<span class="sourceLineNo">455</span>     *  +--------+----------+<a name="line.455"></a>
<span class="sourceLineNo">456</span>     *  |XXXXXXXX|          |<a name="line.456"></a>
<span class="sourceLineNo">457</span>     *  +--------+----------+<a name="line.457"></a>
<span class="sourceLineNo">458</span>     *   ^       ^          ^<a name="line.458"></a>
<span class="sourceLineNo">459</span>     *   |       |          |<a name="line.459"></a>
<span class="sourceLineNo">460</span>     *  pos    limit   newCapacity<a name="line.460"></a>
<span class="sourceLineNo">461</span>     *  <a name="line.461"></a>
<span class="sourceLineNo">462</span>     * You can still put ( L - pos ) bytes in the buffer<a name="line.462"></a>
<span class="sourceLineNo">463</span>     *  <a name="line.463"></a>
<span class="sourceLineNo">464</span>     * ( pos + V ) &amp;gt; L &amp;amp; ( pos + V ) &amp;lt;= C :<a name="line.464"></a>
<span class="sourceLineNo">465</span>     * <a name="line.465"></a>
<span class="sourceLineNo">466</span>     *  0        L          C<a name="line.466"></a>
<span class="sourceLineNo">467</span>     *  +------------+------+<a name="line.467"></a>
<span class="sourceLineNo">468</span>     *  |XXXXXXXX:...|      |<a name="line.468"></a>
<span class="sourceLineNo">469</span>     *  +------------+------+<a name="line.469"></a>
<span class="sourceLineNo">470</span>     *   ^           ^      ^<a name="line.470"></a>
<span class="sourceLineNo">471</span>     *   |           |      |<a name="line.471"></a>
<span class="sourceLineNo">472</span>     *  pos       newlimit  newCapacity<a name="line.472"></a>
<span class="sourceLineNo">473</span>     *  <a name="line.473"></a>
<span class="sourceLineNo">474</span>     *  You can now put ( L - pos + V )  bytes in the buffer.<a name="line.474"></a>
<span class="sourceLineNo">475</span>     *  <a name="line.475"></a>
<span class="sourceLineNo">476</span>     *  <a name="line.476"></a>
<span class="sourceLineNo">477</span>     *  ( pos + V ) &amp;gt; C<a name="line.477"></a>
<span class="sourceLineNo">478</span>     * <a name="line.478"></a>
<span class="sourceLineNo">479</span>     *   0       L          C<a name="line.479"></a>
<span class="sourceLineNo">480</span>     *  +-------------------+----+<a name="line.480"></a>
<span class="sourceLineNo">481</span>     *  |XXXXXXXX:..........:....|<a name="line.481"></a>
<span class="sourceLineNo">482</span>     *  +------------------------+<a name="line.482"></a>
<span class="sourceLineNo">483</span>     *   ^                       ^<a name="line.483"></a>
<span class="sourceLineNo">484</span>     *   |                       |<a name="line.484"></a>
<span class="sourceLineNo">485</span>     *  pos                      +-- newlimit<a name="line.485"></a>
<span class="sourceLineNo">486</span>     *                           |<a name="line.486"></a>
<span class="sourceLineNo">487</span>     *                           +-- newCapacity<a name="line.487"></a>
<span class="sourceLineNo">488</span>     *                           <a name="line.488"></a>
<span class="sourceLineNo">489</span>     * You can now put ( L - pos + V ) bytes in the buffer, which limit is now<a name="line.489"></a>
<span class="sourceLineNo">490</span>     * equals to the capacity.<a name="line.490"></a>
<span class="sourceLineNo">491</span>     * &lt;/pre&gt;<a name="line.491"></a>
<span class="sourceLineNo">492</span>     *<a name="line.492"></a>
<span class="sourceLineNo">493</span>     * Note that the expecting remaining bytes starts at the current position. In all<a name="line.493"></a>
<span class="sourceLineNo">494</span>     * those examples, the position is 0.<a name="line.494"></a>
<span class="sourceLineNo">495</span>     *  <a name="line.495"></a>
<span class="sourceLineNo">496</span>     * @param expectedRemaining The expected remaining bytes in the buffer<a name="line.496"></a>
<span class="sourceLineNo">497</span>     * @return The modified IoBuffer instance<a name="line.497"></a>
<span class="sourceLineNo">498</span>     */<a name="line.498"></a>
<span class="sourceLineNo">499</span>    public abstract IoBuffer expand(int expectedRemaining);<a name="line.499"></a>
<span class="sourceLineNo">500</span><a name="line.500"></a>
<span class="sourceLineNo">501</span>    /**<a name="line.501"></a>
<span class="sourceLineNo">502</span>     * Changes the capacity and limit of this buffer so this buffer get the<a name="line.502"></a>
<span class="sourceLineNo">503</span>     * specified &lt;tt&gt;expectedRemaining&lt;/tt&gt; room from the specified<a name="line.503"></a>
<span class="sourceLineNo">504</span>     * &lt;tt&gt;position&lt;/tt&gt;. This method works even if you didn't set<a name="line.504"></a>
<span class="sourceLineNo">505</span>     * &lt;tt&gt;autoExpand&lt;/tt&gt; to &lt;tt&gt;true&lt;/tt&gt;.<a name="line.505"></a>
<span class="sourceLineNo">506</span>     * Assuming a buffer contains N bytes, its position is P and its current capacity is C, <a name="line.506"></a>
<span class="sourceLineNo">507</span>     * here are the resulting buffer if we call the expand method with a expectedRemaining<a name="line.507"></a>
<span class="sourceLineNo">508</span>     * value V :<a name="line.508"></a>
<span class="sourceLineNo">509</span>     * <a name="line.509"></a>
<span class="sourceLineNo">510</span>     * &lt;pre&gt;<a name="line.510"></a>
<span class="sourceLineNo">511</span>     *  Initial buffer :<a name="line.511"></a>
<span class="sourceLineNo">512</span>     *   <a name="line.512"></a>
<span class="sourceLineNo">513</span>     *      P    L          C<a name="line.513"></a>
<span class="sourceLineNo">514</span>     *  +--------+----------+<a name="line.514"></a>
<span class="sourceLineNo">515</span>     *  |XXXXXXXX|          |<a name="line.515"></a>
<span class="sourceLineNo">516</span>     *  +--------+----------+<a name="line.516"></a>
<span class="sourceLineNo">517</span>     *      ^    ^          ^<a name="line.517"></a>
<span class="sourceLineNo">518</span>     *      |    |          |<a name="line.518"></a>
<span class="sourceLineNo">519</span>     *     pos limit     capacity<a name="line.519"></a>
<span class="sourceLineNo">520</span>     *  <a name="line.520"></a>
<span class="sourceLineNo">521</span>     * ( pos + V )  &amp;lt;= L, no change :<a name="line.521"></a>
<span class="sourceLineNo">522</span>     * <a name="line.522"></a>
<span class="sourceLineNo">523</span>     *      P    L          C<a name="line.523"></a>
<span class="sourceLineNo">524</span>     *  +--------+----------+<a name="line.524"></a>
<span class="sourceLineNo">525</span>     *  |XXXXXXXX|          |<a name="line.525"></a>
<span class="sourceLineNo">526</span>     *  +--------+----------+<a name="line.526"></a>
<span class="sourceLineNo">527</span>     *      ^    ^          ^<a name="line.527"></a>
<span class="sourceLineNo">528</span>     *      |    |          |<a name="line.528"></a>
<span class="sourceLineNo">529</span>     *     pos limit   newCapacity<a name="line.529"></a>
<span class="sourceLineNo">530</span>     *  <a name="line.530"></a>
<span class="sourceLineNo">531</span>     * You can still put ( L - pos ) bytes in the buffer<a name="line.531"></a>
<span class="sourceLineNo">532</span>     *  <a name="line.532"></a>
<span class="sourceLineNo">533</span>     * ( pos + V ) &amp;gt; L &amp;amp; ( pos + V ) &amp;lt;= C :<a name="line.533"></a>
<span class="sourceLineNo">534</span>     * <a name="line.534"></a>
<span class="sourceLineNo">535</span>     *      P    L          C<a name="line.535"></a>
<span class="sourceLineNo">536</span>     *  +------------+------+<a name="line.536"></a>
<span class="sourceLineNo">537</span>     *  |XXXXXXXX:...|      |<a name="line.537"></a>
<span class="sourceLineNo">538</span>     *  +------------+------+<a name="line.538"></a>
<span class="sourceLineNo">539</span>     *      ^        ^      ^<a name="line.539"></a>
<span class="sourceLineNo">540</span>     *      |        |      |<a name="line.540"></a>
<span class="sourceLineNo">541</span>     *     pos    newlimit  newCapacity<a name="line.541"></a>
<span class="sourceLineNo">542</span>     *  <a name="line.542"></a>
<span class="sourceLineNo">543</span>     *  You can now put ( L - pos + V)  bytes in the buffer.<a name="line.543"></a>
<span class="sourceLineNo">544</span>     *  <a name="line.544"></a>
<span class="sourceLineNo">545</span>     *  <a name="line.545"></a>
<span class="sourceLineNo">546</span>     *  ( pos + V ) &amp;gt; C<a name="line.546"></a>
<span class="sourceLineNo">547</span>     * <a name="line.547"></a>
<span class="sourceLineNo">548</span>     *      P       L          C<a name="line.548"></a>
<span class="sourceLineNo">549</span>     *  +-------------------+----+<a name="line.549"></a>
<span class="sourceLineNo">550</span>     *  |XXXXXXXX:..........:....|<a name="line.550"></a>
<span class="sourceLineNo">551</span>     *  +------------------------+<a name="line.551"></a>
<span class="sourceLineNo">552</span>     *      ^                    ^<a name="line.552"></a>
<span class="sourceLineNo">553</span>     *      |                    |<a name="line.553"></a>
<span class="sourceLineNo">554</span>     *     pos                   +-- newlimit<a name="line.554"></a>
<span class="sourceLineNo">555</span>     *                           |<a name="line.555"></a>
<span class="sourceLineNo">556</span>     *                           +-- newCapacity<a name="line.556"></a>
<span class="sourceLineNo">557</span>     *                           <a name="line.557"></a>
<span class="sourceLineNo">558</span>     * You can now put ( L - pos + V ) bytes in the buffer, which limit is now<a name="line.558"></a>
<span class="sourceLineNo">559</span>     * equals to the capacity.<a name="line.559"></a>
<span class="sourceLineNo">560</span>     * &lt;/pre&gt;<a name="line.560"></a>
<span class="sourceLineNo">561</span>     *<a name="line.561"></a>
<span class="sourceLineNo">562</span>     * Note that the expecting remaining bytes starts at the current position. In all<a name="line.562"></a>
<span class="sourceLineNo">563</span>     * those examples, the position is P.<a name="line.563"></a>
<span class="sourceLineNo">564</span>     * <a name="line.564"></a>
<span class="sourceLineNo">565</span>     * @param position The starting position from which we want to define a remaining <a name="line.565"></a>
<span class="sourceLineNo">566</span>     * number of bytes<a name="line.566"></a>
<span class="sourceLineNo">567</span>     * @param expectedRemaining The expected remaining bytes in the buffer<a name="line.567"></a>
<span class="sourceLineNo">568</span>     * @return The modified IoBuffer instance<a name="line.568"></a>
<span class="sourceLineNo">569</span>     */<a name="line.569"></a>
<span class="sourceLineNo">570</span>    public abstract IoBuffer expand(int position, int expectedRemaining);<a name="line.570"></a>
<span class="sourceLineNo">571</span><a name="line.571"></a>
<span class="sourceLineNo">572</span>    /**<a name="line.572"></a>
<span class="sourceLineNo">573</span>     * Changes the capacity of this buffer so this buffer occupies as less<a name="line.573"></a>
<span class="sourceLineNo">574</span>     * memory as possible while retaining the position, limit and the buffer<a name="line.574"></a>
<span class="sourceLineNo">575</span>     * content between the position and limit. <a name="line.575"></a>
<span class="sourceLineNo">576</span>     * &lt;br&gt;<a name="line.576"></a>
<span class="sourceLineNo">577</span>     * &lt;b&gt;The capacity of the buffer never becomes less than {@link #minimumCapacity()}&lt;/b&gt;<a name="line.577"></a>
<span class="sourceLineNo">578</span>     * &lt;br&gt;. <a name="line.578"></a>
<span class="sourceLineNo">579</span>     * The mark is discarded once the capacity changes.<a name="line.579"></a>
<span class="sourceLineNo">580</span>     * &lt;br&gt;<a name="line.580"></a>
<span class="sourceLineNo">581</span>     * Typically, a call to this method tries to remove as much unused bytes<a name="line.581"></a>
<span class="sourceLineNo">582</span>     * as possible, dividing by two the initial capacity until it can't without<a name="line.582"></a>
<span class="sourceLineNo">583</span>     * obtaining a new capacity lower than the {@link #minimumCapacity()}. For instance, if <a name="line.583"></a>
<span class="sourceLineNo">584</span>     * the limit is 7 and the capacity is 36, with a minimum capacity of 8, <a name="line.584"></a>
<span class="sourceLineNo">585</span>     * shrinking the buffer will left a capacity of 9 (we go down from 36 to 18, then from 18 to 9).  <a name="line.585"></a>
<span class="sourceLineNo">586</span>     * <a name="line.586"></a>
<span class="sourceLineNo">587</span>     * &lt;pre&gt;<a name="line.587"></a>
<span class="sourceLineNo">588</span>     *  Initial buffer :<a name="line.588"></a>
<span class="sourceLineNo">589</span>     *   <a name="line.589"></a>
<span class="sourceLineNo">590</span>     *  +--------+----------+<a name="line.590"></a>
<span class="sourceLineNo">591</span>     *  |XXXXXXXX|          |<a name="line.591"></a>
<span class="sourceLineNo">592</span>     *  +--------+----------+<a name="line.592"></a>
<span class="sourceLineNo">593</span>     *      ^    ^  ^       ^<a name="line.593"></a>
<span class="sourceLineNo">594</span>     *      |    |  |       |<a name="line.594"></a>
<span class="sourceLineNo">595</span>     *     pos   |  |    capacity<a name="line.595"></a>
<span class="sourceLineNo">596</span>     *           |  |<a name="line.596"></a>
<span class="sourceLineNo">597</span>     *           |  +-- minimumCapacity<a name="line.597"></a>
<span class="sourceLineNo">598</span>     *           |<a name="line.598"></a>
<span class="sourceLineNo">599</span>     *           +-- limit<a name="line.599"></a>
<span class="sourceLineNo">600</span>     * <a name="line.600"></a>
<span class="sourceLineNo">601</span>     * Resulting buffer :<a name="line.601"></a>
<span class="sourceLineNo">602</span>     * <a name="line.602"></a>
<span class="sourceLineNo">603</span>     *  +--------+--+-+<a name="line.603"></a>
<span class="sourceLineNo">604</span>     *  |XXXXXXXX|  | |<a name="line.604"></a>
<span class="sourceLineNo">605</span>     *  +--------+--+-+<a name="line.605"></a>
<span class="sourceLineNo">606</span>     *      ^    ^  ^ ^<a name="line.606"></a>
<span class="sourceLineNo">607</span>     *      |    |  | |<a name="line.607"></a>
<span class="sourceLineNo">608</span>     *      |    |  | +-- new capacity<a name="line.608"></a>
<span class="sourceLineNo">609</span>     *      |    |  |<a name="line.609"></a>
<span class="sourceLineNo">610</span>     *     pos   |  +-- minimum capacity<a name="line.610"></a>
<span class="sourceLineNo">611</span>     *           |<a name="line.611"></a>
<span class="sourceLineNo">612</span>     *           +-- limit<a name="line.612"></a>
<span class="sourceLineNo">613</span>     * &lt;/pre&gt;<a name="line.613"></a>
<span class="sourceLineNo">614</span>     *           <a name="line.614"></a>
<span class="sourceLineNo">615</span>     * @return The modified IoBuffer instance<a name="line.615"></a>
<span class="sourceLineNo">616</span>     */<a name="line.616"></a>
<span class="sourceLineNo">617</span>    public abstract IoBuffer shrink();<a name="line.617"></a>
<span class="sourceLineNo">618</span><a name="line.618"></a>
<span class="sourceLineNo">619</span>    /**<a name="line.619"></a>
<span class="sourceLineNo">620</span>     * @see java.nio.Buffer#position()<a name="line.620"></a>
<span class="sourceLineNo">621</span>     * @return The current position in the buffer<a name="line.621"></a>
<span class="sourceLineNo">622</span>     */<a name="line.622"></a>
<span class="sourceLineNo">623</span>    public abstract int position();<a name="line.623"></a>
<span class="sourceLineNo">624</span><a name="line.624"></a>
<span class="sourceLineNo">625</span>    /**<a name="line.625"></a>
<span class="sourceLineNo">626</span>     * @see java.nio.Buffer#position(int)<a name="line.626"></a>
<span class="sourceLineNo">627</span>     * <a name="line.627"></a>
<span class="sourceLineNo">628</span>     * @param newPosition Sets the new position in the buffer<a name="line.628"></a>
<span class="sourceLineNo">629</span>     * @return the modified IoBuffer<a name="line.629"></a>
<span class="sourceLineNo">630</span><a name="line.630"></a>
<span class="sourceLineNo">631</span>     */<a name="line.631"></a>
<span class="sourceLineNo">632</span>    public abstract IoBuffer position(int newPosition);<a name="line.632"></a>
<span class="sourceLineNo">633</span><a name="line.633"></a>
<span class="sourceLineNo">634</span>    /**<a name="line.634"></a>
<span class="sourceLineNo">635</span>     * @see java.nio.Buffer#limit()<a name="line.635"></a>
<span class="sourceLineNo">636</span>     * <a name="line.636"></a>
<span class="sourceLineNo">637</span>     * @return the modified IoBuffer<a name="line.637"></a>
<span class="sourceLineNo">638</span>'s limit<a name="line.638"></a>
<span class="sourceLineNo">639</span>     */<a name="line.639"></a>
<span class="sourceLineNo">640</span>    public abstract int limit();<a name="line.640"></a>
<span class="sourceLineNo">641</span><a name="line.641"></a>
<span class="sourceLineNo">642</span>    /**<a name="line.642"></a>
<span class="sourceLineNo">643</span>     * @see java.nio.Buffer#limit(int)<a name="line.643"></a>
<span class="sourceLineNo">644</span>     * <a name="line.644"></a>
<span class="sourceLineNo">645</span>     * @param newLimit The new buffer's limit<a name="line.645"></a>
<span class="sourceLineNo">646</span>     * @return the modified IoBuffer<a name="line.646"></a>
<span class="sourceLineNo">647</span><a name="line.647"></a>
<span class="sourceLineNo">648</span>     */<a name="line.648"></a>
<span class="sourceLineNo">649</span>    public abstract IoBuffer limit(int newLimit);<a name="line.649"></a>
<span class="sourceLineNo">650</span><a name="line.650"></a>
<span class="sourceLineNo">651</span>    /**<a name="line.651"></a>
<span class="sourceLineNo">652</span>     * @see java.nio.Buffer#mark()<a name="line.652"></a>
<span class="sourceLineNo">653</span>     * <a name="line.653"></a>
<span class="sourceLineNo">654</span>     * @return the modified IoBuffer<a name="line.654"></a>
<span class="sourceLineNo">655</span><a name="line.655"></a>
<span class="sourceLineNo">656</span>     */<a name="line.656"></a>
<span class="sourceLineNo">657</span>    public abstract IoBuffer mark();<a name="line.657"></a>
<span class="sourceLineNo">658</span><a name="line.658"></a>
<span class="sourceLineNo">659</span>    /**<a name="line.659"></a>
<span class="sourceLineNo">660</span>     * @return the position of the current mark. This method returns &lt;tt&gt;-1&lt;/tt&gt;<a name="line.660"></a>
<span class="sourceLineNo">661</span>     * if no mark is set.<a name="line.661"></a>
<span class="sourceLineNo">662</span>     */<a name="line.662"></a>
<span class="sourceLineNo">663</span>    public abstract int markValue();<a name="line.663"></a>
<span class="sourceLineNo">664</span><a name="line.664"></a>
<span class="sourceLineNo">665</span>    /**<a name="line.665"></a>
<span class="sourceLineNo">666</span>     * @see java.nio.Buffer#reset()<a name="line.666"></a>
<span class="sourceLineNo">667</span>     * <a name="line.667"></a>
<span class="sourceLineNo">668</span>     * @return the modified IoBuffer<a name="line.668"></a>
<span class="sourceLineNo">669</span><a name="line.669"></a>
<span class="sourceLineNo">670</span>     */<a name="line.670"></a>
<span class="sourceLineNo">671</span>    public abstract IoBuffer reset();<a name="line.671"></a>
<span class="sourceLineNo">672</span><a name="line.672"></a>
<span class="sourceLineNo">673</span>    /**<a name="line.673"></a>
<span class="sourceLineNo">674</span>     * @see java.nio.Buffer#clear()<a name="line.674"></a>
<span class="sourceLineNo">675</span>     * <a name="line.675"></a>
<span class="sourceLineNo">676</span>     * @return the modified IoBuffer<a name="line.676"></a>
<span class="sourceLineNo">677</span><a name="line.677"></a>
<span class="sourceLineNo">678</span>     */<a name="line.678"></a>
<span class="sourceLineNo">679</span>    public abstract IoBuffer clear();<a name="line.679"></a>
<span class="sourceLineNo">680</span><a name="line.680"></a>
<span class="sourceLineNo">681</span>    /**<a name="line.681"></a>
<span class="sourceLineNo">682</span>     * Clears this buffer and fills its content with &lt;tt&gt;NUL&lt;/tt&gt;. The position<a name="line.682"></a>
<span class="sourceLineNo">683</span>     * is set to zero, the limit is set to the capacity, and the mark is<a name="line.683"></a>
<span class="sourceLineNo">684</span>     * discarded.<a name="line.684"></a>
<span class="sourceLineNo">685</span>     * <a name="line.685"></a>
<span class="sourceLineNo">686</span>     * @return the modified IoBuffer<a name="line.686"></a>
<span class="sourceLineNo">687</span><a name="line.687"></a>
<span class="sourceLineNo">688</span>     */<a name="line.688"></a>
<span class="sourceLineNo">689</span>    public abstract IoBuffer sweep();<a name="line.689"></a>
<span class="sourceLineNo">690</span><a name="line.690"></a>
<span class="sourceLineNo">691</span>    /**<a name="line.691"></a>
<span class="sourceLineNo">692</span>     * double Clears this buffer and fills its content with &lt;tt&gt;value&lt;/tt&gt;. The<a name="line.692"></a>
<span class="sourceLineNo">693</span>     * position is set to zero, the limit is set to the capacity, and the mark<a name="line.693"></a>
<span class="sourceLineNo">694</span>     * is discarded.<a name="line.694"></a>
<span class="sourceLineNo">695</span>     *<a name="line.695"></a>
<span class="sourceLineNo">696</span>     * @param value The value to put in the buffer<a name="line.696"></a>
<span class="sourceLineNo">697</span>     * @return the modified IoBuffer<a name="line.697"></a>
<span class="sourceLineNo">698</span><a name="line.698"></a>
<span class="sourceLineNo">699</span>     */<a name="line.699"></a>
<span class="sourceLineNo">700</span>    public abstract IoBuffer sweep(byte value);<a name="line.700"></a>
<span class="sourceLineNo">701</span><a name="line.701"></a>
<span class="sourceLineNo">702</span>    /**<a name="line.702"></a>
<span class="sourceLineNo">703</span>     * @see java.nio.Buffer#flip()<a name="line.703"></a>
<span class="sourceLineNo">704</span>     * <a name="line.704"></a>
<span class="sourceLineNo">705</span>     * @return the modified IoBuffer<a name="line.705"></a>
<span class="sourceLineNo">706</span><a name="line.706"></a>
<span class="sourceLineNo">707</span>     */<a name="line.707"></a>
<span class="sourceLineNo">708</span>    public abstract IoBuffer flip();<a name="line.708"></a>
<span class="sourceLineNo">709</span><a name="line.709"></a>
<span class="sourceLineNo">710</span>    /**<a name="line.710"></a>
<span class="sourceLineNo">711</span>     * @see java.nio.Buffer#rewind()<a name="line.711"></a>
<span class="sourceLineNo">712</span>     * <a name="line.712"></a>
<span class="sourceLineNo">713</span>     * @return the modified IoBuffer<a name="line.713"></a>
<span class="sourceLineNo">714</span><a name="line.714"></a>
<span class="sourceLineNo">715</span>     */<a name="line.715"></a>
<span class="sourceLineNo">716</span>    public abstract IoBuffer rewind();<a name="line.716"></a>
<span class="sourceLineNo">717</span><a name="line.717"></a>
<span class="sourceLineNo">718</span>    /**<a name="line.718"></a>
<span class="sourceLineNo">719</span>     * @see java.nio.Buffer#remaining()<a name="line.719"></a>
<span class="sourceLineNo">720</span>     * <a name="line.720"></a>
<span class="sourceLineNo">721</span>     * @return The remaining bytes in the buffer<a name="line.721"></a>
<span class="sourceLineNo">722</span>     */<a name="line.722"></a>
<span class="sourceLineNo">723</span>    public abstract int remaining();<a name="line.723"></a>
<span class="sourceLineNo">724</span><a name="line.724"></a>
<span class="sourceLineNo">725</span>    /**<a name="line.725"></a>
<span class="sourceLineNo">726</span>     * @see java.nio.Buffer#hasRemaining()<a name="line.726"></a>
<span class="sourceLineNo">727</span>     * <a name="line.727"></a>
<span class="sourceLineNo">728</span>     * @return &lt;tt&gt;true&lt;/tt&gt; if there are some remaining bytes in the buffer<a name="line.728"></a>
<span class="sourceLineNo">729</span>     */<a name="line.729"></a>
<span class="sourceLineNo">730</span>    public abstract boolean hasRemaining();<a name="line.730"></a>
<span class="sourceLineNo">731</span><a name="line.731"></a>
<span class="sourceLineNo">732</span>    /**<a name="line.732"></a>
<span class="sourceLineNo">733</span>     * @see ByteBuffer#duplicate()<a name="line.733"></a>
<span class="sourceLineNo">734</span>     * <a name="line.734"></a>
<span class="sourceLineNo">735</span>     * @return the modified IoBuffer<a name="line.735"></a>
<span class="sourceLineNo">736</span><a name="line.736"></a>
<span class="sourceLineNo">737</span>     */<a name="line.737"></a>
<span class="sourceLineNo">738</span>    public abstract IoBuffer duplicate();<a name="line.738"></a>
<span class="sourceLineNo">739</span><a name="line.739"></a>
<span class="sourceLineNo">740</span>    /**<a name="line.740"></a>
<span class="sourceLineNo">741</span>     * @see ByteBuffer#slice()<a name="line.741"></a>
<span class="sourceLineNo">742</span>     * <a name="line.742"></a>
<span class="sourceLineNo">743</span>     * @return the modified IoBuffer<a name="line.743"></a>
<span class="sourceLineNo">744</span><a name="line.744"></a>
<span class="sourceLineNo">745</span>     */<a name="line.745"></a>
<span class="sourceLineNo">746</span>    public abstract IoBuffer slice();<a name="line.746"></a>
<span class="sourceLineNo">747</span><a name="line.747"></a>
<span class="sourceLineNo">748</span>    /**<a name="line.748"></a>
<span class="sourceLineNo">749</span>     * @see ByteBuffer#asReadOnlyBuffer()<a name="line.749"></a>
<span class="sourceLineNo">750</span>     * <a name="line.750"></a>
<span class="sourceLineNo">751</span>     * @return the modified IoBuffer<a name="line.751"></a>
<span class="sourceLineNo">752</span><a name="line.752"></a>
<span class="sourceLineNo">753</span>     */<a name="line.753"></a>
<span class="sourceLineNo">754</span>    public abstract IoBuffer asReadOnlyBuffer();<a name="line.754"></a>
<span class="sourceLineNo">755</span><a name="line.755"></a>
<span class="sourceLineNo">756</span>    /**<a name="line.756"></a>
<span class="sourceLineNo">757</span>     * @see ByteBuffer#hasArray()<a name="line.757"></a>
<span class="sourceLineNo">758</span>     * <a name="line.758"></a>
<span class="sourceLineNo">759</span>     * @return &lt;tt&gt;true&lt;/tt&gt; if the {@link #array()} method will return a byte[]<a name="line.759"></a>
<span class="sourceLineNo">760</span>     */<a name="line.760"></a>
<span class="sourceLineNo">761</span>    public abstract boolean hasArray();<a name="line.761"></a>
<span class="sourceLineNo">762</span><a name="line.762"></a>
<span class="sourceLineNo">763</span>    /**<a name="line.763"></a>
<span class="sourceLineNo">764</span>     * @see ByteBuffer#array()<a name="line.764"></a>
<span class="sourceLineNo">765</span>     * <a name="line.765"></a>
<span class="sourceLineNo">766</span>     * @return A byte[] if this IoBuffer supports it<a name="line.766"></a>
<span class="sourceLineNo">767</span>     */<a name="line.767"></a>
<span class="sourceLineNo">768</span>    public abstract byte[] array();<a name="line.768"></a>
<span class="sourceLineNo">769</span><a name="line.769"></a>
<span class="sourceLineNo">770</span>    /**<a name="line.770"></a>
<span class="sourceLineNo">771</span>     * @see ByteBuffer#arrayOffset()<a name="line.771"></a>
<span class="sourceLineNo">772</span>     * <a name="line.772"></a>
<span class="sourceLineNo">773</span>     * @return The offset in the returned byte[] when the {@link #array()} method is called<a name="line.773"></a>
<span class="sourceLineNo">774</span>     */<a name="line.774"></a>
<span class="sourceLineNo">775</span>    public abstract int arrayOffset();<a name="line.775"></a>
<span class="sourceLineNo">776</span><a name="line.776"></a>
<span class="sourceLineNo">777</span>    /**<a name="line.777"></a>
<span class="sourceLineNo">778</span>     * @see ByteBuffer#get()<a name="line.778"></a>
<span class="sourceLineNo">779</span>     * <a name="line.779"></a>
<span class="sourceLineNo">780</span>     * @return The byte at the current position<a name="line.780"></a>
<span class="sourceLineNo">781</span>     */<a name="line.781"></a>
<span class="sourceLineNo">782</span>    public abstract byte get();<a name="line.782"></a>
<span class="sourceLineNo">783</span><a name="line.783"></a>
<span class="sourceLineNo">784</span>    /**<a name="line.784"></a>
<span class="sourceLineNo">785</span>     * Reads one unsigned byte as a short integer.<a name="line.785"></a>
<span class="sourceLineNo">786</span>     * <a name="line.786"></a>
<span class="sourceLineNo">787</span>     * @return the unsigned short at the current position<a name="line.787"></a>
<span class="sourceLineNo">788</span>     */<a name="line.788"></a>
<span class="sourceLineNo">789</span>    public abstract short getUnsigned();<a name="line.789"></a>
<span class="sourceLineNo">790</span><a name="line.790"></a>
<span class="sourceLineNo">791</span>    /**<a name="line.791"></a>
<span class="sourceLineNo">792</span>     * @see ByteBuffer#put(byte)<a name="line.792"></a>
<span class="sourceLineNo">793</span>     * <a name="line.793"></a>
<span class="sourceLineNo">794</span>     * @param b The byte to put in the buffer<a name="line.794"></a>
<span class="sourceLineNo">795</span>     * @return the modified IoBuffer<a name="line.795"></a>
<span class="sourceLineNo">796</span><a name="line.796"></a>
<span class="sourceLineNo">797</span>     */<a name="line.797"></a>
<span class="sourceLineNo">798</span>    public abstract IoBuffer put(byte b);<a name="line.798"></a>
<span class="sourceLineNo">799</span><a name="line.799"></a>
<span class="sourceLineNo">800</span>    /**<a name="line.800"></a>
<span class="sourceLineNo">801</span>     * @see ByteBuffer#get(int)<a name="line.801"></a>
<span class="sourceLineNo">802</span>     * <a name="line.802"></a>
<span class="sourceLineNo">803</span>     * @param index The position for which we want to read a byte<a name="line.803"></a>
<span class="sourceLineNo">804</span>     * @return the byte at the given position<a name="line.804"></a>
<span class="sourceLineNo">805</span>     */<a name="line.805"></a>
<span class="sourceLineNo">806</span>    public abstract byte get(int index);<a name="line.806"></a>
<span class="sourceLineNo">807</span><a name="line.807"></a>
<span class="sourceLineNo">808</span>    /**<a name="line.808"></a>
<span class="sourceLineNo">809</span>     * Reads one byte as an unsigned short integer.<a name="line.809"></a>
<span class="sourceLineNo">810</span>     * <a name="line.810"></a>
<span class="sourceLineNo">811</span>     * @param index The position for which we want to read an unsigned byte<a name="line.811"></a>
<span class="sourceLineNo">812</span>     * @return the unsigned byte at the given position<a name="line.812"></a>
<span class="sourceLineNo">813</span>     */<a name="line.813"></a>
<span class="sourceLineNo">814</span>    public abstract short getUnsigned(int index);<a name="line.814"></a>
<span class="sourceLineNo">815</span><a name="line.815"></a>
<span class="sourceLineNo">816</span>    /**<a name="line.816"></a>
<span class="sourceLineNo">817</span>     * @see ByteBuffer#put(int, byte)<a name="line.817"></a>
<span class="sourceLineNo">818</span>     * <a name="line.818"></a>
<span class="sourceLineNo">819</span>     * @param index The position where the byte will be put<a name="line.819"></a>
<span class="sourceLineNo">820</span>     * @param b The byte to put<a name="line.820"></a>
<span class="sourceLineNo">821</span>     * @return the modified IoBuffer<a name="line.821"></a>
<span class="sourceLineNo">822</span><a name="line.822"></a>
<span class="sourceLineNo">823</span>     */<a name="line.823"></a>
<span class="sourceLineNo">824</span>    public abstract IoBuffer put(int index, byte b);<a name="line.824"></a>
<span class="sourceLineNo">825</span><a name="line.825"></a>
<span class="sourceLineNo">826</span>    /**<a name="line.826"></a>
<span class="sourceLineNo">827</span>     * @see ByteBuffer#get(byte[], int, int)<a name="line.827"></a>
<span class="sourceLineNo">828</span>     * <a name="line.828"></a>
<span class="sourceLineNo">829</span>     * @param dst The destination buffer<a name="line.829"></a>
<span class="sourceLineNo">830</span>     * @param offset The position in the original buffer<a name="line.830"></a>
<span class="sourceLineNo">831</span>     * @param length The number of bytes to copy<a name="line.831"></a>
<span class="sourceLineNo">832</span>     * @return the modified IoBuffer<a name="line.832"></a>
<span class="sourceLineNo">833</span>     */<a name="line.833"></a>
<span class="sourceLineNo">834</span>    public abstract IoBuffer get(byte[] dst, int offset, int length);<a name="line.834"></a>
<span class="sourceLineNo">835</span><a name="line.835"></a>
<span class="sourceLineNo">836</span>    /**<a name="line.836"></a>
<span class="sourceLineNo">837</span>     * @see ByteBuffer#get(byte[])<a name="line.837"></a>
<span class="sourceLineNo">838</span>     *<a name="line.838"></a>
<span class="sourceLineNo">839</span>     * @param dst The byte[] that will contain the read bytes<a name="line.839"></a>
<span class="sourceLineNo">840</span>     * @return the IoBuffer<a name="line.840"></a>
<span class="sourceLineNo">841</span>     */<a name="line.841"></a>
<span class="sourceLineNo">842</span>    public abstract IoBuffer get(byte[] dst);<a name="line.842"></a>
<span class="sourceLineNo">843</span><a name="line.843"></a>
<span class="sourceLineNo">844</span>    /**<a name="line.844"></a>
<span class="sourceLineNo">845</span>     * Get a new IoBuffer containing a slice of the current buffer<a name="line.845"></a>
<span class="sourceLineNo">846</span>     * <a name="line.846"></a>
<span class="sourceLineNo">847</span>     * @param index The position in the buffer <a name="line.847"></a>
<span class="sourceLineNo">848</span>     * @param length The number of bytes to copy<a name="line.848"></a>
<span class="sourceLineNo">849</span>     * @return the new IoBuffer<a name="line.849"></a>
<span class="sourceLineNo">850</span>     */<a name="line.850"></a>
<span class="sourceLineNo">851</span>    public abstract IoBuffer getSlice(int index, int length);<a name="line.851"></a>
<span class="sourceLineNo">852</span><a name="line.852"></a>
<span class="sourceLineNo">853</span>    /**<a name="line.853"></a>
<span class="sourceLineNo">854</span>     * Get a new IoBuffer containing a slice of the current buffer<a name="line.854"></a>
<span class="sourceLineNo">855</span>     * <a name="line.855"></a>
<span class="sourceLineNo">856</span>     * @param length The number of bytes to copy<a name="line.856"></a>
<span class="sourceLineNo">857</span>     * @return the new IoBuffer<a name="line.857"></a>
<span class="sourceLineNo">858</span>     */<a name="line.858"></a>
<span class="sourceLineNo">859</span>    public abstract IoBuffer getSlice(int length);<a name="line.859"></a>
<span class="sourceLineNo">860</span><a name="line.860"></a>
<span class="sourceLineNo">861</span>    /**<a name="line.861"></a>
<span class="sourceLineNo">862</span>     * Writes the content of the specified &lt;tt&gt;src&lt;/tt&gt; into this buffer.<a name="line.862"></a>
<span class="sourceLineNo">863</span>     * <a name="line.863"></a>
<span class="sourceLineNo">864</span>     * @param src The source ByteBuffer<a name="line.864"></a>
<span class="sourceLineNo">865</span>     * @return the modified IoBuffer<a name="line.865"></a>
<span class="sourceLineNo">866</span>     */<a name="line.866"></a>
<span class="sourceLineNo">867</span>    public abstract IoBuffer put(ByteBuffer src);<a name="line.867"></a>
<span class="sourceLineNo">868</span><a name="line.868"></a>
<span class="sourceLineNo">869</span>    /**<a name="line.869"></a>
<span class="sourceLineNo">870</span>     * Writes the content of the specified &lt;tt&gt;src&lt;/tt&gt; into this buffer.<a name="line.870"></a>
<span class="sourceLineNo">871</span>     * <a name="line.871"></a>
<span class="sourceLineNo">872</span>     * @param src The source IoBuffer<a name="line.872"></a>
<span class="sourceLineNo">873</span>     * @return the modified IoBuffer<a name="line.873"></a>
<span class="sourceLineNo">874</span>     */<a name="line.874"></a>
<span class="sourceLineNo">875</span>    public abstract IoBuffer put(IoBuffer src);<a name="line.875"></a>
<span class="sourceLineNo">876</span><a name="line.876"></a>
<span class="sourceLineNo">877</span>    /**<a name="line.877"></a>
<span class="sourceLineNo">878</span>     * @see ByteBuffer#put(byte[], int, int)<a name="line.878"></a>
<span class="sourceLineNo">879</span>     * <a name="line.879"></a>
<span class="sourceLineNo">880</span>     * @param src The byte[] to put<a name="line.880"></a>
<span class="sourceLineNo">881</span>     * @param offset The position in the source<a name="line.881"></a>
<span class="sourceLineNo">882</span>     * @param length The number of bytes to copy<a name="line.882"></a>
<span class="sourceLineNo">883</span>     * @return the modified IoBuffer<a name="line.883"></a>
<span class="sourceLineNo">884</span>     */<a name="line.884"></a>
<span class="sourceLineNo">885</span>    public abstract IoBuffer put(byte[] src, int offset, int length);<a name="line.885"></a>
<span class="sourceLineNo">886</span><a name="line.886"></a>
<span class="sourceLineNo">887</span>    /**<a name="line.887"></a>
<span class="sourceLineNo">888</span>     * @see ByteBuffer#put(byte[])<a name="line.888"></a>
<span class="sourceLineNo">889</span>     * <a name="line.889"></a>
<span class="sourceLineNo">890</span>     * @param src The byte[] to put<a name="line.890"></a>
<span class="sourceLineNo">891</span>     * @return the modified IoBuffer<a name="line.891"></a>
<span class="sourceLineNo">892</span>     */<a name="line.892"></a>
<span class="sourceLineNo">893</span>    public abstract IoBuffer put(byte[] src);<a name="line.893"></a>
<span class="sourceLineNo">894</span><a name="line.894"></a>
<span class="sourceLineNo">895</span>    /**<a name="line.895"></a>
<span class="sourceLineNo">896</span>     * @see ByteBuffer#compact()<a name="line.896"></a>
<span class="sourceLineNo">897</span>     * <a name="line.897"></a>
<span class="sourceLineNo">898</span>     * @return the modified IoBuffer<a name="line.898"></a>
<span class="sourceLineNo">899</span>     */<a name="line.899"></a>
<span class="sourceLineNo">900</span>    public abstract IoBuffer compact();<a name="line.900"></a>
<span class="sourceLineNo">901</span><a name="line.901"></a>
<span class="sourceLineNo">902</span>    /**<a name="line.902"></a>
<span class="sourceLineNo">903</span>     * @see ByteBuffer#order()<a name="line.903"></a>
<span class="sourceLineNo">904</span>     * <a name="line.904"></a>
<span class="sourceLineNo">905</span>     * @return the IoBuffer ByteOrder<a name="line.905"></a>
<span class="sourceLineNo">906</span>     */<a name="line.906"></a>
<span class="sourceLineNo">907</span>    public abstract ByteOrder order();<a name="line.907"></a>
<span class="sourceLineNo">908</span><a name="line.908"></a>
<span class="sourceLineNo">909</span>    /**<a name="line.909"></a>
<span class="sourceLineNo">910</span>     * @see ByteBuffer#order(ByteOrder)<a name="line.910"></a>
<span class="sourceLineNo">911</span>     * <a name="line.911"></a>
<span class="sourceLineNo">912</span>     * @param bo The new ByteBuffer to use for this IoBuffer<a name="line.912"></a>
<span class="sourceLineNo">913</span>     * @return the modified IoBuffer<a name="line.913"></a>
<span class="sourceLineNo">914</span>     */<a name="line.914"></a>
<span class="sourceLineNo">915</span>    public abstract IoBuffer order(ByteOrder bo);<a name="line.915"></a>
<span class="sourceLineNo">916</span><a name="line.916"></a>
<span class="sourceLineNo">917</span>    /**<a name="line.917"></a>
<span class="sourceLineNo">918</span>     * @see ByteBuffer#getChar()<a name="line.918"></a>
<span class="sourceLineNo">919</span>     * <a name="line.919"></a>
<span class="sourceLineNo">920</span>     * @return The char at the current position<a name="line.920"></a>
<span class="sourceLineNo">921</span>     */<a name="line.921"></a>
<span class="sourceLineNo">922</span>    public abstract char getChar();<a name="line.922"></a>
<span class="sourceLineNo">923</span><a name="line.923"></a>
<span class="sourceLineNo">924</span>    /**<a name="line.924"></a>
<span class="sourceLineNo">925</span>     * @see ByteBuffer#putChar(char)<a name="line.925"></a>
<span class="sourceLineNo">926</span>     * <a name="line.926"></a>
<span class="sourceLineNo">927</span>     * @param value The char to put at the current position<a name="line.927"></a>
<span class="sourceLineNo">928</span>     * @return the modified IoBuffer<a name="line.928"></a>
<span class="sourceLineNo">929</span>     */<a name="line.929"></a>
<span class="sourceLineNo">930</span>    public abstract IoBuffer putChar(char value);<a name="line.930"></a>
<span class="sourceLineNo">931</span><a name="line.931"></a>
<span class="sourceLineNo">932</span>    /**<a name="line.932"></a>
<span class="sourceLineNo">933</span>     * @see ByteBuffer#getChar(int)<a name="line.933"></a>
<span class="sourceLineNo">934</span>     * <a name="line.934"></a>
<span class="sourceLineNo">935</span>     * @param index The index in the IoBuffer where we will read a char from<a name="line.935"></a>
<span class="sourceLineNo">936</span>     * @return the char at 'index' position<a name="line.936"></a>
<span class="sourceLineNo">937</span>     */<a name="line.937"></a>
<span class="sourceLineNo">938</span>    public abstract char getChar(int index);<a name="line.938"></a>
<span class="sourceLineNo">939</span><a name="line.939"></a>
<span class="sourceLineNo">940</span>    /**<a name="line.940"></a>
<span class="sourceLineNo">941</span>     * @see ByteBuffer#putChar(int, char)<a name="line.941"></a>
<span class="sourceLineNo">942</span>     * <a name="line.942"></a>
<span class="sourceLineNo">943</span>     * @param index The index in the IoBuffer where we will put a char in<a name="line.943"></a>
<span class="sourceLineNo">944</span>     * @param value The char to put at the current position<a name="line.944"></a>
<span class="sourceLineNo">945</span>     * @return the modified IoBuffer<a name="line.945"></a>
<span class="sourceLineNo">946</span>     */<a name="line.946"></a>
<span class="sourceLineNo">947</span>    public abstract IoBuffer putChar(int index, char value);<a name="line.947"></a>
<span class="sourceLineNo">948</span><a name="line.948"></a>
<span class="sourceLineNo">949</span>    /**<a name="line.949"></a>
<span class="sourceLineNo">950</span>     * @see ByteBuffer#asCharBuffer()<a name="line.950"></a>
<span class="sourceLineNo">951</span>     * <a name="line.951"></a>
<span class="sourceLineNo">952</span>     * @return a new CharBuffer<a name="line.952"></a>
<span class="sourceLineNo">953</span>     */<a name="line.953"></a>
<span class="sourceLineNo">954</span>    public abstract CharBuffer asCharBuffer();<a name="line.954"></a>
<span class="sourceLineNo">955</span><a name="line.955"></a>
<span class="sourceLineNo">956</span>    /**<a name="line.956"></a>
<span class="sourceLineNo">957</span>     * @see ByteBuffer#getShort()<a name="line.957"></a>
<span class="sourceLineNo">958</span>     * <a name="line.958"></a>
<span class="sourceLineNo">959</span>     * @return The read short<a name="line.959"></a>
<span class="sourceLineNo">960</span>     */<a name="line.960"></a>
<span class="sourceLineNo">961</span>    public abstract short getShort();<a name="line.961"></a>
<span class="sourceLineNo">962</span><a name="line.962"></a>
<span class="sourceLineNo">963</span>    /**<a name="line.963"></a>
<span class="sourceLineNo">964</span>     * Reads two bytes unsigned integer.<a name="line.964"></a>
<span class="sourceLineNo">965</span>     * <a name="line.965"></a>
<span class="sourceLineNo">966</span>     * @return The read unsigned short<a name="line.966"></a>
<span class="sourceLineNo">967</span>     */<a name="line.967"></a>
<span class="sourceLineNo">968</span>    public abstract int getUnsignedShort();<a name="line.968"></a>
<span class="sourceLineNo">969</span><a name="line.969"></a>
<span class="sourceLineNo">970</span>    /**<a name="line.970"></a>
<span class="sourceLineNo">971</span>     * @see ByteBuffer#putShort(short)<a name="line.971"></a>
<span class="sourceLineNo">972</span>     * <a name="line.972"></a>
<span class="sourceLineNo">973</span>     * @param value The short to put at the current position<a name="line.973"></a>
<span class="sourceLineNo">974</span>     * @return the modified IoBuffer<a name="line.974"></a>
<span class="sourceLineNo">975</span>     */<a name="line.975"></a>
<span class="sourceLineNo">976</span>    public abstract IoBuffer putShort(short value);<a name="line.976"></a>
<span class="sourceLineNo">977</span><a name="line.977"></a>
<span class="sourceLineNo">978</span>    /**<a name="line.978"></a>
<span class="sourceLineNo">979</span>     * @see ByteBuffer#getShort()<a name="line.979"></a>
<span class="sourceLineNo">980</span>     * <a name="line.980"></a>
<span class="sourceLineNo">981</span>     * @param index The index in the IoBuffer where we will read a short from<a name="line.981"></a>
<span class="sourceLineNo">982</span>     * @return The read short<a name="line.982"></a>
<span class="sourceLineNo">983</span>     */<a name="line.983"></a>
<span class="sourceLineNo">984</span>    public abstract short getShort(int index);<a name="line.984"></a>
<span class="sourceLineNo">985</span><a name="line.985"></a>
<span class="sourceLineNo">986</span>    /**<a name="line.986"></a>
<span class="sourceLineNo">987</span>     * Reads two bytes unsigned integer.<a name="line.987"></a>
<span class="sourceLineNo">988</span>     * <a name="line.988"></a>
<span class="sourceLineNo">989</span>     * @param index The index in the IoBuffer where we will read an unsigned short from<a name="line.989"></a>
<span class="sourceLineNo">990</span>     * @return the unsigned short at the given position<a name="line.990"></a>
<span class="sourceLineNo">991</span>     */<a name="line.991"></a>
<span class="sourceLineNo">992</span>    public abstract int getUnsignedShort(int index);<a name="line.992"></a>
<span class="sourceLineNo">993</span><a name="line.993"></a>
<span class="sourceLineNo">994</span>    /**<a name="line.994"></a>
<span class="sourceLineNo">995</span>     * @see ByteBuffer#putShort(int, short)<a name="line.995"></a>
<span class="sourceLineNo">996</span>     * <a name="line.996"></a>
<span class="sourceLineNo">997</span>     * @param index The position at which the short should be written<a name="line.997"></a>
<span class="sourceLineNo">998</span>     * @param value The short to put at the current position<a name="line.998"></a>
<span class="sourceLineNo">999</span>     * @return the modified IoBuffer<a name="line.999"></a>
<span class="sourceLineNo">1000</span>     */<a name="line.1000"></a>
<span class="sourceLineNo">1001</span>    public abstract IoBuffer putShort(int index, short value);<a name="line.1001"></a>
<span class="sourceLineNo">1002</span><a name="line.1002"></a>
<span class="sourceLineNo">1003</span>    /**<a name="line.1003"></a>
<span class="sourceLineNo">1004</span>     * @see ByteBuffer#asShortBuffer()<a name="line.1004"></a>
<span class="sourceLineNo">1005</span>     * <a name="line.1005"></a>
<span class="sourceLineNo">1006</span>     * @return A ShortBuffer from this IoBuffer<a name="line.1006"></a>
<span class="sourceLineNo">1007</span>     */<a name="line.1007"></a>
<span class="sourceLineNo">1008</span>    public abstract ShortBuffer asShortBuffer();<a name="line.1008"></a>
<span class="sourceLineNo">1009</span><a name="line.1009"></a>
<span class="sourceLineNo">1010</span>    /**<a name="line.1010"></a>
<span class="sourceLineNo">1011</span>     * @see ByteBuffer#getInt()<a name="line.1011"></a>
<span class="sourceLineNo">1012</span>     * <a name="line.1012"></a>
<span class="sourceLineNo">1013</span>     * @return The int read<a name="line.1013"></a>
<span class="sourceLineNo">1014</span>     */<a name="line.1014"></a>
<span class="sourceLineNo">1015</span>    public abstract int getInt();<a name="line.1015"></a>
<span class="sourceLineNo">1016</span><a name="line.1016"></a>
<span class="sourceLineNo">1017</span>    /**<a name="line.1017"></a>
<span class="sourceLineNo">1018</span>     * Reads four bytes unsigned integer.<a name="line.1018"></a>
<span class="sourceLineNo">1019</span>     * <a name="line.1019"></a>
<span class="sourceLineNo">1020</span>     * @return The unsigned int read<a name="line.1020"></a>
<span class="sourceLineNo">1021</span>     */<a name="line.1021"></a>
<span class="sourceLineNo">1022</span>    public abstract long getUnsignedInt();<a name="line.1022"></a>
<span class="sourceLineNo">1023</span><a name="line.1023"></a>
<span class="sourceLineNo">1024</span>    /**<a name="line.1024"></a>
<span class="sourceLineNo">1025</span>     * Relative &lt;i&gt;get&lt;/i&gt; method for reading a medium int value.<a name="line.1025"></a>
<span class="sourceLineNo">1026</span>     * <a name="line.1026"></a>
<span class="sourceLineNo">1027</span>     * &lt;p&gt;<a name="line.1027"></a>
<span class="sourceLineNo">1028</span>     * Reads the next three bytes at this buffer's current position, composing<a name="line.1028"></a>
<span class="sourceLineNo">1029</span>     * them into an int value according to the current byte order, and then<a name="line.1029"></a>
<span class="sourceLineNo">1030</span>     * increments the position by three.<a name="line.1030"></a>
<span class="sourceLineNo">1031</span>     * <a name="line.1031"></a>
<span class="sourceLineNo">1032</span>     * @return The medium int value at the buffer's current position<a name="line.1032"></a>
<span class="sourceLineNo">1033</span>     */<a name="line.1033"></a>
<span class="sourceLineNo">1034</span>    public abstract int getMediumInt();<a name="line.1034"></a>
<span class="sourceLineNo">1035</span><a name="line.1035"></a>
<span class="sourceLineNo">1036</span>    /**<a name="line.1036"></a>
<span class="sourceLineNo">1037</span>     * Relative &lt;i&gt;get&lt;/i&gt; method for reading an unsigned medium int value.<a name="line.1037"></a>
<span class="sourceLineNo">1038</span>     * <a name="line.1038"></a>
<span class="sourceLineNo">1039</span>     * &lt;p&gt;<a name="line.1039"></a>
<span class="sourceLineNo">1040</span>     * Reads the next three bytes at this buffer's current position, composing<a name="line.1040"></a>
<span class="sourceLineNo">1041</span>     * them into an int value according to the current byte order, and then<a name="line.1041"></a>
<span class="sourceLineNo">1042</span>     * increments the position by three.<a name="line.1042"></a>
<span class="sourceLineNo">1043</span>     * <a name="line.1043"></a>
<span class="sourceLineNo">1044</span>     * @return The unsigned medium int value at the buffer's current position<a name="line.1044"></a>
<span class="sourceLineNo">1045</span>     */<a name="line.1045"></a>
<span class="sourceLineNo">1046</span>    public abstract int getUnsignedMediumInt();<a name="line.1046"></a>
<span class="sourceLineNo">1047</span><a name="line.1047"></a>
<span class="sourceLineNo">1048</span>    /**<a name="line.1048"></a>
<span class="sourceLineNo">1049</span>     * Absolute &lt;i&gt;get&lt;/i&gt; method for reading a medium int value.<a name="line.1049"></a>
<span class="sourceLineNo">1050</span>     * <a name="line.1050"></a>
<span class="sourceLineNo">1051</span>     * &lt;p&gt;<a name="line.1051"></a>
<span class="sourceLineNo">1052</span>     * Reads the next three bytes at this buffer's current position, composing<a name="line.1052"></a>
<span class="sourceLineNo">1053</span>     * them into an int value according to the current byte order.<a name="line.1053"></a>
<span class="sourceLineNo">1054</span>     * <a name="line.1054"></a>
<span class="sourceLineNo">1055</span>     * @param index The index from which the medium int will be read<a name="line.1055"></a>
<span class="sourceLineNo">1056</span>     * @return The medium int value at the given index<a name="line.1056"></a>
<span class="sourceLineNo">1057</span>     * <a name="line.1057"></a>
<span class="sourceLineNo">1058</span>     * @throws IndexOutOfBoundsException<a name="line.1058"></a>
<span class="sourceLineNo">1059</span>     *             If &lt;tt&gt;index&lt;/tt&gt; is negative or not smaller than the<a name="line.1059"></a>
<span class="sourceLineNo">1060</span>     *             buffer's limit<a name="line.1060"></a>
<span class="sourceLineNo">1061</span>     */<a name="line.1061"></a>
<span class="sourceLineNo">1062</span>    public abstract int getMediumInt(int index);<a name="line.1062"></a>
<span class="sourceLineNo">1063</span><a name="line.1063"></a>
<span class="sourceLineNo">1064</span>    /**<a name="line.1064"></a>
<span class="sourceLineNo">1065</span>     * Absolute &lt;i&gt;get&lt;/i&gt; method for reading an unsigned medium int value.<a name="line.1065"></a>
<span class="sourceLineNo">1066</span>     * <a name="line.1066"></a>
<span class="sourceLineNo">1067</span>     * &lt;p&gt;<a name="line.1067"></a>
<span class="sourceLineNo">1068</span>     * Reads the next three bytes at this buffer's current position, composing<a name="line.1068"></a>
<span class="sourceLineNo">1069</span>     * them into an int value according to the current byte order.<a name="line.1069"></a>
<span class="sourceLineNo">1070</span>     * <a name="line.1070"></a>
<span class="sourceLineNo">1071</span>     * @param index The index from which the unsigned medium int will be read<a name="line.1071"></a>
<span class="sourceLineNo">1072</span>     * @return The unsigned medium int value at the given index<a name="line.1072"></a>
<span class="sourceLineNo">1073</span>     * <a name="line.1073"></a>
<span class="sourceLineNo">1074</span>     * @throws IndexOutOfBoundsException<a name="line.1074"></a>
<span class="sourceLineNo">1075</span>     *             If &lt;tt&gt;index&lt;/tt&gt; is negative or not smaller than the<a name="line.1075"></a>
<span class="sourceLineNo">1076</span>     *             buffer's limit<a name="line.1076"></a>
<span class="sourceLineNo">1077</span>     */<a name="line.1077"></a>
<span class="sourceLineNo">1078</span>    public abstract int getUnsignedMediumInt(int index);<a name="line.1078"></a>
<span class="sourceLineNo">1079</span><a name="line.1079"></a>
<span class="sourceLineNo">1080</span>    /**<a name="line.1080"></a>
<span class="sourceLineNo">1081</span>     * Relative &lt;i&gt;put&lt;/i&gt; method for writing a medium int value.<a name="line.1081"></a>
<span class="sourceLineNo">1082</span>     * <a name="line.1082"></a>
<span class="sourceLineNo">1083</span>     * &lt;p&gt;<a name="line.1083"></a>
<span class="sourceLineNo">1084</span>     * Writes three bytes containing the given int value, in the current byte<a name="line.1084"></a>
<span class="sourceLineNo">1085</span>     * order, into this buffer at the current position, and then increments the<a name="line.1085"></a>
<span class="sourceLineNo">1086</span>     * position by three.<a name="line.1086"></a>
<span class="sourceLineNo">1087</span>     * <a name="line.1087"></a>
<span class="sourceLineNo">1088</span>     * @param value The medium int value to be written<a name="line.1088"></a>
<span class="sourceLineNo">1089</span>     * <a name="line.1089"></a>
<span class="sourceLineNo">1090</span>     * @return the modified IoBuffer<a name="line.1090"></a>
<span class="sourceLineNo">1091</span>     * <a name="line.1091"></a>
<span class="sourceLineNo">1092</span>     * @throws BufferOverflowException If there are fewer than three bytes remaining in this buffer<a name="line.1092"></a>
<span class="sourceLineNo">1093</span>     * @throws ReadOnlyBufferException If this buffer is read-only<a name="line.1093"></a>
<span class="sourceLineNo">1094</span>     */<a name="line.1094"></a>
<span class="sourceLineNo">1095</span>    public abstract IoBuffer putMediumInt(int value);<a name="line.1095"></a>
<span class="sourceLineNo">1096</span><a name="line.1096"></a>
<span class="sourceLineNo">1097</span>    /**<a name="line.1097"></a>
<span class="sourceLineNo">1098</span>     * Absolute &lt;i&gt;put&lt;/i&gt; method for writing a medium int value.<a name="line.1098"></a>
<span class="sourceLineNo">1099</span>     * <a name="line.1099"></a>
<span class="sourceLineNo">1100</span>     * &lt;p&gt;<a name="line.1100"></a>
<span class="sourceLineNo">1101</span>     * Writes three bytes containing the given int value, in the current byte<a name="line.1101"></a>
<span class="sourceLineNo">1102</span>     * order, into this buffer at the given index.<a name="line.1102"></a>
<span class="sourceLineNo">1103</span>     * <a name="line.1103"></a>
<span class="sourceLineNo">1104</span>     * @param index The index at which the bytes will be written<a name="line.1104"></a>
<span class="sourceLineNo">1105</span>     * <a name="line.1105"></a>
<span class="sourceLineNo">1106</span>     * @param value The medium int value to be written<a name="line.1106"></a>
<span class="sourceLineNo">1107</span>     * <a name="line.1107"></a>
<span class="sourceLineNo">1108</span>     * @return the modified IoBuffer<a name="line.1108"></a>
<span class="sourceLineNo">1109</span>     * <a name="line.1109"></a>
<span class="sourceLineNo">1110</span>     * @throws IndexOutOfBoundsException<a name="line.1110"></a>
<span class="sourceLineNo">1111</span>     *             If &lt;tt&gt;index&lt;/tt&gt; is negative or not smaller than the<a name="line.1111"></a>
<span class="sourceLineNo">1112</span>     *             buffer's limit, minus three<a name="line.1112"></a>
<span class="sourceLineNo">1113</span>     * <a name="line.1113"></a>
<span class="sourceLineNo">1114</span>     * @throws ReadOnlyBufferException If this buffer is read-only<a name="line.1114"></a>
<span class="sourceLineNo">1115</span>     */<a name="line.1115"></a>
<span class="sourceLineNo">1116</span>    public abstract IoBuffer putMediumInt(int index, int value);<a name="line.1116"></a>
<span class="sourceLineNo">1117</span><a name="line.1117"></a>
<span class="sourceLineNo">1118</span>    /**<a name="line.1118"></a>
<span class="sourceLineNo">1119</span>     * @see ByteBuffer#putInt(int)<a name="line.1119"></a>
<span class="sourceLineNo">1120</span>     * <a name="line.1120"></a>
<span class="sourceLineNo">1121</span>     * @param value The int to put at the current position<a name="line.1121"></a>
<span class="sourceLineNo">1122</span>     * @return the modified IoBuffer<a name="line.1122"></a>
<span class="sourceLineNo">1123</span>     */<a name="line.1123"></a>
<span class="sourceLineNo">1124</span>    public abstract IoBuffer putInt(int value);<a name="line.1124"></a>
<span class="sourceLineNo">1125</span><a name="line.1125"></a>
<span class="sourceLineNo">1126</span>    /**<a name="line.1126"></a>
<span class="sourceLineNo">1127</span>     * Writes an unsigned byte into the ByteBuffer<a name="line.1127"></a>
<span class="sourceLineNo">1128</span>     * <a name="line.1128"></a>
<span class="sourceLineNo">1129</span>     * @param value the byte to write<a name="line.1129"></a>
<span class="sourceLineNo">1130</span>     * <a name="line.1130"></a>
<span class="sourceLineNo">1131</span>     * @return the modified IoBuffer<a name="line.1131"></a>
<span class="sourceLineNo">1132</span>     */<a name="line.1132"></a>
<span class="sourceLineNo">1133</span>    public abstract IoBuffer putUnsigned(byte value);<a name="line.1133"></a>
<span class="sourceLineNo">1134</span><a name="line.1134"></a>
<span class="sourceLineNo">1135</span>    /**<a name="line.1135"></a>
<span class="sourceLineNo">1136</span>     * Writes an unsigned byte into the ByteBuffer at a specified position<a name="line.1136"></a>
<span class="sourceLineNo">1137</span>     * <a name="line.1137"></a>
<span class="sourceLineNo">1138</span>     * @param index the position in the buffer to write the value<a name="line.1138"></a>
<span class="sourceLineNo">1139</span>     * @param value the byte to write<a name="line.1139"></a>
<span class="sourceLineNo">1140</span>     * <a name="line.1140"></a>
<span class="sourceLineNo">1141</span>     * @return the modified IoBuffer<a name="line.1141"></a>
<span class="sourceLineNo">1142</span>     */<a name="line.1142"></a>
<span class="sourceLineNo">1143</span>    public abstract IoBuffer putUnsigned(int index, byte value);<a name="line.1143"></a>
<span class="sourceLineNo">1144</span><a name="line.1144"></a>
<span class="sourceLineNo">1145</span>    /**<a name="line.1145"></a>
<span class="sourceLineNo">1146</span>     * Writes an unsigned byte into the ByteBuffer<a name="line.1146"></a>
<span class="sourceLineNo">1147</span>     * <a name="line.1147"></a>
<span class="sourceLineNo">1148</span>     * @param value the short to write<a name="line.1148"></a>
<span class="sourceLineNo">1149</span>     * <a name="line.1149"></a>
<span class="sourceLineNo">1150</span>     * @return the modified IoBuffer<a name="line.1150"></a>
<span class="sourceLineNo">1151</span>     */<a name="line.1151"></a>
<span class="sourceLineNo">1152</span>    public abstract IoBuffer putUnsigned(short value);<a name="line.1152"></a>
<span class="sourceLineNo">1153</span><a name="line.1153"></a>
<span class="sourceLineNo">1154</span>    /**<a name="line.1154"></a>
<span class="sourceLineNo">1155</span>     * Writes an unsigned byte into the ByteBuffer at a specified position<a name="line.1155"></a>
<span class="sourceLineNo">1156</span>     * <a name="line.1156"></a>
<span class="sourceLineNo">1157</span>     * @param index the position in the buffer to write the value<a name="line.1157"></a>
<span class="sourceLineNo">1158</span>     * @param value the short to write<a name="line.1158"></a>
<span class="sourceLineNo">1159</span>     * <a name="line.1159"></a>
<span class="sourceLineNo">1160</span>     * @return the modified IoBuffer<a name="line.1160"></a>
<span class="sourceLineNo">1161</span>     */<a name="line.1161"></a>
<span class="sourceLineNo">1162</span>    public abstract IoBuffer putUnsigned(int index, short value);<a name="line.1162"></a>
<span class="sourceLineNo">1163</span><a name="line.1163"></a>
<span class="sourceLineNo">1164</span>    /**<a name="line.1164"></a>
<span class="sourceLineNo">1165</span>     * Writes an unsigned byte into the ByteBuffer<a name="line.1165"></a>
<span class="sourceLineNo">1166</span>     * <a name="line.1166"></a>
<span class="sourceLineNo">1167</span>     * @param value the int to write<a name="line.1167"></a>
<span class="sourceLineNo">1168</span>     * <a name="line.1168"></a>
<span class="sourceLineNo">1169</span>     * @return the modified IoBuffer<a name="line.1169"></a>
<span class="sourceLineNo">1170</span>     */<a name="line.1170"></a>
<span class="sourceLineNo">1171</span>    public abstract IoBuffer putUnsigned(int value);<a name="line.1171"></a>
<span class="sourceLineNo">1172</span><a name="line.1172"></a>
<span class="sourceLineNo">1173</span>    /**<a name="line.1173"></a>
<span class="sourceLineNo">1174</span>     * Writes an unsigned byte into the ByteBuffer at a specified position<a name="line.1174"></a>
<span class="sourceLineNo">1175</span>     * <a name="line.1175"></a>
<span class="sourceLineNo">1176</span>     * @param index the position in the buffer to write the value<a name="line.1176"></a>
<span class="sourceLineNo">1177</span>     * @param value the int to write<a name="line.1177"></a>
<span class="sourceLineNo">1178</span>     * <a name="line.1178"></a>
<span class="sourceLineNo">1179</span>     * @return the modified IoBuffer<a name="line.1179"></a>
<span class="sourceLineNo">1180</span>     */<a name="line.1180"></a>
<span class="sourceLineNo">1181</span>    public abstract IoBuffer putUnsigned(int index, int value);<a name="line.1181"></a>
<span class="sourceLineNo">1182</span><a name="line.1182"></a>
<span class="sourceLineNo">1183</span>    /**<a name="line.1183"></a>
<span class="sourceLineNo">1184</span>     * Writes an unsigned byte into the ByteBuffer<a name="line.1184"></a>
<span class="sourceLineNo">1185</span>     * <a name="line.1185"></a>
<span class="sourceLineNo">1186</span>     * @param value the long to write<a name="line.1186"></a>
<span class="sourceLineNo">1187</span>     * <a name="line.1187"></a>
<span class="sourceLineNo">1188</span>     * @return the modified IoBuffer<a name="line.1188"></a>
<span class="sourceLineNo">1189</span>     */<a name="line.1189"></a>
<span class="sourceLineNo">1190</span>    public abstract IoBuffer putUnsigned(long value);<a name="line.1190"></a>
<span class="sourceLineNo">1191</span><a name="line.1191"></a>
<span class="sourceLineNo">1192</span>    /**<a name="line.1192"></a>
<span class="sourceLineNo">1193</span>     * Writes an unsigned byte into the ByteBuffer at a specified position<a name="line.1193"></a>
<span class="sourceLineNo">1194</span>     * <a name="line.1194"></a>
<span class="sourceLineNo">1195</span>     * @param index the position in the buffer to write the value<a name="line.1195"></a>
<span class="sourceLineNo">1196</span>     * @param value the long to write<a name="line.1196"></a>
<span class="sourceLineNo">1197</span>     * <a name="line.1197"></a>
<span class="sourceLineNo">1198</span>     * @return the modified IoBuffer<a name="line.1198"></a>
<span class="sourceLineNo">1199</span>     */<a name="line.1199"></a>
<span class="sourceLineNo">1200</span>    public abstract IoBuffer putUnsigned(int index, long value);<a name="line.1200"></a>
<span class="sourceLineNo">1201</span><a name="line.1201"></a>
<span class="sourceLineNo">1202</span>    /**<a name="line.1202"></a>
<span class="sourceLineNo">1203</span>     * Writes an unsigned int into the ByteBuffer<a name="line.1203"></a>
<span class="sourceLineNo">1204</span>     * @param value the byte to write<a name="line.1204"></a>
<span class="sourceLineNo">1205</span>     * <a name="line.1205"></a>
<span class="sourceLineNo">1206</span>     * @return the modified IoBuffer<a name="line.1206"></a>
<span class="sourceLineNo">1207</span>     */<a name="line.1207"></a>
<span class="sourceLineNo">1208</span>    public abstract IoBuffer putUnsignedInt(byte value);<a name="line.1208"></a>
<span class="sourceLineNo">1209</span><a name="line.1209"></a>
<span class="sourceLineNo">1210</span>    /**<a name="line.1210"></a>
<span class="sourceLineNo">1211</span>     * Writes an unsigned int into the ByteBuffer at a specified position<a name="line.1211"></a>
<span class="sourceLineNo">1212</span>     * <a name="line.1212"></a>
<span class="sourceLineNo">1213</span>     * @param index the position in the buffer to write the value<a name="line.1213"></a>
<span class="sourceLineNo">1214</span>     * @param value the byte to write<a name="line.1214"></a>
<span class="sourceLineNo">1215</span>     * <a name="line.1215"></a>
<span class="sourceLineNo">1216</span>     * @return the modified IoBuffer<a name="line.1216"></a>
<span class="sourceLineNo">1217</span>     */<a name="line.1217"></a>
<span class="sourceLineNo">1218</span>    public abstract IoBuffer putUnsignedInt(int index, byte value);<a name="line.1218"></a>
<span class="sourceLineNo">1219</span><a name="line.1219"></a>
<span class="sourceLineNo">1220</span>    /**<a name="line.1220"></a>
<span class="sourceLineNo">1221</span>     * Writes an unsigned int into the ByteBuffer<a name="line.1221"></a>
<span class="sourceLineNo">1222</span>     * <a name="line.1222"></a>
<span class="sourceLineNo">1223</span>     * @param value the short to write<a name="line.1223"></a>
<span class="sourceLineNo">1224</span>     * <a name="line.1224"></a>
<span class="sourceLineNo">1225</span>     * @return the modified IoBuffer<a name="line.1225"></a>
<span class="sourceLineNo">1226</span>     */<a name="line.1226"></a>
<span class="sourceLineNo">1227</span>    public abstract IoBuffer putUnsignedInt(short value);<a name="line.1227"></a>
<span class="sourceLineNo">1228</span><a name="line.1228"></a>
<span class="sourceLineNo">1229</span>    /**<a name="line.1229"></a>
<span class="sourceLineNo">1230</span>     * Writes an unsigned int into the ByteBuffer at a specified position<a name="line.1230"></a>
<span class="sourceLineNo">1231</span>     * <a name="line.1231"></a>
<span class="sourceLineNo">1232</span>     * @param index the position in the buffer to write the value<a name="line.1232"></a>
<span class="sourceLineNo">1233</span>     * @param value the short to write<a name="line.1233"></a>
<span class="sourceLineNo">1234</span>     * <a name="line.1234"></a>
<span class="sourceLineNo">1235</span>     * @return the modified IoBuffer<a name="line.1235"></a>
<span class="sourceLineNo">1236</span>     */<a name="line.1236"></a>
<span class="sourceLineNo">1237</span>    public abstract IoBuffer putUnsignedInt(int index, short value);<a name="line.1237"></a>
<span class="sourceLineNo">1238</span><a name="line.1238"></a>
<span class="sourceLineNo">1239</span>    /**<a name="line.1239"></a>
<span class="sourceLineNo">1240</span>     * Writes an unsigned int into the ByteBuffer<a name="line.1240"></a>
<span class="sourceLineNo">1241</span>     * <a name="line.1241"></a>
<span class="sourceLineNo">1242</span>     * @param value the int to write<a name="line.1242"></a>
<span class="sourceLineNo">1243</span>     * <a name="line.1243"></a>
<span class="sourceLineNo">1244</span>     * @return the modified IoBuffer<a name="line.1244"></a>
<span class="sourceLineNo">1245</span>     */<a name="line.1245"></a>
<span class="sourceLineNo">1246</span>    public abstract IoBuffer putUnsignedInt(int value);<a name="line.1246"></a>
<span class="sourceLineNo">1247</span><a name="line.1247"></a>
<span class="sourceLineNo">1248</span>    /**<a name="line.1248"></a>
<span class="sourceLineNo">1249</span>     * Writes an unsigned int into the ByteBuffer at a specified position<a name="line.1249"></a>
<span class="sourceLineNo">1250</span>     * <a name="line.1250"></a>
<span class="sourceLineNo">1251</span>     * @param index the position in the buffer to write the value<a name="line.1251"></a>
<span class="sourceLineNo">1252</span>     * @param value the int to write<a name="line.1252"></a>
<span class="sourceLineNo">1253</span>     * <a name="line.1253"></a>
<span class="sourceLineNo">1254</span>     * @return the modified IoBuffer<a name="line.1254"></a>
<span class="sourceLineNo">1255</span>     */<a name="line.1255"></a>
<span class="sourceLineNo">1256</span>    public abstract IoBuffer putUnsignedInt(int index, int value);<a name="line.1256"></a>
<span class="sourceLineNo">1257</span><a name="line.1257"></a>
<span class="sourceLineNo">1258</span>    /**<a name="line.1258"></a>
<span class="sourceLineNo">1259</span>     * Writes an unsigned int into the ByteBuffer<a name="line.1259"></a>
<span class="sourceLineNo">1260</span>     * <a name="line.1260"></a>
<span class="sourceLineNo">1261</span>     * @param value the long to write<a name="line.1261"></a>
<span class="sourceLineNo">1262</span>     * <a name="line.1262"></a>
<span class="sourceLineNo">1263</span>     * @return the modified IoBuffer<a name="line.1263"></a>
<span class="sourceLineNo">1264</span>     */<a name="line.1264"></a>
<span class="sourceLineNo">1265</span>    public abstract IoBuffer putUnsignedInt(long value);<a name="line.1265"></a>
<span class="sourceLineNo">1266</span><a name="line.1266"></a>
<span class="sourceLineNo">1267</span>    /**<a name="line.1267"></a>
<span class="sourceLineNo">1268</span>     * Writes an unsigned int into the ByteBuffer at a specified position<a name="line.1268"></a>
<span class="sourceLineNo">1269</span>     * <a name="line.1269"></a>
<span class="sourceLineNo">1270</span>     * @param index the position in the buffer to write the value<a name="line.1270"></a>
<span class="sourceLineNo">1271</span>     * @param value the long to write<a name="line.1271"></a>
<span class="sourceLineNo">1272</span>     * <a name="line.1272"></a>
<span class="sourceLineNo">1273</span>     * @return the modified IoBuffer<a name="line.1273"></a>
<span class="sourceLineNo">1274</span>     */<a name="line.1274"></a>
<span class="sourceLineNo">1275</span>    public abstract IoBuffer putUnsignedInt(int index, long value);<a name="line.1275"></a>
<span class="sourceLineNo">1276</span><a name="line.1276"></a>
<span class="sourceLineNo">1277</span>    /**<a name="line.1277"></a>
<span class="sourceLineNo">1278</span>     * Writes an unsigned short into the ByteBuffer<a name="line.1278"></a>
<span class="sourceLineNo">1279</span>     * <a name="line.1279"></a>
<span class="sourceLineNo">1280</span>     * @param value the byte to write<a name="line.1280"></a>
<span class="sourceLineNo">1281</span>     * <a name="line.1281"></a>
<span class="sourceLineNo">1282</span>     * @return the modified IoBuffer<a name="line.1282"></a>
<span class="sourceLineNo">1283</span>     */<a name="line.1283"></a>
<span class="sourceLineNo">1284</span>    public abstract IoBuffer putUnsignedShort(byte value);<a name="line.1284"></a>
<span class="sourceLineNo">1285</span><a name="line.1285"></a>
<span class="sourceLineNo">1286</span>    /**<a name="line.1286"></a>
<span class="sourceLineNo">1287</span>     * Writes an unsigned Short into the ByteBuffer at a specified position<a name="line.1287"></a>
<span class="sourceLineNo">1288</span>     * <a name="line.1288"></a>
<span class="sourceLineNo">1289</span>     * @param index the position in the buffer to write the value<a name="line.1289"></a>
<span class="sourceLineNo">1290</span>     * @param value the byte to write<a name="line.1290"></a>
<span class="sourceLineNo">1291</span>     * <a name="line.1291"></a>
<span class="sourceLineNo">1292</span>     * @return the modified IoBuffer<a name="line.1292"></a>
<span class="sourceLineNo">1293</span>     */<a name="line.1293"></a>
<span class="sourceLineNo">1294</span>    public abstract IoBuffer putUnsignedShort(int index, byte value);<a name="line.1294"></a>
<span class="sourceLineNo">1295</span><a name="line.1295"></a>
<span class="sourceLineNo">1296</span>    /**<a name="line.1296"></a>
<span class="sourceLineNo">1297</span>     * Writes an unsigned Short into the ByteBuffer<a name="line.1297"></a>
<span class="sourceLineNo">1298</span>     * <a name="line.1298"></a>
<span class="sourceLineNo">1299</span>     * @param value the short to write<a name="line.1299"></a>
<span class="sourceLineNo">1300</span>     * <a name="line.1300"></a>
<span class="sourceLineNo">1301</span>     * @return the modified IoBuffer<a name="line.1301"></a>
<span class="sourceLineNo">1302</span>     */<a name="line.1302"></a>
<span class="sourceLineNo">1303</span>    public abstract IoBuffer putUnsignedShort(short value);<a name="line.1303"></a>
<span class="sourceLineNo">1304</span><a name="line.1304"></a>
<span class="sourceLineNo">1305</span>    /**<a name="line.1305"></a>
<span class="sourceLineNo">1306</span>     * Writes an unsigned Short into the ByteBuffer at a specified position<a name="line.1306"></a>
<span class="sourceLineNo">1307</span>     * <a name="line.1307"></a>
<span class="sourceLineNo">1308</span>     * @param index the position in the buffer to write the unsigned short<a name="line.1308"></a>
<span class="sourceLineNo">1309</span>     * @param value the unsigned short to write<a name="line.1309"></a>
<span class="sourceLineNo">1310</span>     * <a name="line.1310"></a>
<span class="sourceLineNo">1311</span>     * @return the modified IoBuffer<a name="line.1311"></a>
<span class="sourceLineNo">1312</span>     */<a name="line.1312"></a>
<span class="sourceLineNo">1313</span>    public abstract IoBuffer putUnsignedShort(int index, short value);<a name="line.1313"></a>
<span class="sourceLineNo">1314</span><a name="line.1314"></a>
<span class="sourceLineNo">1315</span>    /**<a name="line.1315"></a>
<span class="sourceLineNo">1316</span>     * Writes an unsigned Short into the ByteBuffer<a name="line.1316"></a>
<span class="sourceLineNo">1317</span>     * <a name="line.1317"></a>
<span class="sourceLineNo">1318</span>     * @param value the int to write<a name="line.1318"></a>
<span class="sourceLineNo">1319</span>     * <a name="line.1319"></a>
<span class="sourceLineNo">1320</span>     * @return the modified IoBuffer<a name="line.1320"></a>
<span class="sourceLineNo">1321</span>     */<a name="line.1321"></a>
<span class="sourceLineNo">1322</span>    public abstract IoBuffer putUnsignedShort(int value);<a name="line.1322"></a>
<span class="sourceLineNo">1323</span><a name="line.1323"></a>
<span class="sourceLineNo">1324</span>    /**<a name="line.1324"></a>
<span class="sourceLineNo">1325</span>     * Writes an unsigned Short into the ByteBuffer at a specified position<a name="line.1325"></a>
<span class="sourceLineNo">1326</span>     * <a name="line.1326"></a>
<span class="sourceLineNo">1327</span>     * @param index the position in the buffer to write the value<a name="line.1327"></a>
<span class="sourceLineNo">1328</span>     * @param value the int to write<a name="line.1328"></a>
<span class="sourceLineNo">1329</span>     * <a name="line.1329"></a>
<span class="sourceLineNo">1330</span>     * @param index The position where to put the unsigned short<a name="line.1330"></a>
<span class="sourceLineNo">1331</span>     * @param value The unsigned short to put in the IoBuffer<a name="line.1331"></a>
<span class="sourceLineNo">1332</span>     * @return the modified IoBuffer<a name="line.1332"></a>
<span class="sourceLineNo">1333</span>     */<a name="line.1333"></a>
<span class="sourceLineNo">1334</span>    public abstract IoBuffer putUnsignedShort(int index, int value);<a name="line.1334"></a>
<span class="sourceLineNo">1335</span><a name="line.1335"></a>
<span class="sourceLineNo">1336</span>    /**<a name="line.1336"></a>
<span class="sourceLineNo">1337</span>     * Writes an unsigned Short into the ByteBuffer<a name="line.1337"></a>
<span class="sourceLineNo">1338</span>     * <a name="line.1338"></a>
<span class="sourceLineNo">1339</span>     * @param value the long to write<a name="line.1339"></a>
<span class="sourceLineNo">1340</span>     * <a name="line.1340"></a>
<span class="sourceLineNo">1341</span>     * @return the modified IoBuffer<a name="line.1341"></a>
<span class="sourceLineNo">1342</span>     */<a name="line.1342"></a>
<span class="sourceLineNo">1343</span>    public abstract IoBuffer putUnsignedShort(long value);<a name="line.1343"></a>
<span class="sourceLineNo">1344</span><a name="line.1344"></a>
<span class="sourceLineNo">1345</span>    /**<a name="line.1345"></a>
<span class="sourceLineNo">1346</span>     * Writes an unsigned Short into the ByteBuffer at a specified position<a name="line.1346"></a>
<span class="sourceLineNo">1347</span>     * <a name="line.1347"></a>
<span class="sourceLineNo">1348</span>     * @param index the position in the buffer to write the short<a name="line.1348"></a>
<span class="sourceLineNo">1349</span>     * @param value the long to write<a name="line.1349"></a>
<span class="sourceLineNo">1350</span>     * <a name="line.1350"></a>
<span class="sourceLineNo">1351</span>     * @return the modified IoBuffer<a name="line.1351"></a>
<span class="sourceLineNo">1352</span>     */<a name="line.1352"></a>
<span class="sourceLineNo">1353</span>    public abstract IoBuffer putUnsignedShort(int index, long value);<a name="line.1353"></a>
<span class="sourceLineNo">1354</span><a name="line.1354"></a>
<span class="sourceLineNo">1355</span>    /**<a name="line.1355"></a>
<span class="sourceLineNo">1356</span>     * @see ByteBuffer#getInt(int)<a name="line.1356"></a>
<span class="sourceLineNo">1357</span>     * @param index The index in the IoBuffer where we will read an int from<a name="line.1357"></a>
<span class="sourceLineNo">1358</span>     * @return the int at the given position<a name="line.1358"></a>
<span class="sourceLineNo">1359</span>     */<a name="line.1359"></a>
<span class="sourceLineNo">1360</span>    public abstract int getInt(int index);<a name="line.1360"></a>
<span class="sourceLineNo">1361</span><a name="line.1361"></a>
<span class="sourceLineNo">1362</span>    /**<a name="line.1362"></a>
<span class="sourceLineNo">1363</span>     * Reads four bytes unsigned integer.<a name="line.1363"></a>
<span class="sourceLineNo">1364</span>     * @param index The index in the IoBuffer where we will read an unsigned int from<a name="line.1364"></a>
<span class="sourceLineNo">1365</span>     * @return The long at the given position<a name="line.1365"></a>
<span class="sourceLineNo">1366</span>     */<a name="line.1366"></a>
<span class="sourceLineNo">1367</span>    public abstract long getUnsignedInt(int index);<a name="line.1367"></a>
<span class="sourceLineNo">1368</span><a name="line.1368"></a>
<span class="sourceLineNo">1369</span>    /**<a name="line.1369"></a>
<span class="sourceLineNo">1370</span>     * @see ByteBuffer#putInt(int, int)<a name="line.1370"></a>
<span class="sourceLineNo">1371</span>     * <a name="line.1371"></a>
<span class="sourceLineNo">1372</span>     * @param index The position where to put the int<a name="line.1372"></a>
<span class="sourceLineNo">1373</span>     * @param value The int to put in the IoBuffer<a name="line.1373"></a>
<span class="sourceLineNo">1374</span>     * @return the modified IoBuffer<a name="line.1374"></a>
<span class="sourceLineNo">1375</span>     * @return the modified IoBuffer<a name="line.1375"></a>
<span class="sourceLineNo">1376</span>     */<a name="line.1376"></a>
<span class="sourceLineNo">1377</span>    public abstract IoBuffer putInt(int index, int value);<a name="line.1377"></a>
<span class="sourceLineNo">1378</span><a name="line.1378"></a>
<span class="sourceLineNo">1379</span>    /**<a name="line.1379"></a>
<span class="sourceLineNo">1380</span>     * @see ByteBuffer#asIntBuffer()<a name="line.1380"></a>
<span class="sourceLineNo">1381</span>     * <a name="line.1381"></a>
<span class="sourceLineNo">1382</span>     * @return the modified IoBuffer<a name="line.1382"></a>
<span class="sourceLineNo">1383</span>     */<a name="line.1383"></a>
<span class="sourceLineNo">1384</span>    public abstract IntBuffer asIntBuffer();<a name="line.1384"></a>
<span class="sourceLineNo">1385</span><a name="line.1385"></a>
<span class="sourceLineNo">1386</span>    /**<a name="line.1386"></a>
<span class="sourceLineNo">1387</span>     * @see ByteBuffer#getLong()<a name="line.1387"></a>
<span class="sourceLineNo">1388</span>     * <a name="line.1388"></a>
<span class="sourceLineNo">1389</span>     * @return The long at the current position<a name="line.1389"></a>
<span class="sourceLineNo">1390</span>     */<a name="line.1390"></a>
<span class="sourceLineNo">1391</span>    public abstract long getLong();<a name="line.1391"></a>
<span class="sourceLineNo">1392</span><a name="line.1392"></a>
<span class="sourceLineNo">1393</span>    /**<a name="line.1393"></a>
<span class="sourceLineNo">1394</span>     * @see ByteBuffer#putLong(int, long)<a name="line.1394"></a>
<span class="sourceLineNo">1395</span>     * <a name="line.1395"></a>
<span class="sourceLineNo">1396</span>     * @param value The log to put in the IoBuffer<a name="line.1396"></a>
<span class="sourceLineNo">1397</span>     * @return the modified IoBuffer<a name="line.1397"></a>
<span class="sourceLineNo">1398</span>     */<a name="line.1398"></a>
<span class="sourceLineNo">1399</span>    public abstract IoBuffer putLong(long value);<a name="line.1399"></a>
<span class="sourceLineNo">1400</span><a name="line.1400"></a>
<span class="sourceLineNo">1401</span>    /**<a name="line.1401"></a>
<span class="sourceLineNo">1402</span>     * @see ByteBuffer#getLong(int)<a name="line.1402"></a>
<span class="sourceLineNo">1403</span>     * <a name="line.1403"></a>
<span class="sourceLineNo">1404</span>     * @param index The index in the IoBuffer where we will read a long from<a name="line.1404"></a>
<span class="sourceLineNo">1405</span>     * @return the long at the given position<a name="line.1405"></a>
<span class="sourceLineNo">1406</span>     */<a name="line.1406"></a>
<span class="sourceLineNo">1407</span>    public abstract long getLong(int index);<a name="line.1407"></a>
<span class="sourceLineNo">1408</span><a name="line.1408"></a>
<span class="sourceLineNo">1409</span>    /**<a name="line.1409"></a>
<span class="sourceLineNo">1410</span>     * @see ByteBuffer#putLong(int, long)<a name="line.1410"></a>
<span class="sourceLineNo">1411</span>     * <a name="line.1411"></a>
<span class="sourceLineNo">1412</span>     * @param index The position where to put the long<a name="line.1412"></a>
<span class="sourceLineNo">1413</span>     * @param value The long to put in the IoBuffer<a name="line.1413"></a>
<span class="sourceLineNo">1414</span>     * @return the modified IoBuffer<a name="line.1414"></a>
<span class="sourceLineNo">1415</span>     * @return the modified IoBuffer<a name="line.1415"></a>
<span class="sourceLineNo">1416</span>     */<a name="line.1416"></a>
<span class="sourceLineNo">1417</span>    public abstract IoBuffer putLong(int index, long value);<a name="line.1417"></a>
<span class="sourceLineNo">1418</span><a name="line.1418"></a>
<span class="sourceLineNo">1419</span>    /**<a name="line.1419"></a>
<span class="sourceLineNo">1420</span>     * @see ByteBuffer#asLongBuffer()<a name="line.1420"></a>
<span class="sourceLineNo">1421</span>     * <a name="line.1421"></a>
<span class="sourceLineNo">1422</span>     * @return a LongBuffer from this IoBffer<a name="line.1422"></a>
<span class="sourceLineNo">1423</span>     */<a name="line.1423"></a>
<span class="sourceLineNo">1424</span>    public abstract LongBuffer asLongBuffer();<a name="line.1424"></a>
<span class="sourceLineNo">1425</span><a name="line.1425"></a>
<span class="sourceLineNo">1426</span>    /**<a name="line.1426"></a>
<span class="sourceLineNo">1427</span>     * @see ByteBuffer#getFloat()<a name="line.1427"></a>
<span class="sourceLineNo">1428</span>     * <a name="line.1428"></a>
<span class="sourceLineNo">1429</span>     * @return the float at the current position<a name="line.1429"></a>
<span class="sourceLineNo">1430</span>     */<a name="line.1430"></a>
<span class="sourceLineNo">1431</span>    public abstract float getFloat();<a name="line.1431"></a>
<span class="sourceLineNo">1432</span><a name="line.1432"></a>
<span class="sourceLineNo">1433</span>    /**<a name="line.1433"></a>
<span class="sourceLineNo">1434</span>     * @see ByteBuffer#putFloat(float)<a name="line.1434"></a>
<span class="sourceLineNo">1435</span>     *<a name="line.1435"></a>
<span class="sourceLineNo">1436</span>     * @param value The float to put in the IoBuffer<a name="line.1436"></a>
<span class="sourceLineNo">1437</span>     * @return the modified IoBuffer<a name="line.1437"></a>
<span class="sourceLineNo">1438</span>     */<a name="line.1438"></a>
<span class="sourceLineNo">1439</span>    public abstract IoBuffer putFloat(float value);<a name="line.1439"></a>
<span class="sourceLineNo">1440</span><a name="line.1440"></a>
<span class="sourceLineNo">1441</span>    /**<a name="line.1441"></a>
<span class="sourceLineNo">1442</span>     * @see ByteBuffer#getFloat(int)<a name="line.1442"></a>
<span class="sourceLineNo">1443</span>     * <a name="line.1443"></a>
<span class="sourceLineNo">1444</span>     * @param index The index in the IoBuffer where we will read a float from<a name="line.1444"></a>
<span class="sourceLineNo">1445</span>     * @return The float at the given position<a name="line.1445"></a>
<span class="sourceLineNo">1446</span>     */<a name="line.1446"></a>
<span class="sourceLineNo">1447</span>    public abstract float getFloat(int index);<a name="line.1447"></a>
<span class="sourceLineNo">1448</span><a name="line.1448"></a>
<span class="sourceLineNo">1449</span>    /**<a name="line.1449"></a>
<span class="sourceLineNo">1450</span>     * @see ByteBuffer#putFloat(int, float)<a name="line.1450"></a>
<span class="sourceLineNo">1451</span>     * <a name="line.1451"></a>
<span class="sourceLineNo">1452</span>     * @param index The position where to put the float<a name="line.1452"></a>
<span class="sourceLineNo">1453</span>     * @param value The float to put in the IoBuffer<a name="line.1453"></a>
<span class="sourceLineNo">1454</span>     * @return the modified IoBuffer<a name="line.1454"></a>
<span class="sourceLineNo">1455</span>     */<a name="line.1455"></a>
<span class="sourceLineNo">1456</span>    public abstract IoBuffer putFloat(int index, float value);<a name="line.1456"></a>
<span class="sourceLineNo">1457</span><a name="line.1457"></a>
<span class="sourceLineNo">1458</span>    /**<a name="line.1458"></a>
<span class="sourceLineNo">1459</span>     * @see ByteBuffer#asFloatBuffer()<a name="line.1459"></a>
<span class="sourceLineNo">1460</span>     * <a name="line.1460"></a>
<span class="sourceLineNo">1461</span>     * @return A FloatBuffer from this IoBuffer<a name="line.1461"></a>
<span class="sourceLineNo">1462</span>     */<a name="line.1462"></a>
<span class="sourceLineNo">1463</span>    public abstract FloatBuffer asFloatBuffer();<a name="line.1463"></a>
<span class="sourceLineNo">1464</span><a name="line.1464"></a>
<span class="sourceLineNo">1465</span>    /**<a name="line.1465"></a>
<span class="sourceLineNo">1466</span>     * @see ByteBuffer#getDouble()<a name="line.1466"></a>
<span class="sourceLineNo">1467</span>     * <a name="line.1467"></a>
<span class="sourceLineNo">1468</span>     * @return the double at the current position<a name="line.1468"></a>
<span class="sourceLineNo">1469</span>     */<a name="line.1469"></a>
<span class="sourceLineNo">1470</span>    public abstract double getDouble();<a name="line.1470"></a>
<span class="sourceLineNo">1471</span><a name="line.1471"></a>
<span class="sourceLineNo">1472</span>    /**<a name="line.1472"></a>
<span class="sourceLineNo">1473</span>     * @see ByteBuffer#putDouble(double)<a name="line.1473"></a>
<span class="sourceLineNo">1474</span>     * <a name="line.1474"></a>
<span class="sourceLineNo">1475</span>     * @param value The double to put at the IoBuffer current position<a name="line.1475"></a>
<span class="sourceLineNo">1476</span>     * @return the modified IoBuffer<a name="line.1476"></a>
<span class="sourceLineNo">1477</span>     */<a name="line.1477"></a>
<span class="sourceLineNo">1478</span>    public abstract IoBuffer putDouble(double value);<a name="line.1478"></a>
<span class="sourceLineNo">1479</span><a name="line.1479"></a>
<span class="sourceLineNo">1480</span>    /**<a name="line.1480"></a>
<span class="sourceLineNo">1481</span>     * @see ByteBuffer#getDouble(int)<a name="line.1481"></a>
<span class="sourceLineNo">1482</span>     * <a name="line.1482"></a>
<span class="sourceLineNo">1483</span>     * @param index The position where to get the double from<a name="line.1483"></a>
<span class="sourceLineNo">1484</span>     * @return The double at the given position<a name="line.1484"></a>
<span class="sourceLineNo">1485</span>     */<a name="line.1485"></a>
<span class="sourceLineNo">1486</span>    public abstract double getDouble(int index);<a name="line.1486"></a>
<span class="sourceLineNo">1487</span><a name="line.1487"></a>
<span class="sourceLineNo">1488</span>    /**<a name="line.1488"></a>
<span class="sourceLineNo">1489</span>     * @see ByteBuffer#putDouble(int, double)<a name="line.1489"></a>
<span class="sourceLineNo">1490</span>     * <a name="line.1490"></a>
<span class="sourceLineNo">1491</span>     * @param index The position where to put the double<a name="line.1491"></a>
<span class="sourceLineNo">1492</span>     * @param value The double to put in the IoBuffer<a name="line.1492"></a>
<span class="sourceLineNo">1493</span>     * @return the modified IoBuffer<a name="line.1493"></a>
<span class="sourceLineNo">1494</span>     */<a name="line.1494"></a>
<span class="sourceLineNo">1495</span>    public abstract IoBuffer putDouble(int index, double value);<a name="line.1495"></a>
<span class="sourceLineNo">1496</span><a name="line.1496"></a>
<span class="sourceLineNo">1497</span>    /**<a name="line.1497"></a>
<span class="sourceLineNo">1498</span>     * @see ByteBuffer#asDoubleBuffer()<a name="line.1498"></a>
<span class="sourceLineNo">1499</span>     * <a name="line.1499"></a>
<span class="sourceLineNo">1500</span>     * @return A buffer containing Double<a name="line.1500"></a>
<span class="sourceLineNo">1501</span>     */<a name="line.1501"></a>
<span class="sourceLineNo">1502</span>    public abstract DoubleBuffer asDoubleBuffer();<a name="line.1502"></a>
<span class="sourceLineNo">1503</span><a name="line.1503"></a>
<span class="sourceLineNo">1504</span>    /**<a name="line.1504"></a>
<span class="sourceLineNo">1505</span>     * @return an {@link InputStream} that reads the data from this buffer.<a name="line.1505"></a>
<span class="sourceLineNo">1506</span>     * {@link InputStream#read()} returns &lt;tt&gt;-1&lt;/tt&gt; if the buffer position<a name="line.1506"></a>
<span class="sourceLineNo">1507</span>     * reaches to the limit.<a name="line.1507"></a>
<span class="sourceLineNo">1508</span>     */<a name="line.1508"></a>
<span class="sourceLineNo">1509</span>    public abstract InputStream asInputStream();<a name="line.1509"></a>
<span class="sourceLineNo">1510</span><a name="line.1510"></a>
<span class="sourceLineNo">1511</span>    /**<a name="line.1511"></a>
<span class="sourceLineNo">1512</span>     * @return an {@link OutputStream} that appends the data into this buffer.<a name="line.1512"></a>
<span class="sourceLineNo">1513</span>     * Please note that the {@link OutputStream#write(int)} will throw a<a name="line.1513"></a>
<span class="sourceLineNo">1514</span>     * {@link BufferOverflowException} instead of an {@link IOException} in case<a name="line.1514"></a>
<span class="sourceLineNo">1515</span>     * of buffer overflow. Please set &lt;tt&gt;autoExpand&lt;/tt&gt; property by calling<a name="line.1515"></a>
<span class="sourceLineNo">1516</span>     * {@link #setAutoExpand(boolean)} to prevent the unexpected runtime<a name="line.1516"></a>
<span class="sourceLineNo">1517</span>     * exception.<a name="line.1517"></a>
<span class="sourceLineNo">1518</span>     */<a name="line.1518"></a>
<span class="sourceLineNo">1519</span>    public abstract OutputStream asOutputStream();<a name="line.1519"></a>
<span class="sourceLineNo">1520</span><a name="line.1520"></a>
<span class="sourceLineNo">1521</span>    /**<a name="line.1521"></a>
<span class="sourceLineNo">1522</span>     * Returns hexdump of this buffer. The data and pointer are not changed as a<a name="line.1522"></a>
<span class="sourceLineNo">1523</span>     * result of this method call.<a name="line.1523"></a>
<span class="sourceLineNo">1524</span>     * <a name="line.1524"></a>
<span class="sourceLineNo">1525</span>     * @return hexidecimal representation of this buffer<a name="line.1525"></a>
<span class="sourceLineNo">1526</span>     */<a name="line.1526"></a>
<span class="sourceLineNo">1527</span>    public abstract String getHexDump();<a name="line.1527"></a>
<span class="sourceLineNo">1528</span><a name="line.1528"></a>
<span class="sourceLineNo">1529</span>    /**<a name="line.1529"></a>
<span class="sourceLineNo">1530</span>     * Return hexdump of this buffer with limited length.<a name="line.1530"></a>
<span class="sourceLineNo">1531</span>     * <a name="line.1531"></a>
<span class="sourceLineNo">1532</span>     * @param lengthLimit<a name="line.1532"></a>
<span class="sourceLineNo">1533</span>     *            The maximum number of bytes to dump from the current buffer<a name="line.1533"></a>
<span class="sourceLineNo">1534</span>     *            position.<a name="line.1534"></a>
<span class="sourceLineNo">1535</span>     * @return hexidecimal representation of this buffer<a name="line.1535"></a>
<span class="sourceLineNo">1536</span>     */<a name="line.1536"></a>
<span class="sourceLineNo">1537</span>    public abstract String getHexDump(int lengthLimit);<a name="line.1537"></a>
<span class="sourceLineNo">1538</span><a name="line.1538"></a>
<span class="sourceLineNo">1539</span>    // //////////////////////////////<a name="line.1539"></a>
<span class="sourceLineNo">1540</span>    // String getters and putters //<a name="line.1540"></a>
<span class="sourceLineNo">1541</span>    // //////////////////////////////<a name="line.1541"></a>
<span class="sourceLineNo">1542</span><a name="line.1542"></a>
<span class="sourceLineNo">1543</span>    /**<a name="line.1543"></a>
<span class="sourceLineNo">1544</span>     * Reads a &lt;code&gt;NUL&lt;/code&gt;-terminated string from this buffer using the<a name="line.1544"></a>
<span class="sourceLineNo">1545</span>     * specified &lt;code&gt;decoder&lt;/code&gt; and returns it. This method reads until<a name="line.1545"></a>
<span class="sourceLineNo">1546</span>     * the limit of this buffer if no &lt;tt&gt;NUL&lt;/tt&gt; is found.<a name="line.1546"></a>
<span class="sourceLineNo">1547</span>     * <a name="line.1547"></a>
<span class="sourceLineNo">1548</span>     * @param decoder The {@link CharsetDecoder} to use<a name="line.1548"></a>
<span class="sourceLineNo">1549</span>     * @return the read String<a name="line.1549"></a>
<span class="sourceLineNo">1550</span>     * @exception CharacterCodingException Thrown when an error occurred while decoding the buffer<a name="line.1550"></a>
<span class="sourceLineNo">1551</span>     */<a name="line.1551"></a>
<span class="sourceLineNo">1552</span>    public abstract String getString(CharsetDecoder decoder) throws CharacterCodingException;<a name="line.1552"></a>
<span class="sourceLineNo">1553</span><a name="line.1553"></a>
<span class="sourceLineNo">1554</span>    /**<a name="line.1554"></a>
<span class="sourceLineNo">1555</span>     * Reads a &lt;code&gt;NUL&lt;/code&gt;-terminated string from this buffer using the<a name="line.1555"></a>
<span class="sourceLineNo">1556</span>     * specified &lt;code&gt;decoder&lt;/code&gt; and returns it.<a name="line.1556"></a>
<span class="sourceLineNo">1557</span>     * <a name="line.1557"></a>
<span class="sourceLineNo">1558</span>     * @param fieldSize the maximum number of bytes to read<a name="line.1558"></a>
<span class="sourceLineNo">1559</span>     * @param decoder The {@link CharsetDecoder} to use<a name="line.1559"></a>
<span class="sourceLineNo">1560</span>     * @return the read String<a name="line.1560"></a>
<span class="sourceLineNo">1561</span>     * @exception CharacterCodingException Thrown when an error occurred while decoding the buffer<a name="line.1561"></a>
<span class="sourceLineNo">1562</span>     */<a name="line.1562"></a>
<span class="sourceLineNo">1563</span>    public abstract String getString(int fieldSize, CharsetDecoder decoder) throws CharacterCodingException;<a name="line.1563"></a>
<span class="sourceLineNo">1564</span><a name="line.1564"></a>
<span class="sourceLineNo">1565</span>    /**<a name="line.1565"></a>
<span class="sourceLineNo">1566</span>     * Writes the content of &lt;code&gt;in&lt;/code&gt; into this buffer using the<a name="line.1566"></a>
<span class="sourceLineNo">1567</span>     * specified &lt;code&gt;encoder&lt;/code&gt;. This method doesn't terminate string with<a name="line.1567"></a>
<span class="sourceLineNo">1568</span>     * &lt;tt&gt;NUL&lt;/tt&gt;. You have to do it by yourself.<a name="line.1568"></a>
<span class="sourceLineNo">1569</span>     * <a name="line.1569"></a>
<span class="sourceLineNo">1570</span>     * @param val The CharSequence to put in the IoBuffer<a name="line.1570"></a>
<span class="sourceLineNo">1571</span>     * @param encoder The CharsetEncoder to use<a name="line.1571"></a>
<span class="sourceLineNo">1572</span>     * @return The modified IoBuffer<a name="line.1572"></a>
<span class="sourceLineNo">1573</span>     * @throws CharacterCodingException When we have an error while decoding the String<a name="line.1573"></a>
<span class="sourceLineNo">1574</span>     */<a name="line.1574"></a>
<span class="sourceLineNo">1575</span>    public abstract IoBuffer putString(CharSequence val, CharsetEncoder encoder) throws CharacterCodingException;<a name="line.1575"></a>
<span class="sourceLineNo">1576</span><a name="line.1576"></a>
<span class="sourceLineNo">1577</span>    /**<a name="line.1577"></a>
<span class="sourceLineNo">1578</span>     * Writes the content of &lt;code&gt;in&lt;/code&gt; into this buffer as a<a name="line.1578"></a>
<span class="sourceLineNo">1579</span>     * &lt;code&gt;NUL&lt;/code&gt;-terminated string using the specified<a name="line.1579"></a>
<span class="sourceLineNo">1580</span>     * &lt;code&gt;encoder&lt;/code&gt;.<a name="line.1580"></a>
<span class="sourceLineNo">1581</span>     * &lt;p&gt;<a name="line.1581"></a>
<span class="sourceLineNo">1582</span>     * If the charset name of the encoder is UTF-16, you cannot specify odd<a name="line.1582"></a>
<span class="sourceLineNo">1583</span>     * &lt;code&gt;fieldSize&lt;/code&gt;, and this method will append two &lt;code&gt;NUL&lt;/code&gt;s<a name="line.1583"></a>
<span class="sourceLineNo">1584</span>     * as a terminator.<a name="line.1584"></a>
<span class="sourceLineNo">1585</span>     * &lt;p&gt;<a name="line.1585"></a>
<span class="sourceLineNo">1586</span>     * Please note that this method doesn't terminate with &lt;code&gt;NUL&lt;/code&gt; if<a name="line.1586"></a>
<span class="sourceLineNo">1587</span>     * the input string is longer than &lt;tt&gt;fieldSize&lt;/tt&gt;.<a name="line.1587"></a>
<span class="sourceLineNo">1588</span>     * <a name="line.1588"></a>
<span class="sourceLineNo">1589</span>     * @param val The CharSequence to put in the IoBuffer<a name="line.1589"></a>
<span class="sourceLineNo">1590</span>     * @param fieldSize the maximum number of bytes to write<a name="line.1590"></a>
<span class="sourceLineNo">1591</span>     * @param encoder The CharsetEncoder to use<a name="line.1591"></a>
<span class="sourceLineNo">1592</span>     * @return The modified IoBuffer<a name="line.1592"></a>
<span class="sourceLineNo">1593</span>     * @throws CharacterCodingException When we have an error while decoding the String<a name="line.1593"></a>
<span class="sourceLineNo">1594</span>     */<a name="line.1594"></a>
<span class="sourceLineNo">1595</span>    public abstract IoBuffer putString(CharSequence val, int fieldSize, CharsetEncoder encoder)<a name="line.1595"></a>
<span class="sourceLineNo">1596</span>            throws CharacterCodingException;<a name="line.1596"></a>
<span class="sourceLineNo">1597</span><a name="line.1597"></a>
<span class="sourceLineNo">1598</span>    /**<a name="line.1598"></a>
<span class="sourceLineNo">1599</span>     * Reads a string which has a 16-bit length field before the actual encoded<a name="line.1599"></a>
<span class="sourceLineNo">1600</span>     * string, using the specified &lt;code&gt;decoder&lt;/code&gt; and returns it. This<a name="line.1600"></a>
<span class="sourceLineNo">1601</span>     * method is a shortcut for &lt;tt&gt;getPrefixedString(2, decoder)&lt;/tt&gt;.<a name="line.1601"></a>
<span class="sourceLineNo">1602</span>     * <a name="line.1602"></a>
<span class="sourceLineNo">1603</span>     * @param decoder The CharsetDecoder to use<a name="line.1603"></a>
<span class="sourceLineNo">1604</span>     * @return The read String<a name="line.1604"></a>
<span class="sourceLineNo">1605</span>     * <a name="line.1605"></a>
<span class="sourceLineNo">1606</span>     * @throws CharacterCodingException When we have an error while decoding the String<a name="line.1606"></a>
<span class="sourceLineNo">1607</span>     */<a name="line.1607"></a>
<span class="sourceLineNo">1608</span>    public abstract String getPrefixedString(CharsetDecoder decoder) throws CharacterCodingException;<a name="line.1608"></a>
<span class="sourceLineNo">1609</span><a name="line.1609"></a>
<span class="sourceLineNo">1610</span>    /**<a name="line.1610"></a>
<span class="sourceLineNo">1611</span>     * Reads a string which has a length field before the actual encoded string,<a name="line.1611"></a>
<span class="sourceLineNo">1612</span>     * using the specified &lt;code&gt;decoder&lt;/code&gt; and returns it.<a name="line.1612"></a>
<span class="sourceLineNo">1613</span>     * <a name="line.1613"></a>
<span class="sourceLineNo">1614</span>     * @param prefixLength the length of the length field (1, 2, or 4)<a name="line.1614"></a>
<span class="sourceLineNo">1615</span>     * @param decoder The CharsetDecoder to use<a name="line.1615"></a>
<span class="sourceLineNo">1616</span>     * @return The read String<a name="line.1616"></a>
<span class="sourceLineNo">1617</span>     * <a name="line.1617"></a>
<span class="sourceLineNo">1618</span>     * @throws CharacterCodingException When we have an error while decoding the String<a name="line.1618"></a>
<span class="sourceLineNo">1619</span>     */<a name="line.1619"></a>
<span class="sourceLineNo">1620</span>    public abstract String getPrefixedString(int prefixLength, CharsetDecoder decoder) throws CharacterCodingException;<a name="line.1620"></a>
<span class="sourceLineNo">1621</span><a name="line.1621"></a>
<span class="sourceLineNo">1622</span>    /**<a name="line.1622"></a>
<span class="sourceLineNo">1623</span>     * Writes the content of &lt;code&gt;in&lt;/code&gt; into this buffer as a string which<a name="line.1623"></a>
<span class="sourceLineNo">1624</span>     * has a 16-bit length field before the actual encoded string, using the<a name="line.1624"></a>
<span class="sourceLineNo">1625</span>     * specified &lt;code&gt;encoder&lt;/code&gt;. This method is a shortcut for<a name="line.1625"></a>
<span class="sourceLineNo">1626</span>     * &lt;tt&gt;putPrefixedString(in, 2, 0, encoder)&lt;/tt&gt;.<a name="line.1626"></a>
<span class="sourceLineNo">1627</span>     * <a name="line.1627"></a>
<span class="sourceLineNo">1628</span>     * @param in The CharSequence to put in the IoBuffer<a name="line.1628"></a>
<span class="sourceLineNo">1629</span>     * @param encoder The CharsetEncoder to use<a name="line.1629"></a>
<span class="sourceLineNo">1630</span>     * @return The modified IoBuffer<a name="line.1630"></a>
<span class="sourceLineNo">1631</span>     * <a name="line.1631"></a>
<span class="sourceLineNo">1632</span>     * @throws CharacterCodingException When we have an error while decoding the CharSequence<a name="line.1632"></a>
<span class="sourceLineNo">1633</span>     */<a name="line.1633"></a>
<span class="sourceLineNo">1634</span>    public abstract IoBuffer putPrefixedString(CharSequence in, CharsetEncoder encoder) throws CharacterCodingException;<a name="line.1634"></a>
<span class="sourceLineNo">1635</span><a name="line.1635"></a>
<span class="sourceLineNo">1636</span>    /**<a name="line.1636"></a>
<span class="sourceLineNo">1637</span>     * Writes the content of &lt;code&gt;in&lt;/code&gt; into this buffer as a string which<a name="line.1637"></a>
<span class="sourceLineNo">1638</span>     * has a 16-bit length field before the actual encoded string, using the<a name="line.1638"></a>
<span class="sourceLineNo">1639</span>     * specified &lt;code&gt;encoder&lt;/code&gt;. This method is a shortcut for<a name="line.1639"></a>
<span class="sourceLineNo">1640</span>     * &lt;tt&gt;putPrefixedString(in, prefixLength, 0, encoder)&lt;/tt&gt;.<a name="line.1640"></a>
<span class="sourceLineNo">1641</span>     * <a name="line.1641"></a>
<span class="sourceLineNo">1642</span>     * @param in The CharSequence to put in the IoBuffer<a name="line.1642"></a>
<span class="sourceLineNo">1643</span>     * @param prefixLength the length of the length field (1, 2, or 4)<a name="line.1643"></a>
<span class="sourceLineNo">1644</span>     * @param encoder The CharsetEncoder to use<a name="line.1644"></a>
<span class="sourceLineNo">1645</span>     * @return The modified IoBuffer<a name="line.1645"></a>
<span class="sourceLineNo">1646</span>     * <a name="line.1646"></a>
<span class="sourceLineNo">1647</span>     * @throws CharacterCodingException When we have an error while decoding the CharSequence<a name="line.1647"></a>
<span class="sourceLineNo">1648</span>     */<a name="line.1648"></a>
<span class="sourceLineNo">1649</span>    public abstract IoBuffer putPrefixedString(CharSequence in, int prefixLength, CharsetEncoder encoder)<a name="line.1649"></a>
<span class="sourceLineNo">1650</span>            throws CharacterCodingException;<a name="line.1650"></a>
<span class="sourceLineNo">1651</span><a name="line.1651"></a>
<span class="sourceLineNo">1652</span>    /**<a name="line.1652"></a>
<span class="sourceLineNo">1653</span>     * Writes the content of &lt;code&gt;in&lt;/code&gt; into this buffer as a string which<a name="line.1653"></a>
<span class="sourceLineNo">1654</span>     * has a 16-bit length field before the actual encoded string, using the<a name="line.1654"></a>
<span class="sourceLineNo">1655</span>     * specified &lt;code&gt;encoder&lt;/code&gt;. This method is a shortcut for<a name="line.1655"></a>
<span class="sourceLineNo">1656</span>     * &lt;tt&gt;putPrefixedString(in, prefixLength, padding, ( byte ) 0, encoder)&lt;/tt&gt;<a name="line.1656"></a>
<span class="sourceLineNo">1657</span>     * <a name="line.1657"></a>
<span class="sourceLineNo">1658</span>     * @param in The CharSequence to put in the IoBuffer<a name="line.1658"></a>
<span class="sourceLineNo">1659</span>     * @param prefixLength the length of the length field (1, 2, or 4)<a name="line.1659"></a>
<span class="sourceLineNo">1660</span>     * @param padding the number of padded &lt;tt&gt;NUL&lt;/tt&gt;s (1 (or 0), 2, or 4)<a name="line.1660"></a>
<span class="sourceLineNo">1661</span>     * @param encoder The CharsetEncoder to use<a name="line.1661"></a>
<span class="sourceLineNo">1662</span>     * @return The modified IoBuffer<a name="line.1662"></a>
<span class="sourceLineNo">1663</span>     * <a name="line.1663"></a>
<span class="sourceLineNo">1664</span>     * @throws CharacterCodingException When we have an error while decoding the CharSequence<a name="line.1664"></a>
<span class="sourceLineNo">1665</span>     */<a name="line.1665"></a>
<span class="sourceLineNo">1666</span>    public abstract IoBuffer putPrefixedString(CharSequence in, int prefixLength, int padding, CharsetEncoder encoder)<a name="line.1666"></a>
<span class="sourceLineNo">1667</span>            throws CharacterCodingException;<a name="line.1667"></a>
<span class="sourceLineNo">1668</span><a name="line.1668"></a>
<span class="sourceLineNo">1669</span>    /**<a name="line.1669"></a>
<span class="sourceLineNo">1670</span>     * Writes the content of &lt;code&gt;val&lt;/code&gt; into this buffer as a string which<a name="line.1670"></a>
<span class="sourceLineNo">1671</span>     * has a 16-bit length field before the actual encoded string, using the<a name="line.1671"></a>
<span class="sourceLineNo">1672</span>     * specified &lt;code&gt;encoder&lt;/code&gt;.<a name="line.1672"></a>
<span class="sourceLineNo">1673</span>     * <a name="line.1673"></a>
<span class="sourceLineNo">1674</span>     * @param val The CharSequence to put in teh IoBuffer<a name="line.1674"></a>
<span class="sourceLineNo">1675</span>     * @param prefixLength the length of the length field (1, 2, or 4)<a name="line.1675"></a>
<span class="sourceLineNo">1676</span>     * @param padding the number of padded bytes (1 (or 0), 2, or 4)<a name="line.1676"></a>
<span class="sourceLineNo">1677</span>     * @param padValue the value of padded bytes<a name="line.1677"></a>
<span class="sourceLineNo">1678</span>     * @param encoder The CharsetEncoder to use<a name="line.1678"></a>
<span class="sourceLineNo">1679</span>     * @return The modified IoBuffer<a name="line.1679"></a>
<span class="sourceLineNo">1680</span>     * @throws CharacterCodingException When we have an error while decoding the CharSequence<a name="line.1680"></a>
<span class="sourceLineNo">1681</span>     */<a name="line.1681"></a>
<span class="sourceLineNo">1682</span>    public abstract IoBuffer putPrefixedString(CharSequence val, int prefixLength, int padding, byte padValue,<a name="line.1682"></a>
<span class="sourceLineNo">1683</span>            CharsetEncoder encoder) throws CharacterCodingException;<a name="line.1683"></a>
<span class="sourceLineNo">1684</span><a name="line.1684"></a>
<span class="sourceLineNo">1685</span>    /**<a name="line.1685"></a>
<span class="sourceLineNo">1686</span>     * Reads a Java object from the buffer using the context {@link ClassLoader}<a name="line.1686"></a>
<span class="sourceLineNo">1687</span>     * of the current thread.<a name="line.1687"></a>
<span class="sourceLineNo">1688</span>     * <a name="line.1688"></a>
<span class="sourceLineNo">1689</span>     * @return The read Object<a name="line.1689"></a>
<span class="sourceLineNo">1690</span>     * @throws ClassNotFoundException thrown when we can't find the Class to use<a name="line.1690"></a>
<span class="sourceLineNo">1691</span>     */<a name="line.1691"></a>
<span class="sourceLineNo">1692</span>    public abstract Object getObject() throws ClassNotFoundException;<a name="line.1692"></a>
<span class="sourceLineNo">1693</span><a name="line.1693"></a>
<span class="sourceLineNo">1694</span>    /**<a name="line.1694"></a>
<span class="sourceLineNo">1695</span>     * Reads a Java object from the buffer using the specified<a name="line.1695"></a>
<span class="sourceLineNo">1696</span>     * &lt;tt&gt;classLoader&lt;/tt&gt;.<a name="line.1696"></a>
<span class="sourceLineNo">1697</span>     * <a name="line.1697"></a>
<span class="sourceLineNo">1698</span>     * @param classLoader The classLoader to use to read an Object from the IoBuffer<a name="line.1698"></a>
<span class="sourceLineNo">1699</span>     * @return The read Object<a name="line.1699"></a>
<span class="sourceLineNo">1700</span>     * @throws ClassNotFoundException thrown when we can't find the Class to use<a name="line.1700"></a>
<span class="sourceLineNo">1701</span>     */<a name="line.1701"></a>
<span class="sourceLineNo">1702</span>    public abstract Object getObject(final ClassLoader classLoader) throws ClassNotFoundException;<a name="line.1702"></a>
<span class="sourceLineNo">1703</span><a name="line.1703"></a>
<span class="sourceLineNo">1704</span>    /**<a name="line.1704"></a>
<span class="sourceLineNo">1705</span>     * Writes the specified Java object to the buffer.<a name="line.1705"></a>
<span class="sourceLineNo">1706</span>     * <a name="line.1706"></a>
<span class="sourceLineNo">1707</span>     * @param o The Object to write in the IoBuffer<a name="line.1707"></a>
<span class="sourceLineNo">1708</span>     * @return The modified IoBuffer<a name="line.1708"></a>
<span class="sourceLineNo">1709</span>     */<a name="line.1709"></a>
<span class="sourceLineNo">1710</span>    public abstract IoBuffer putObject(Object o);<a name="line.1710"></a>
<span class="sourceLineNo">1711</span><a name="line.1711"></a>
<span class="sourceLineNo">1712</span>    /**<a name="line.1712"></a>
<span class="sourceLineNo">1713</span>     * <a name="line.1713"></a>
<span class="sourceLineNo">1714</span>     * @param prefixLength the length of the prefix field (1, 2, or 4)<a name="line.1714"></a>
<span class="sourceLineNo">1715</span>     * @return &lt;tt&gt;true&lt;/tt&gt; if this buffer contains a data which has a data<a name="line.1715"></a>
<span class="sourceLineNo">1716</span>     * length as a prefix and the buffer has remaining data as enough as<a name="line.1716"></a>
<span class="sourceLineNo">1717</span>     * specified in the data length field. This method is identical with<a name="line.1717"></a>
<span class="sourceLineNo">1718</span>     * &lt;tt&gt;prefixedDataAvailable( prefixLength, Integer.MAX_VALUE )&lt;/tt&gt;. Please<a name="line.1718"></a>
<span class="sourceLineNo">1719</span>     * not that using this method can allow DoS (Denial of Service) attack in<a name="line.1719"></a>
<span class="sourceLineNo">1720</span>     * case the remote peer sends too big data length value. It is recommended<a name="line.1720"></a>
<span class="sourceLineNo">1721</span>     * to use {@link #prefixedDataAvailable(int, int)} instead.<a name="line.1721"></a>
<span class="sourceLineNo">1722</span>     * @throws IllegalArgumentException if prefixLength is wrong<a name="line.1722"></a>
<span class="sourceLineNo">1723</span>     * @throws BufferDataException if data length is negative<a name="line.1723"></a>
<span class="sourceLineNo">1724</span>     */<a name="line.1724"></a>
<span class="sourceLineNo">1725</span>    public abstract boolean prefixedDataAvailable(int prefixLength);<a name="line.1725"></a>
<span class="sourceLineNo">1726</span><a name="line.1726"></a>
<span class="sourceLineNo">1727</span>    /**<a name="line.1727"></a>
<span class="sourceLineNo">1728</span>     * @param prefixLength the length of the prefix field (1, 2, or 4)<a name="line.1728"></a>
<span class="sourceLineNo">1729</span>     * @param maxDataLength the allowed maximum of the read data length<a name="line.1729"></a>
<span class="sourceLineNo">1730</span>     * @return &lt;tt&gt;true&lt;/tt&gt; if this buffer contains a data which has a data<a name="line.1730"></a>
<span class="sourceLineNo">1731</span>     * length as a prefix and the buffer has remaining data as enough as<a name="line.1731"></a>
<span class="sourceLineNo">1732</span>     * specified in the data length field.<a name="line.1732"></a>
<span class="sourceLineNo">1733</span>     * @throws IllegalArgumentException<a name="line.1733"></a>
<span class="sourceLineNo">1734</span>     *             if prefixLength is wrong<a name="line.1734"></a>
<span class="sourceLineNo">1735</span>     * @throws BufferDataException<a name="line.1735"></a>
<span class="sourceLineNo">1736</span>     *             if data length is negative or greater then<a name="line.1736"></a>
<span class="sourceLineNo">1737</span>     *             &lt;tt&gt;maxDataLength&lt;/tt&gt;<a name="line.1737"></a>
<span class="sourceLineNo">1738</span>     */<a name="line.1738"></a>
<span class="sourceLineNo">1739</span>    public abstract boolean prefixedDataAvailable(int prefixLength, int maxDataLength);<a name="line.1739"></a>
<span class="sourceLineNo">1740</span><a name="line.1740"></a>
<span class="sourceLineNo">1741</span>    // ///////////////////<a name="line.1741"></a>
<span class="sourceLineNo">1742</span>    // IndexOf methods //<a name="line.1742"></a>
<span class="sourceLineNo">1743</span>    // ///////////////////<a name="line.1743"></a>
<span class="sourceLineNo">1744</span><a name="line.1744"></a>
<span class="sourceLineNo">1745</span>    /**<a name="line.1745"></a>
<span class="sourceLineNo">1746</span>     * Returns the first occurrence position of the specified byte from the<a name="line.1746"></a>
<span class="sourceLineNo">1747</span>     * current position to the current limit.<a name="line.1747"></a>
<span class="sourceLineNo">1748</span>     *<a name="line.1748"></a>
<span class="sourceLineNo">1749</span>     * @param b The byte we are looking for<a name="line.1749"></a>
<span class="sourceLineNo">1750</span>     * @return &lt;tt&gt;-1&lt;/tt&gt; if the specified byte is not found<a name="line.1750"></a>
<span class="sourceLineNo">1751</span>     */<a name="line.1751"></a>
<span class="sourceLineNo">1752</span>    public abstract int indexOf(byte b);<a name="line.1752"></a>
<span class="sourceLineNo">1753</span><a name="line.1753"></a>
<span class="sourceLineNo">1754</span>    // ////////////////////////<a name="line.1754"></a>
<span class="sourceLineNo">1755</span>    // Skip or fill methods //<a name="line.1755"></a>
<span class="sourceLineNo">1756</span>    // ////////////////////////<a name="line.1756"></a>
<span class="sourceLineNo">1757</span><a name="line.1757"></a>
<span class="sourceLineNo">1758</span>    /**<a name="line.1758"></a>
<span class="sourceLineNo">1759</span>     * Forwards the position of this buffer as the specified &lt;code&gt;size&lt;/code&gt;<a name="line.1759"></a>
<span class="sourceLineNo">1760</span>     * bytes.<a name="line.1760"></a>
<span class="sourceLineNo">1761</span>     * <a name="line.1761"></a>
<span class="sourceLineNo">1762</span>     * @param size The added size<a name="line.1762"></a>
<span class="sourceLineNo">1763</span>     * @return The modified IoBuffer<a name="line.1763"></a>
<span class="sourceLineNo">1764</span>     */<a name="line.1764"></a>
<span class="sourceLineNo">1765</span>    public abstract IoBuffer skip(int size);<a name="line.1765"></a>
<span class="sourceLineNo">1766</span><a name="line.1766"></a>
<span class="sourceLineNo">1767</span>    /**<a name="line.1767"></a>
<span class="sourceLineNo">1768</span>     * Fills this buffer with the specified value. This method moves buffer<a name="line.1768"></a>
<span class="sourceLineNo">1769</span>     * position forward.<a name="line.1769"></a>
<span class="sourceLineNo">1770</span>     * <a name="line.1770"></a>
<span class="sourceLineNo">1771</span>     * @param value The value to fill the IoBuffer with<a name="line.1771"></a>
<span class="sourceLineNo">1772</span>     * @param size The added size<a name="line.1772"></a>
<span class="sourceLineNo">1773</span>     * @return The modified IoBuffer<a name="line.1773"></a>
<span class="sourceLineNo">1774</span>     */<a name="line.1774"></a>
<span class="sourceLineNo">1775</span>    public abstract IoBuffer fill(byte value, int size);<a name="line.1775"></a>
<span class="sourceLineNo">1776</span><a name="line.1776"></a>
<span class="sourceLineNo">1777</span>    /**<a name="line.1777"></a>
<span class="sourceLineNo">1778</span>     * Fills this buffer with the specified value. This method does not change<a name="line.1778"></a>
<span class="sourceLineNo">1779</span>     * buffer position.<a name="line.1779"></a>
<span class="sourceLineNo">1780</span>     *<a name="line.1780"></a>
<span class="sourceLineNo">1781</span>     * @param value The value to fill the IoBuffer with<a name="line.1781"></a>
<span class="sourceLineNo">1782</span>     * @param size The added size<a name="line.1782"></a>
<span class="sourceLineNo">1783</span>     * @return The modified IoBuffer<a name="line.1783"></a>
<span class="sourceLineNo">1784</span>     */<a name="line.1784"></a>
<span class="sourceLineNo">1785</span>    public abstract IoBuffer fillAndReset(byte value, int size);<a name="line.1785"></a>
<span class="sourceLineNo">1786</span><a name="line.1786"></a>
<span class="sourceLineNo">1787</span>    /**<a name="line.1787"></a>
<span class="sourceLineNo">1788</span>     * Fills this buffer with &lt;code&gt;NUL (0x00)&lt;/code&gt;. This method moves buffer<a name="line.1788"></a>
<span class="sourceLineNo">1789</span>     * position forward.<a name="line.1789"></a>
<span class="sourceLineNo">1790</span>     * <a name="line.1790"></a>
<span class="sourceLineNo">1791</span>     * @param size The added size<a name="line.1791"></a>
<span class="sourceLineNo">1792</span>     * @return The modified IoBuffer<a name="line.1792"></a>
<span class="sourceLineNo">1793</span>     */<a name="line.1793"></a>
<span class="sourceLineNo">1794</span>    public abstract IoBuffer fill(int size);<a name="line.1794"></a>
<span class="sourceLineNo">1795</span><a name="line.1795"></a>
<span class="sourceLineNo">1796</span>    /**<a name="line.1796"></a>
<span class="sourceLineNo">1797</span>     * Fills this buffer with &lt;code&gt;NUL (0x00)&lt;/code&gt;. This method does not<a name="line.1797"></a>
<span class="sourceLineNo">1798</span>     * change buffer position.<a name="line.1798"></a>
<span class="sourceLineNo">1799</span>     * <a name="line.1799"></a>
<span class="sourceLineNo">1800</span>     * @param size The added size<a name="line.1800"></a>
<span class="sourceLineNo">1801</span>     * @return The modified IoBuffer<a name="line.1801"></a>
<span class="sourceLineNo">1802</span>     */<a name="line.1802"></a>
<span class="sourceLineNo">1803</span>    public abstract IoBuffer fillAndReset(int size);<a name="line.1803"></a>
<span class="sourceLineNo">1804</span><a name="line.1804"></a>
<span class="sourceLineNo">1805</span>    // ////////////////////////<a name="line.1805"></a>
<span class="sourceLineNo">1806</span>    // Enum methods //<a name="line.1806"></a>
<span class="sourceLineNo">1807</span>    // ////////////////////////<a name="line.1807"></a>
<span class="sourceLineNo">1808</span><a name="line.1808"></a>
<span class="sourceLineNo">1809</span>    /**<a name="line.1809"></a>
<span class="sourceLineNo">1810</span>     * Reads a byte from the buffer and returns the correlating enum constant<a name="line.1810"></a>
<span class="sourceLineNo">1811</span>     * defined by the specified enum type.<a name="line.1811"></a>
<span class="sourceLineNo">1812</span>     * <a name="line.1812"></a>
<span class="sourceLineNo">1813</span>     * @param &lt;E&gt; The enum type to return<a name="line.1813"></a>
<span class="sourceLineNo">1814</span>     * @param enumClass The enum's class object<a name="line.1814"></a>
<span class="sourceLineNo">1815</span>     * @return The correlated enum constant<a name="line.1815"></a>
<span class="sourceLineNo">1816</span>     */<a name="line.1816"></a>
<span class="sourceLineNo">1817</span>    public abstract &lt;E extends Enum&lt;E&gt;&gt; E getEnum(Class&lt;E&gt; enumClass);<a name="line.1817"></a>
<span class="sourceLineNo">1818</span><a name="line.1818"></a>
<span class="sourceLineNo">1819</span>    /**<a name="line.1819"></a>
<span class="sourceLineNo">1820</span>     * Reads a byte from the buffer and returns the correlating enum constant<a name="line.1820"></a>
<span class="sourceLineNo">1821</span>     * defined by the specified enum type.<a name="line.1821"></a>
<span class="sourceLineNo">1822</span>     * <a name="line.1822"></a>
<span class="sourceLineNo">1823</span>     * @param &lt;E&gt; The enum type to return<a name="line.1823"></a>
<span class="sourceLineNo">1824</span>     * @param index the index from which the byte will be read<a name="line.1824"></a>
<span class="sourceLineNo">1825</span>     * @param enumClass The enum's class object<a name="line.1825"></a>
<span class="sourceLineNo">1826</span>     * @return The correlated enum constant<a name="line.1826"></a>
<span class="sourceLineNo">1827</span>     */<a name="line.1827"></a>
<span class="sourceLineNo">1828</span>    public abstract &lt;E extends Enum&lt;E&gt;&gt; E getEnum(int index, Class&lt;E&gt; enumClass);<a name="line.1828"></a>
<span class="sourceLineNo">1829</span><a name="line.1829"></a>
<span class="sourceLineNo">1830</span>    /**<a name="line.1830"></a>
<span class="sourceLineNo">1831</span>     * Reads a short from the buffer and returns the correlating enum constant<a name="line.1831"></a>
<span class="sourceLineNo">1832</span>     * defined by the specified enum type.<a name="line.1832"></a>
<span class="sourceLineNo">1833</span>     * <a name="line.1833"></a>
<span class="sourceLineNo">1834</span>     * @param &lt;E&gt; The enum type to return<a name="line.1834"></a>
<span class="sourceLineNo">1835</span>     * @param enumClass The enum's class object<a name="line.1835"></a>
<span class="sourceLineNo">1836</span>     * @return The correlated enum constant<a name="line.1836"></a>
<span class="sourceLineNo">1837</span>     */<a name="line.1837"></a>
<span class="sourceLineNo">1838</span>    public abstract &lt;E extends Enum&lt;E&gt;&gt; E getEnumShort(Class&lt;E&gt; enumClass);<a name="line.1838"></a>
<span class="sourceLineNo">1839</span><a name="line.1839"></a>
<span class="sourceLineNo">1840</span>    /**<a name="line.1840"></a>
<span class="sourceLineNo">1841</span>     * Reads a short from the buffer and returns the correlating enum constant<a name="line.1841"></a>
<span class="sourceLineNo">1842</span>     * defined by the specified enum type.<a name="line.1842"></a>
<span class="sourceLineNo">1843</span>     * <a name="line.1843"></a>
<span class="sourceLineNo">1844</span>     * @param &lt;E&gt; The enum type to return<a name="line.1844"></a>
<span class="sourceLineNo">1845</span>     * @param index the index from which the bytes will be read<a name="line.1845"></a>
<span class="sourceLineNo">1846</span>     * @param enumClass The enum's class object<a name="line.1846"></a>
<span class="sourceLineNo">1847</span>     * @return The correlated enum constant<a name="line.1847"></a>
<span class="sourceLineNo">1848</span>     */<a name="line.1848"></a>
<span class="sourceLineNo">1849</span>    public abstract &lt;E extends Enum&lt;E&gt;&gt; E getEnumShort(int index, Class&lt;E&gt; enumClass);<a name="line.1849"></a>
<span class="sourceLineNo">1850</span><a name="line.1850"></a>
<span class="sourceLineNo">1851</span>    /**<a name="line.1851"></a>
<span class="sourceLineNo">1852</span>     * Reads an int from the buffer and returns the correlating enum constant<a name="line.1852"></a>
<span class="sourceLineNo">1853</span>     * defined by the specified enum type.<a name="line.1853"></a>
<span class="sourceLineNo">1854</span>     * <a name="line.1854"></a>
<span class="sourceLineNo">1855</span>     * @param &lt;E&gt; The enum type to return<a name="line.1855"></a>
<span class="sourceLineNo">1856</span>     * @param enumClass The enum's class object<a name="line.1856"></a>
<span class="sourceLineNo">1857</span>     * @return The correlated enum constant<a name="line.1857"></a>
<span class="sourceLineNo">1858</span>     */<a name="line.1858"></a>
<span class="sourceLineNo">1859</span>    public abstract &lt;E extends Enum&lt;E&gt;&gt; E getEnumInt(Class&lt;E&gt; enumClass);<a name="line.1859"></a>
<span class="sourceLineNo">1860</span><a name="line.1860"></a>
<span class="sourceLineNo">1861</span>    /**<a name="line.1861"></a>
<span class="sourceLineNo">1862</span>     * Reads an int from the buffer and returns the correlating enum constant<a name="line.1862"></a>
<span class="sourceLineNo">1863</span>     * defined by the specified enum type.<a name="line.1863"></a>
<span class="sourceLineNo">1864</span>     * <a name="line.1864"></a>
<span class="sourceLineNo">1865</span>     * @param &lt;E&gt; The enum type to return<a name="line.1865"></a>
<span class="sourceLineNo">1866</span>     * @param index the index from which the bytes will be read<a name="line.1866"></a>
<span class="sourceLineNo">1867</span>     * @param enumClass The enum's class object<a name="line.1867"></a>
<span class="sourceLineNo">1868</span>     * @return The correlated enum constant<a name="line.1868"></a>
<span class="sourceLineNo">1869</span>     */<a name="line.1869"></a>
<span class="sourceLineNo">1870</span>    public abstract &lt;E extends Enum&lt;E&gt;&gt; E getEnumInt(int index, Class&lt;E&gt; enumClass);<a name="line.1870"></a>
<span class="sourceLineNo">1871</span><a name="line.1871"></a>
<span class="sourceLineNo">1872</span>    /**<a name="line.1872"></a>
<span class="sourceLineNo">1873</span>     * Writes an enum's ordinal value to the buffer as a byte.<a name="line.1873"></a>
<span class="sourceLineNo">1874</span>     * <a name="line.1874"></a>
<span class="sourceLineNo">1875</span>     * @param e The enum to write to the buffer<a name="line.1875"></a>
<span class="sourceLineNo">1876</span>     * @return The modified IoBuffer<a name="line.1876"></a>
<span class="sourceLineNo">1877</span>     */<a name="line.1877"></a>
<span class="sourceLineNo">1878</span>    public abstract IoBuffer putEnum(Enum&lt;?&gt; e);<a name="line.1878"></a>
<span class="sourceLineNo">1879</span><a name="line.1879"></a>
<span class="sourceLineNo">1880</span>    /**<a name="line.1880"></a>
<span class="sourceLineNo">1881</span>     * Writes an enum's ordinal value to the buffer as a byte.<a name="line.1881"></a>
<span class="sourceLineNo">1882</span>     * <a name="line.1882"></a>
<span class="sourceLineNo">1883</span>     * @param index The index at which the byte will be written<a name="line.1883"></a>
<span class="sourceLineNo">1884</span>     * @param e The enum to write to the buffer<a name="line.1884"></a>
<span class="sourceLineNo">1885</span>     * @return The modified IoBuffer<a name="line.1885"></a>
<span class="sourceLineNo">1886</span>     */<a name="line.1886"></a>
<span class="sourceLineNo">1887</span>    public abstract IoBuffer putEnum(int index, Enum&lt;?&gt; e);<a name="line.1887"></a>
<span class="sourceLineNo">1888</span><a name="line.1888"></a>
<span class="sourceLineNo">1889</span>    /**<a name="line.1889"></a>
<span class="sourceLineNo">1890</span>     * Writes an enum's ordinal value to the buffer as a short.<a name="line.1890"></a>
<span class="sourceLineNo">1891</span>     * <a name="line.1891"></a>
<span class="sourceLineNo">1892</span>     * @param e The enum to write to the buffer<a name="line.1892"></a>
<span class="sourceLineNo">1893</span>     * @return The modified IoBuffer<a name="line.1893"></a>
<span class="sourceLineNo">1894</span>     */<a name="line.1894"></a>
<span class="sourceLineNo">1895</span>    public abstract IoBuffer putEnumShort(Enum&lt;?&gt; e);<a name="line.1895"></a>
<span class="sourceLineNo">1896</span><a name="line.1896"></a>
<span class="sourceLineNo">1897</span>    /**<a name="line.1897"></a>
<span class="sourceLineNo">1898</span>     * Writes an enum's ordinal value to the buffer as a short.<a name="line.1898"></a>
<span class="sourceLineNo">1899</span>     * <a name="line.1899"></a>
<span class="sourceLineNo">1900</span>     * @param index The index at which the bytes will be written<a name="line.1900"></a>
<span class="sourceLineNo">1901</span>     * @param e The enum to write to the buffer<a name="line.1901"></a>
<span class="sourceLineNo">1902</span>     * @return The modified IoBuffer<a name="line.1902"></a>
<span class="sourceLineNo">1903</span>     */<a name="line.1903"></a>
<span class="sourceLineNo">1904</span>    public abstract IoBuffer putEnumShort(int index, Enum&lt;?&gt; e);<a name="line.1904"></a>
<span class="sourceLineNo">1905</span><a name="line.1905"></a>
<span class="sourceLineNo">1906</span>    /**<a name="line.1906"></a>
<span class="sourceLineNo">1907</span>     * Writes an enum's ordinal value to the buffer as an integer.<a name="line.1907"></a>
<span class="sourceLineNo">1908</span>     * <a name="line.1908"></a>
<span class="sourceLineNo">1909</span>     * @param e The enum to write to the buffer<a name="line.1909"></a>
<span class="sourceLineNo">1910</span>     * @return The modified IoBuffer<a name="line.1910"></a>
<span class="sourceLineNo">1911</span>     */<a name="line.1911"></a>
<span class="sourceLineNo">1912</span>    public abstract IoBuffer putEnumInt(Enum&lt;?&gt; e);<a name="line.1912"></a>
<span class="sourceLineNo">1913</span><a name="line.1913"></a>
<span class="sourceLineNo">1914</span>    /**<a name="line.1914"></a>
<span class="sourceLineNo">1915</span>     * Writes an enum's ordinal value to the buffer as an integer.<a name="line.1915"></a>
<span class="sourceLineNo">1916</span>     * <a name="line.1916"></a>
<span class="sourceLineNo">1917</span>     * @param index The index at which the bytes will be written<a name="line.1917"></a>
<span class="sourceLineNo">1918</span>     * @param e The enum to write to the buffer<a name="line.1918"></a>
<span class="sourceLineNo">1919</span>     * @return The modified IoBuffer<a name="line.1919"></a>
<span class="sourceLineNo">1920</span>     */<a name="line.1920"></a>
<span class="sourceLineNo">1921</span>    public abstract IoBuffer putEnumInt(int index, Enum&lt;?&gt; e);<a name="line.1921"></a>
<span class="sourceLineNo">1922</span><a name="line.1922"></a>
<span class="sourceLineNo">1923</span>    // ////////////////////////<a name="line.1923"></a>
<span class="sourceLineNo">1924</span>    // EnumSet methods //<a name="line.1924"></a>
<span class="sourceLineNo">1925</span>    // ////////////////////////<a name="line.1925"></a>
<span class="sourceLineNo">1926</span><a name="line.1926"></a>
<span class="sourceLineNo">1927</span>    /**<a name="line.1927"></a>
<span class="sourceLineNo">1928</span>     * Reads a byte sized bit vector and converts it to an {@link EnumSet}.<a name="line.1928"></a>
<span class="sourceLineNo">1929</span>     * <a name="line.1929"></a>
<span class="sourceLineNo">1930</span>     * &lt;p&gt;<a name="line.1930"></a>
<span class="sourceLineNo">1931</span>     * Each bit is mapped to a value in the specified enum. The least<a name="line.1931"></a>
<span class="sourceLineNo">1932</span>     * significant bit maps to the first entry in the specified enum and each<a name="line.1932"></a>
<span class="sourceLineNo">1933</span>     * subsequent bit maps to each subsequent bit as mapped to the subsequent<a name="line.1933"></a>
<span class="sourceLineNo">1934</span>     * enum value.<a name="line.1934"></a>
<span class="sourceLineNo">1935</span>     * <a name="line.1935"></a>
<span class="sourceLineNo">1936</span>     * @param &lt;E&gt; the enum type<a name="line.1936"></a>
<span class="sourceLineNo">1937</span>     * @param enumClass the enum class used to create the EnumSet<a name="line.1937"></a>
<span class="sourceLineNo">1938</span>     * @return the EnumSet representation of the bit vector<a name="line.1938"></a>
<span class="sourceLineNo">1939</span>     */<a name="line.1939"></a>
<span class="sourceLineNo">1940</span>    public abstract &lt;E extends Enum&lt;E&gt;&gt; EnumSet&lt;E&gt; getEnumSet(Class&lt;E&gt; enumClass);<a name="line.1940"></a>
<span class="sourceLineNo">1941</span><a name="line.1941"></a>
<span class="sourceLineNo">1942</span>    /**<a name="line.1942"></a>
<span class="sourceLineNo">1943</span>     * Reads a byte sized bit vector and converts it to an {@link EnumSet}.<a name="line.1943"></a>
<span class="sourceLineNo">1944</span>     * <a name="line.1944"></a>
<span class="sourceLineNo">1945</span>     * @see #getEnumSet(Class)<a name="line.1945"></a>
<span class="sourceLineNo">1946</span>     * @param &lt;E&gt; the enum type<a name="line.1946"></a>
<span class="sourceLineNo">1947</span>     * @param index the index from which the byte will be read<a name="line.1947"></a>
<span class="sourceLineNo">1948</span>     * @param enumClass the enum class used to create the EnumSet<a name="line.1948"></a>
<span class="sourceLineNo">1949</span>     * @return the EnumSet representation of the bit vector<a name="line.1949"></a>
<span class="sourceLineNo">1950</span>     */<a name="line.1950"></a>
<span class="sourceLineNo">1951</span>    public abstract &lt;E extends Enum&lt;E&gt;&gt; EnumSet&lt;E&gt; getEnumSet(int index, Class&lt;E&gt; enumClass);<a name="line.1951"></a>
<span class="sourceLineNo">1952</span><a name="line.1952"></a>
<span class="sourceLineNo">1953</span>    /**<a name="line.1953"></a>
<span class="sourceLineNo">1954</span>     * Reads a short sized bit vector and converts it to an {@link EnumSet}.<a name="line.1954"></a>
<span class="sourceLineNo">1955</span>     * <a name="line.1955"></a>
<span class="sourceLineNo">1956</span>     * @see #getEnumSet(Class)<a name="line.1956"></a>
<span class="sourceLineNo">1957</span>     * @param &lt;E&gt; the enum type<a name="line.1957"></a>
<span class="sourceLineNo">1958</span>     * @param enumClass the enum class used to create the EnumSet<a name="line.1958"></a>
<span class="sourceLineNo">1959</span>     * @return the EnumSet representation of the bit vector<a name="line.1959"></a>
<span class="sourceLineNo">1960</span>     */<a name="line.1960"></a>
<span class="sourceLineNo">1961</span>    public abstract &lt;E extends Enum&lt;E&gt;&gt; EnumSet&lt;E&gt; getEnumSetShort(Class&lt;E&gt; enumClass);<a name="line.1961"></a>
<span class="sourceLineNo">1962</span><a name="line.1962"></a>
<span class="sourceLineNo">1963</span>    /**<a name="line.1963"></a>
<span class="sourceLineNo">1964</span>     * Reads a short sized bit vector and converts it to an {@link EnumSet}.<a name="line.1964"></a>
<span class="sourceLineNo">1965</span>     * <a name="line.1965"></a>
<span class="sourceLineNo">1966</span>     * @see #getEnumSet(Class)<a name="line.1966"></a>
<span class="sourceLineNo">1967</span>     * @param &lt;E&gt; the enum type<a name="line.1967"></a>
<span class="sourceLineNo">1968</span>     * @param index the index from which the bytes will be read<a name="line.1968"></a>
<span class="sourceLineNo">1969</span>     * @param enumClass the enum class used to create the EnumSet<a name="line.1969"></a>
<span class="sourceLineNo">1970</span>     * @return the EnumSet representation of the bit vector<a name="line.1970"></a>
<span class="sourceLineNo">1971</span>     */<a name="line.1971"></a>
<span class="sourceLineNo">1972</span>    public abstract &lt;E extends Enum&lt;E&gt;&gt; EnumSet&lt;E&gt; getEnumSetShort(int index, Class&lt;E&gt; enumClass);<a name="line.1972"></a>
<span class="sourceLineNo">1973</span><a name="line.1973"></a>
<span class="sourceLineNo">1974</span>    /**<a name="line.1974"></a>
<span class="sourceLineNo">1975</span>     * Reads an int sized bit vector and converts it to an {@link EnumSet}.<a name="line.1975"></a>
<span class="sourceLineNo">1976</span>     * <a name="line.1976"></a>
<span class="sourceLineNo">1977</span>     * @see #getEnumSet(Class)<a name="line.1977"></a>
<span class="sourceLineNo">1978</span>     * @param &lt;E&gt; the enum type<a name="line.1978"></a>
<span class="sourceLineNo">1979</span>     * @param enumClass the enum class used to create the EnumSet<a name="line.1979"></a>
<span class="sourceLineNo">1980</span>     * @return the EnumSet representation of the bit vector<a name="line.1980"></a>
<span class="sourceLineNo">1981</span>     */<a name="line.1981"></a>
<span class="sourceLineNo">1982</span>    public abstract &lt;E extends Enum&lt;E&gt;&gt; EnumSet&lt;E&gt; getEnumSetInt(Class&lt;E&gt; enumClass);<a name="line.1982"></a>
<span class="sourceLineNo">1983</span><a name="line.1983"></a>
<span class="sourceLineNo">1984</span>    /**<a name="line.1984"></a>
<span class="sourceLineNo">1985</span>     * Reads an int sized bit vector and converts it to an {@link EnumSet}.<a name="line.1985"></a>
<span class="sourceLineNo">1986</span>     * <a name="line.1986"></a>
<span class="sourceLineNo">1987</span>     * @see #getEnumSet(Class)<a name="line.1987"></a>
<span class="sourceLineNo">1988</span>     * @param &lt;E&gt; the enum type<a name="line.1988"></a>
<span class="sourceLineNo">1989</span>     * @param index the index from which the bytes will be read<a name="line.1989"></a>
<span class="sourceLineNo">1990</span>     * @param enumClass the enum class used to create the EnumSet<a name="line.1990"></a>
<span class="sourceLineNo">1991</span>     * @return the EnumSet representation of the bit vector<a name="line.1991"></a>
<span class="sourceLineNo">1992</span>     */<a name="line.1992"></a>
<span class="sourceLineNo">1993</span>    public abstract &lt;E extends Enum&lt;E&gt;&gt; EnumSet&lt;E&gt; getEnumSetInt(int index, Class&lt;E&gt; enumClass);<a name="line.1993"></a>
<span class="sourceLineNo">1994</span><a name="line.1994"></a>
<span class="sourceLineNo">1995</span>    /**<a name="line.1995"></a>
<span class="sourceLineNo">1996</span>     * Reads a long sized bit vector and converts it to an {@link EnumSet}.<a name="line.1996"></a>
<span class="sourceLineNo">1997</span>     * <a name="line.1997"></a>
<span class="sourceLineNo">1998</span>     * @see #getEnumSet(Class)<a name="line.1998"></a>
<span class="sourceLineNo">1999</span>     * @param &lt;E&gt; the enum type<a name="line.1999"></a>
<span class="sourceLineNo">2000</span>     * @param enumClass the enum class used to create the EnumSet<a name="line.2000"></a>
<span class="sourceLineNo">2001</span>     * @return the EnumSet representation of the bit vector<a name="line.2001"></a>
<span class="sourceLineNo">2002</span>     */<a name="line.2002"></a>
<span class="sourceLineNo">2003</span>    public abstract &lt;E extends Enum&lt;E&gt;&gt; EnumSet&lt;E&gt; getEnumSetLong(Class&lt;E&gt; enumClass);<a name="line.2003"></a>
<span class="sourceLineNo">2004</span><a name="line.2004"></a>
<span class="sourceLineNo">2005</span>    /**<a name="line.2005"></a>
<span class="sourceLineNo">2006</span>     * Reads a long sized bit vector and converts it to an {@link EnumSet}.<a name="line.2006"></a>
<span class="sourceLineNo">2007</span>     * <a name="line.2007"></a>
<span class="sourceLineNo">2008</span>     * @see #getEnumSet(Class)<a name="line.2008"></a>
<span class="sourceLineNo">2009</span>     * @param &lt;E&gt; the enum type<a name="line.2009"></a>
<span class="sourceLineNo">2010</span>     * @param index the index from which the bytes will be read<a name="line.2010"></a>
<span class="sourceLineNo">2011</span>     * @param enumClass the enum class used to create the EnumSet<a name="line.2011"></a>
<span class="sourceLineNo">2012</span>     * @return the EnumSet representation of the bit vector<a name="line.2012"></a>
<span class="sourceLineNo">2013</span>     */<a name="line.2013"></a>
<span class="sourceLineNo">2014</span>    public abstract &lt;E extends Enum&lt;E&gt;&gt; EnumSet&lt;E&gt; getEnumSetLong(int index, Class&lt;E&gt; enumClass);<a name="line.2014"></a>
<span class="sourceLineNo">2015</span><a name="line.2015"></a>
<span class="sourceLineNo">2016</span>    /**<a name="line.2016"></a>
<span class="sourceLineNo">2017</span>     * Writes the specified {@link Set} to the buffer as a byte sized bit<a name="line.2017"></a>
<span class="sourceLineNo">2018</span>     * vector.<a name="line.2018"></a>
<span class="sourceLineNo">2019</span>     * <a name="line.2019"></a>
<span class="sourceLineNo">2020</span>     * @param &lt;E&gt; the enum type of the Set<a name="line.2020"></a>
<span class="sourceLineNo">2021</span>     * @param set the enum set to write to the buffer<a name="line.2021"></a>
<span class="sourceLineNo">2022</span>     * @return the modified IoBuffer<a name="line.2022"></a>
<span class="sourceLineNo">2023</span>     */<a name="line.2023"></a>
<span class="sourceLineNo">2024</span>    public abstract &lt;E extends Enum&lt;E&gt;&gt; IoBuffer putEnumSet(Set&lt;E&gt; set);<a name="line.2024"></a>
<span class="sourceLineNo">2025</span><a name="line.2025"></a>
<span class="sourceLineNo">2026</span>    /**<a name="line.2026"></a>
<span class="sourceLineNo">2027</span>     * Writes the specified {@link Set} to the buffer as a byte sized bit<a name="line.2027"></a>
<span class="sourceLineNo">2028</span>     * vector.<a name="line.2028"></a>
<span class="sourceLineNo">2029</span>     * <a name="line.2029"></a>
<span class="sourceLineNo">2030</span>     * @param &lt;E&gt; the enum type of the Set<a name="line.2030"></a>
<span class="sourceLineNo">2031</span>     * @param index the index at which the byte will be written<a name="line.2031"></a>
<span class="sourceLineNo">2032</span>     * @param set the enum set to write to the buffer<a name="line.2032"></a>
<span class="sourceLineNo">2033</span>     * @return the modified IoBuffer<a name="line.2033"></a>
<span class="sourceLineNo">2034</span>     */<a name="line.2034"></a>
<span class="sourceLineNo">2035</span>    public abstract &lt;E extends Enum&lt;E&gt;&gt; IoBuffer putEnumSet(int index, Set&lt;E&gt; set);<a name="line.2035"></a>
<span class="sourceLineNo">2036</span><a name="line.2036"></a>
<span class="sourceLineNo">2037</span>    /**<a name="line.2037"></a>
<span class="sourceLineNo">2038</span>     * Writes the specified {@link Set} to the buffer as a short sized bit<a name="line.2038"></a>
<span class="sourceLineNo">2039</span>     * vector.<a name="line.2039"></a>
<span class="sourceLineNo">2040</span>     * <a name="line.2040"></a>
<span class="sourceLineNo">2041</span>     * @param &lt;E&gt; the enum type of the Set<a name="line.2041"></a>
<span class="sourceLineNo">2042</span>     * @param set the enum set to write to the buffer<a name="line.2042"></a>
<span class="sourceLineNo">2043</span>     * @return the modified IoBuffer<a name="line.2043"></a>
<span class="sourceLineNo">2044</span>     */<a name="line.2044"></a>
<span class="sourceLineNo">2045</span>    public abstract &lt;E extends Enum&lt;E&gt;&gt; IoBuffer putEnumSetShort(Set&lt;E&gt; set);<a name="line.2045"></a>
<span class="sourceLineNo">2046</span><a name="line.2046"></a>
<span class="sourceLineNo">2047</span>    /**<a name="line.2047"></a>
<span class="sourceLineNo">2048</span>     * Writes the specified {@link Set} to the buffer as a short sized bit<a name="line.2048"></a>
<span class="sourceLineNo">2049</span>     * vector.<a name="line.2049"></a>
<span class="sourceLineNo">2050</span>     * <a name="line.2050"></a>
<span class="sourceLineNo">2051</span>     * @param &lt;E&gt; the enum type of the Set<a name="line.2051"></a>
<span class="sourceLineNo">2052</span>     * @param index the index at which the bytes will be written<a name="line.2052"></a>
<span class="sourceLineNo">2053</span>     * @param set the enum set to write to the buffer<a name="line.2053"></a>
<span class="sourceLineNo">2054</span>     * @return the modified IoBuffer<a name="line.2054"></a>
<span class="sourceLineNo">2055</span>     */<a name="line.2055"></a>
<span class="sourceLineNo">2056</span>    public abstract &lt;E extends Enum&lt;E&gt;&gt; IoBuffer putEnumSetShort(int index, Set&lt;E&gt; set);<a name="line.2056"></a>
<span class="sourceLineNo">2057</span><a name="line.2057"></a>
<span class="sourceLineNo">2058</span>    /**<a name="line.2058"></a>
<span class="sourceLineNo">2059</span>     * Writes the specified {@link Set} to the buffer as an int sized bit<a name="line.2059"></a>
<span class="sourceLineNo">2060</span>     * vector.<a name="line.2060"></a>
<span class="sourceLineNo">2061</span>     * <a name="line.2061"></a>
<span class="sourceLineNo">2062</span>     * @param &lt;E&gt; the enum type of the Set<a name="line.2062"></a>
<span class="sourceLineNo">2063</span>     * @param set the enum set to write to the buffer<a name="line.2063"></a>
<span class="sourceLineNo">2064</span>     * @return the modified IoBuffer<a name="line.2064"></a>
<span class="sourceLineNo">2065</span>     */<a name="line.2065"></a>
<span class="sourceLineNo">2066</span>    public abstract &lt;E extends Enum&lt;E&gt;&gt; IoBuffer putEnumSetInt(Set&lt;E&gt; set);<a name="line.2066"></a>
<span class="sourceLineNo">2067</span><a name="line.2067"></a>
<span class="sourceLineNo">2068</span>    /**<a name="line.2068"></a>
<span class="sourceLineNo">2069</span>     * Writes the specified {@link Set} to the buffer as an int sized bit<a name="line.2069"></a>
<span class="sourceLineNo">2070</span>     * vector.<a name="line.2070"></a>
<span class="sourceLineNo">2071</span>     * <a name="line.2071"></a>
<span class="sourceLineNo">2072</span>     * @param &lt;E&gt; the enum type of the Set<a name="line.2072"></a>
<span class="sourceLineNo">2073</span>     * @param index the index at which the bytes will be written<a name="line.2073"></a>
<span class="sourceLineNo">2074</span>     * @param set the enum set to write to the buffer<a name="line.2074"></a>
<span class="sourceLineNo">2075</span>     * @return the modified IoBuffer<a name="line.2075"></a>
<span class="sourceLineNo">2076</span>     */<a name="line.2076"></a>
<span class="sourceLineNo">2077</span>    public abstract &lt;E extends Enum&lt;E&gt;&gt; IoBuffer putEnumSetInt(int index, Set&lt;E&gt; set);<a name="line.2077"></a>
<span class="sourceLineNo">2078</span><a name="line.2078"></a>
<span class="sourceLineNo">2079</span>    /**<a name="line.2079"></a>
<span class="sourceLineNo">2080</span>     * Writes the specified {@link Set} to the buffer as a long sized bit<a name="line.2080"></a>
<span class="sourceLineNo">2081</span>     * vector.<a name="line.2081"></a>
<span class="sourceLineNo">2082</span>     * <a name="line.2082"></a>
<span class="sourceLineNo">2083</span>     * @param &lt;E&gt; the enum type of the Set<a name="line.2083"></a>
<span class="sourceLineNo">2084</span>     * @param set the enum set to write to the buffer<a name="line.2084"></a>
<span class="sourceLineNo">2085</span>     * @return the modified IoBuffer<a name="line.2085"></a>
<span class="sourceLineNo">2086</span>     */<a name="line.2086"></a>
<span class="sourceLineNo">2087</span>    public abstract &lt;E extends Enum&lt;E&gt;&gt; IoBuffer putEnumSetLong(Set&lt;E&gt; set);<a name="line.2087"></a>
<span class="sourceLineNo">2088</span><a name="line.2088"></a>
<span class="sourceLineNo">2089</span>    /**<a name="line.2089"></a>
<span class="sourceLineNo">2090</span>     * Writes the specified {@link Set} to the buffer as a long sized bit<a name="line.2090"></a>
<span class="sourceLineNo">2091</span>     * vector.<a name="line.2091"></a>
<span class="sourceLineNo">2092</span>     * <a name="line.2092"></a>
<span class="sourceLineNo">2093</span>     * @param &lt;E&gt; the enum type of the Set<a name="line.2093"></a>
<span class="sourceLineNo">2094</span>     * @param index the index at which the bytes will be written<a name="line.2094"></a>
<span class="sourceLineNo">2095</span>     * @param set the enum set to write to the buffer<a name="line.2095"></a>
<span class="sourceLineNo">2096</span>     * @return the modified IoBuffer<a name="line.2096"></a>
<span class="sourceLineNo">2097</span>     */<a name="line.2097"></a>
<span class="sourceLineNo">2098</span>    public abstract &lt;E extends Enum&lt;E&gt;&gt; IoBuffer putEnumSetLong(int index, Set&lt;E&gt; set);<a name="line.2098"></a>
<span class="sourceLineNo">2099</span>}<a name="line.2099"></a>




























































</pre>
</div>
</body>
</html>
