001 package com.ochafik.lang.jnaerator.runtime;
002
003 import com.sun.jna.ptr.ByReference;
004
005 public class NativeSizeByReference extends ByReference {
006 public NativeSizeByReference() {
007 this(new NativeSize(0));
008 }
009
010 public NativeSizeByReference(NativeSize value) {
011 super(NativeSize.SIZE);
012 setValue(value);
013 }
014
015 public void setValue(NativeSize value) {
016 if (NativeSize.SIZE == 4)
017 getPointer().setInt(0, value.intValue());
018 else if (NativeSize.SIZE == 8)
019 getPointer().setLong(0, value.longValue());
020 else
021 throw new RuntimeException("GCCLong has to be either 4 or 8 bytes.");
022 }
023
024 public NativeSize getValue() {
025 if (NativeSize.SIZE == 4)
026 return new NativeSize(getPointer().getInt(0));
027 else if (NativeSize.SIZE == 8)
028 return new NativeSize(getPointer().getLong(0));
029 else
030 throw new RuntimeException("GCCLong has to be either 4 or 8 bytes.");
031 }
032 }