X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=lib%2Fpools.h;h=6058c5eefc9549de214660e3df2c7eea22805fb6;hb=fa46b138dbec92d85bb457f1feb7935846596ab6;hp=3526aec0bfc9ed5627ded9464e4b33dfa2095106;hpb=2fbd0bc2b1bd00d48ea7f6852e6684b3c01dbce4;p=libucw.git diff --git a/lib/pools.h b/lib/pools.h index 3526aec0..6058c5ee 100644 --- a/lib/pools.h +++ b/lib/pools.h @@ -1,9 +1,15 @@ /* * Sherlock Library -- Memory Pools * - * (c) 1997--2001 Martin Mares + * (c) 1997--2004 Martin Mares + * + * 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 POOL_ALIGN #define POOL_ALIGN CPU_STRUCT_ALIGN #endif @@ -40,3 +46,28 @@ static inline void *mp_alloc_fast_noalign(struct mempool *p, uns l) p->free = ee; return f; } + +static inline void * +mp_start_string(struct mempool *p, uns l) +{ + ASSERT(l <= p->chunk_size); + return mp_alloc(p, l); +} + +static inline void +mp_end_string(struct mempool *p, void *stop) +{ + p->free = stop; +} + +/* pool-str.c */ + +char *mp_strdup(struct mempool *, char *); +char *mp_multicat(struct mempool *, ...); +static inline char * +mp_strcat(struct mempool *mp, char *x, char *y) +{ + return mp_multicat(mp, x, y, NULL); +} + +#endif