NilPointerParameterStrategy.java
package org.jruby.ext.ffi.jffi;
import org.jruby.ext.ffi.MemoryIO;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
/**
 * 
 */
final class NilPointerParameterStrategy extends PointerParameterStrategy {
    NilPointerParameterStrategy() {
        super(true, false);
    }
    public final MemoryIO getMemoryIO(Object parameter) {
        return NullMemoryIO.INSTANCE;
    }
    static final class NullMemoryIO extends MemoryIO {
        static final MemoryIO INSTANCE = new NullMemoryIO();
        private NullMemoryIO() {
            super(true, 0L);
        }
        private static final RuntimeException ex() {
            return new UnsupportedOperationException();
        }
        public Object array() {
            throw ex();
        }
        public int arrayOffset() {
            throw ex();
        }
        public int arrayLength() {
            throw ex();
        }
        public ByteOrder order() {
            throw ex();
        }
        public MemoryIO slice(long offset) {
            throw ex();
        }
        public MemoryIO slice(long offset, long size) {
            throw ex();
        }
        public MemoryIO dup() {
            throw ex();
        }
        public ByteBuffer asByteBuffer() {
            throw ex();
        }
        public byte getByte(long offset) {
            throw ex();
        }
        public short getShort(long offset) {
            throw ex();
        }
        public int getInt(long offset) {
            throw ex();
        }
        public long getLong(long offset) {
            throw ex();
        }
        public long getNativeLong(long offset) {
            throw ex();
        }
        public float getFloat(long offset) {
            throw ex();
        }
        public double getDouble(long offset) {
            throw ex();
        }
        public long getAddress(long offset) {
            throw ex();
        }
        public MemoryIO getMemoryIO(long offset) {
            throw ex();
        }
        public void putByte(long offset, byte value) {
            throw ex();
        }
        public void putShort(long offset, short value) {
            throw ex();
        }
        public void putInt(long offset, int value) {
            throw ex();
        }
        public void putLong(long offset, long value) {
            throw ex();
        }
        public void putNativeLong(long offset, long value) {
            throw ex();
        }
        public void putFloat(long offset, float value) {
            throw ex();
        }
        public void putDouble(long offset, double value) {
            throw ex();
        }
        public void putMemoryIO(long offset, MemoryIO value) {
            throw ex();
        }
        public void putAddress(long offset, long value) {
            throw ex();
        }
        public void get(long offset, byte[] dst, int off, int len) {
            throw ex();
        }
        public void put(long offset, byte[] src, int off, int len) {
            throw ex();
        }
        public void get(long offset, short[] dst, int off, int len) {
            throw ex();
        }
        public void put(long offset, short[] src, int off, int len) {
            throw ex();
        }
        public void get(long offset, int[] dst, int off, int len) {
            throw ex();
        }
        public void put(long offset, int[] src, int off, int len) {
            throw ex();
        }
        public void get(long offset, long[] dst, int off, int len) {
            throw ex();
        }
        public void put(long offset, long[] src, int off, int len) {
            throw ex();
        }
        public void get(long offset, float[] dst, int off, int len) {
            throw ex();
        }
        public void put(long offset, float[] src, int off, int len) {
            throw ex();
        }
        public void get(long offset, double[] dst, int off, int len) {
            throw ex();
        }
        public void put(long offset, double[] src, int off, int len) {
            throw ex();
        }
        public int indexOf(long offset, byte value) {
            throw ex();
        }
        public int indexOf(long offset, byte value, int maxlen) {
            throw ex();
        }
        public void setMemory(long offset, long size, byte value) {
            throw ex();
        }
        public byte[] getZeroTerminatedByteArray(long offset) {
            throw ex();
        }
        public byte[] getZeroTerminatedByteArray(long offset, int maxlen) {
            throw ex();
        }
        public void putZeroTerminatedByteArray(long offset, byte[] bytes, int off, int len) {
            throw ex();
        }
    }
}