/* ----------------------------------------------------------------------------
* This file was automatically generated by SWIG (http://www.swig.org).
* Version 1.3.40
*
* Do not make changes to this file unless you know what you are doing--modify
* the SWIG interface file instead.
* ----------------------------------------------------------------------------- */
package org.gdal.ogr;
import java.lang.ref.WeakReference;
import java.lang.ref.ReferenceQueue;
import java.util.Set;
import java.util.HashSet;
import java.util.Collections;
import org.gdal.ogr.Feature;
/* This class enables to finalize native resources associated with the object */
/* without needing a finalize() method */
class FeatureNative extends WeakReference {
private long swigCPtr;
static private ReferenceQueue refQueue = new ReferenceQueue();
static private Set refList = Collections.synchronizedSet(new HashSet());
static private Thread cleanupThread = null;
/* We start a cleanup thread in daemon mode */
/* If we can't, we'll cleanup garbaged features at creation time */
static
{
cleanupThread = new Thread() {
public void run()
{
while(true)
{
try
{
FeatureNative nativeObject =
(FeatureNative) refQueue.remove();
if (nativeObject != null)
nativeObject.delete();
}
catch(InterruptedException ie) {}
}
}
};
try
{
cleanupThread.setName("Feature" + "NativeObjectsCleaner");
cleanupThread.setDaemon(true);
cleanupThread.start();
}
catch (SecurityException se)
{
//System.err.println("could not start daemon thread");
cleanupThread = null;
}
}
public FeatureNative(Feature javaObject, long cPtr) {
super(javaObject, refQueue);
if (cleanupThread == null)
{
/* We didn't manage to have a daemon cleanup thread */
/* so let's clean manually */
while(true)
{
FeatureNative nativeObject =
(FeatureNative) refQueue.poll();
if (nativeObject != null)
nativeObject.delete();
else
break;
}
}
refList.add(this);
swigCPtr = cPtr;
}
public void dontDisposeNativeResources()
{
refList.remove(this);
swigCPtr = 0;
}
public void delete()
{
refList.remove(this);
if(swigCPtr != 0) {
ogrJNI.delete_Feature(swigCPtr);
}
swigCPtr = 0;
}
}