Java ByteBuffer Allocate allocateDirectBuffer(int size)

Here you can find the source of allocateDirectBuffer(int size)

Description

allocate Direct Buffer

License

Open Source License

Declaration

public static ByteBuffer allocateDirectBuffer(int size) 

Method Source Code

//package com.java2s;
/*/*from  w ww. j ava  2s  .  c om*/
This file is part of jpcsp.
    
Jpcsp is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
    
Jpcsp is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
    
You should have received a copy of the GNU General Public License
along with Jpcsp.  If not, see <http://www.gnu.org/licenses/>.
 */

import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
import java.nio.IntBuffer;
import java.nio.ShortBuffer;

public class Main {
    protected static int directBufferSize = 100;
    protected static ByteBuffer directBuffer = ByteBuffer.allocateDirect(directBufferSize)
            .order(ByteOrder.nativeOrder());

    public static ByteBuffer allocateDirectBuffer(int size) {
        if (size > directBufferSize) {
            directBufferSize = size;
            directBuffer = ByteBuffer.allocateDirect(directBufferSize).order(ByteOrder.nativeOrder());
        }

        directBuffer.clear();
        directBuffer.limit(size);

        return directBuffer;
    }

    public static ByteBuffer allocateDirectBuffer(ByteBuffer buffer) {
        if (buffer.isDirect()) {
            return buffer;
        }

        return allocateDirectBuffer(buffer.remaining());
    }

    public static IntBuffer allocateDirectBuffer(IntBuffer buffer) {
        if (buffer.isDirect()) {
            return buffer;
        }

        return allocateDirectBuffer(buffer.remaining() << 2).asIntBuffer();
    }

    public static ShortBuffer allocateDirectBuffer(ShortBuffer buffer) {
        if (buffer.isDirect()) {
            return buffer;
        }

        return allocateDirectBuffer(buffer.remaining() << 1).asShortBuffer();
    }

    public static FloatBuffer allocateDirectBuffer(FloatBuffer buffer) {
        if (buffer.isDirect()) {
            return buffer;
        }

        return allocateDirectBuffer(buffer.remaining() << 2).asFloatBuffer();
    }
}

Related

  1. allocate(int length, byte fillwith)
  2. allocate(int size)
  3. allocate(int size)
  4. allocateBuffer(int size, boolean isDirect)
  5. allocateDirect(int capacity)
  6. allocateDirectInt(int size)
  7. allocateDoubles(final int howmany, final int SIZE)
  8. allocateFloats(final int howmany, final int SIZE)
  9. allocateInt()