/************************************************************************** * Copyright (c) 2001 by Acunia N.V. All rights reserved. * * * * This software is copyrighted by and is the sole property of Acunia N.V. * * and its licensors, if any. All rights, title, ownership, or other * * interests in the software remain the property of Acunia N.V. and its * * licensors, if any. * * * * This software may only be used in accordance with the corresponding * * license agreement. Any unauthorized use, duplication, transmission, * * distribution or disclosure of this software is expressly forbidden. * * * * This Copyright notice may not be removed or modified without prior * * written consent of Acunia N.V. * * * * Acunia N.V. reserves the right to modify this software without notice. * * * * Acunia N.V. * * Vanden Tymplestraat 35 info@acunia.com * * 3000 Leuven http://www.acunia.com * * Belgium - EUROPE * * * * Modifications copyright (c) 2005 by Chris Gray, /k/ Embedded Java * * Solutions. All rights reserved. * * * **************************************************************************/ /* ** $Id: Reference.java,v 1.5 2006/03/29 09:27:14 cvs Exp $ */ package java.lang.ref; public abstract class Reference { private ReferenceQueue ref_queue; /** ** true if the Reference is in a queue, false otherwise ... ** NOTE: this will be set via native code !!! */ private boolean queued; /** ** In the constructor we check that the programmer has used one of the ** "official" subclasses [Soft|Weak|Phantom]Reference. Our GC depends on ** this. * @param referent */ Reference(Object referent) { set(referent); } Reference(Object referent, ReferenceQueue queue) { ref_queue = queue; set(referent); } public native Object get(); public native void clear(); public boolean isEnqueued() { return queued; } public boolean enqueue() { if (ref_queue == null) { return false; } return ref_queue.append(this); } private native void set(Object referent); }