package com.technofovea.hllib; import com.sun.jna.FromNativeContext; import com.sun.jna.Pointer; import com.sun.jna.ToNativeContext; import com.sun.jna.TypeConverter; /** * * @author Darien Hager */ class StreamConverter implements TypeConverter { public Object fromNative(Object input, FromNativeContext context) { assert(context.getTargetType().equals(HlStream.class)); Pointer ptr = (Pointer)input; return new HlStream(HlLib.getLibrary().getCurrentlyBoundPackage(),ptr); } public Object toNative(Object input, ToNativeContext context) { HlStream stream = (HlStream)input; // Check closed if(stream.isClosed()){ throw new IllegalStateException("Stream cannot be used, it's owning package was closed."); } // Auto-rebind package to prevent an error if(HlLib.getLibrary().getCurrentlyBoundPackage() != stream.getParentPackage()){ HlLib.getLibrary().bindPackage(stream.getParentPackage()); } return stream.getPointer(); } public Class nativeType() { return Pointer.class; } }