Index: trunk/psLib/src/sys/psMemory.c
===================================================================
--- trunk/psLib/src/sys/psMemory.c	(revision 5174)
+++ trunk/psLib/src/sys/psMemory.c	(revision 5216)
@@ -8,6 +8,6 @@
 *  @author Robert Lupton, Princeton University
 *
-*  @version $Revision: 1.64 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2005-09-08 00:17:26 $
+*  @version $Revision: 1.65 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2005-10-01 02:22:13 $
 *
 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -583,4 +583,37 @@
 }
 
+psPtr p_psMemSetRefCounter(
+    psPtr vptr,
+    psReferenceCount count,
+    const char *file,
+    psS32 lineno)
+{
+    psMemBlock* ptr;
+
+    if (vptr == NULL) {
+        return vptr;
+    }
+
+    if (count < 0) {
+        count = 0;
+    }
+
+    ptr = ((psMemBlock* ) vptr) - 1;
+
+    if (checkMemBlock(ptr, __func__)) {
+        memProblemCallback(ptr, file, lineno);
+    }
+
+    pthread_mutex_lock(&ptr->refCounterMutex);
+    ptr->refCounter = count;
+    pthread_mutex_unlock(&ptr->refCounterMutex);
+
+    if (count < 1) {
+        vptr = p_psMemDecrRefCounter(vptr,file,lineno);
+    }
+
+    return vptr;
+}
+
 // decrement and return refCounter
 psPtr p_psMemDecrRefCounter(psPtr vptr,
@@ -707,5 +740,4 @@
     return PTR->freeFunc;
 }
-
 
 bool psMemCheckType(psDataType type,
Index: trunk/psLib/src/sys/psMemory.h
===================================================================
--- trunk/psLib/src/sys/psMemory.h	(revision 5174)
+++ trunk/psLib/src/sys/psMemory.h	(revision 5216)
@@ -12,6 +12,6 @@
  *  @ingroup MemoryManagement
  *
- *  @version $Revision: 1.50 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2005-08-31 02:07:11 $
+ *  @version $Revision: 1.51 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2005-10-01 02:22:13 $
  *
  *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -350,4 +350,30 @@
 #endif // !DOXYGEN
 
+/** Set reference counter and return the pointer
+ *
+ *  @ingroup memRefCount
+ *
+ *  @return psPtr    the pointer with refCount set, or NULL if pointer is
+ *                   fully dereferenced.
+ */
+#ifdef DOXYGEN
+psPtr psMemSetRefCounter(
+    psPtr ptr,                        ///< Pointer to decrement refCounter, and return
+    psReferenceCount count            ///< New reference count
+);
+#else // DOXYGEN
+psPtr p_psMemSetRefCounter(
+    psPtr vptr,                        ///< Pointer to decrement refCounter, and return
+    psReferenceCount count,            ///< New reference count
+    const char *file,                  ///< File of call
+    psS32 lineno                       ///< Line number of call
+);
+
+#ifndef SWIG
+#define psMemSetRefCounter(vptr, count) p_psMemSetRefCounter(vptr, count, __FILE__, __LINE__)
+#endif // !SWIG
+
+#endif // !DOXYGEN
+
 /** Set callback for problems.
  *
