/*
* Copyright (c) 2004, 2005, 2006 TADA AB - Taby Sweden
* Distributed under the terms shown in the file COPYRIGHT
* found in the root directory of this distribution or at
* http://eng.tada.se/osprojects/COPYRIGHT.html
*/
package org.postgresql.pljava.internal;
public abstract class JavaWrapper
{
private final long m_pointer;
/**
* Creates an instance of this class that will be attached to a native
* structure represented by pointer. This constructor must only be called
* from native code.
*
* @param pointer The wapped pointer.
*/
protected JavaWrapper(long pointer)
{
m_pointer = pointer;
}
public void finalize()
{
synchronized(Backend.THREADLOCK)
{
_free(m_pointer);
}
}
/**
* Returns the native pointer
*/
public final long getNativePointer()
{
return m_pointer;
}
/**
* Calls the C function pfree() with the given pointer as an argument.
* Subclasses may override this method if special handling is needed when
* freeing up the object.
*
* @param pointer The pointer to free.
*/
protected native void _free(long pointer);
}