/*
- * Sherlock Library -- Memory Pools
+ * UCW Library -- Memory Pools
*
- * (c) 1997--2004 Martin Mares <mj@ucw.cz>
+ * (c) 1997--2005 Martin Mares <mj@ucw.cz>
*
* This software may be freely distributed and used according to the terms
* of the GNU Lesser General Public License.
*/
-#ifndef _SHERLOCK_POOLS_H
-#define _SHERLOCK_POOLS_H
+#ifndef _UCW_POOLS_H
+#define _UCW_POOLS_H
#ifndef POOL_ALIGN
#define POOL_ALIGN CPU_STRUCT_ALIGN
static inline void *mp_alloc_fast(struct mempool *p, uns l)
{
- byte *f = (void *) (((uns) p->free + POOL_ALIGN - 1) & ~(POOL_ALIGN - 1));
+ byte *f = (void *) (((addr_int_t) p->free + POOL_ALIGN - 1) & ~(addr_int_t)(POOL_ALIGN - 1));
byte *ee = f + l;
if (ee > p->last)
return mp_alloc(p, l);
p->free = stop;
}
-/* pool-str.c */
+/* mempool-str.c */
char *mp_strdup(struct mempool *, char *);
+void *mp_memdup(struct mempool *, void *, uns);
char *mp_multicat(struct mempool *, ...);
static inline char *
mp_strcat(struct mempool *mp, char *x, char *y)
return mp_multicat(mp, x, y, NULL);
}
+/* mempool-fmt.c */
+
+char *mp_printf(struct mempool *p, char *fmt, ...) FORMAT_CHECK(printf,2,3);
+char *mp_vprintf(struct mempool *p, char *fmt, va_list args);
+
#endif