* OF THIS SOFTWARE.
*
* $Log: nmem.h,v $
- * Revision 1.9 1998-10-13 16:00:17 adam
+ * Revision 1.10 1998-10-19 15:24:20 adam
+ * New nmem utility, nmem_transfer, that transfer blocks from one
+ * NMEM to another.
+ *
+ * Revision 1.9 1998/10/13 16:00:17 adam
* Implemented nmem_critical_{enter,leave}.
*
* Revision 1.8 1998/07/20 12:35:59 adam
YAZ_EXPORT void nmem_reset(NMEM n);
YAZ_EXPORT int nmem_total(NMEM n);
YAZ_EXPORT char *nmem_strdup (NMEM mem, const char *src);
+YAZ_EXPORT void nmem_transfer (NMEM dst, NMEM src);
YAZ_EXPORT void nmem_critical_enter (void);
YAZ_EXPORT void nmem_critical_leave (void);
* Sebastian Hammer, Adam Dickmeiss
*
* $Log: nmem.c,v $
- * Revision 1.12 1998-10-13 16:00:18 adam
+ * Revision 1.13 1998-10-19 15:24:21 adam
+ * New nmem utility, nmem_transfer, that transfer blocks from one
+ * NMEM to another.
+ *
+ * Revision 1.12 1998/10/13 16:00:18 adam
* Implemented nmem_critical_{enter,leave}.
*
* Revision 1.11 1998/08/21 14:13:36 adam
n->blocks = n->blocks->next;
free_block(t);
}
- NMEM_LEAVE;
n->total = 0;
+ NMEM_LEAVE;
}
#if NMEM_DEBUG
#endif
}
+void nmem_transfer (NMEM dst, NMEM src)
+{
+ nmem_block *t;
+ while ((t=src->blocks))
+ {
+ src->blocks = t->next;
+ t->next = dst->blocks;
+ dst->blocks = t;
+ }
+ dst->total += src->total;
+ src->total = 0;
+}
+
void nmem_critical_enter (void)
{
NMEM_ENTER;