/* * Copyright © 2005 Atheme Development Group * Rights to this code are as documented in doc/pod/license.pod. * * Memory stuff. * * $Id: atheme_memory.h,v 1.4 2007/08/28 17:12:24 pippijn dead $ */ #ifndef __CLAROBASEMEMORY #define __CLAROBASEMEMORY E void *smalloc (size_t size); E void *scalloc (size_t elsize, size_t els); E void *srealloc (void *oldptr, size_t newsize); E char *sstrdup (const char *s); E char *sstrndup (const char *s, int len); // simple garbage collection for smalloc'ed blocks struct gc { static void insert (void *ptr) { mortals.push_back (ptr); } static void cleanup () { while (!mortals.empty ()) { free (mortals.back ()); mortals.pop_back (); } } private: static std::vector mortals; }; #endif