wsfalloc.h
上传用户:gzpyjq
上传日期:2013-01-31
资源大小:1852k
文件大小:2k
源码类别:

手机WAP编程

开发平台:

WINDOWS

  1. /*
  2.  *
  3.  * wsfalloc.h
  4.  *
  5.  * Author: Markku Rossi <mtr@iki.fi>
  6.  *
  7.  * Copyright (c) 1999-2000 WAPIT OY LTD.
  8.  *  All rights reserved.
  9.  *
  10.  * Fast memory allocation routines with easy cleanup.
  11.  *
  12.  */
  13. #ifndef WSFALLOC_H
  14. #define WSFALLOC_H
  15. /********************* Types and definitions ****************************/
  16. struct WsFastMallocBlockRec
  17. {
  18.     struct WsFastMallocBlockRec *next;
  19.     /* The data follows immediately here. */
  20. };
  21. typedef struct WsFastMallocBlockRec WsFastMallocBlock;
  22. struct WsFastMallocRec
  23. {
  24.     WsFastMallocBlock *blocks;
  25.     /* The default block size of this pool. */
  26.     size_t block_size;
  27.     /* The number of bytes allocates for user blocks. */
  28.     size_t user_bytes_allocated;
  29.     /* The next allocation can be done from this position. */
  30.     unsigned char *ptr;
  31.     /* And it has this much space. */
  32.     size_t size;
  33. };
  34. typedef struct WsFastMallocRec WsFastMalloc;
  35. /********************* Prototypes for global functions ******************/
  36. /* Create a new fast memory allocator with internal block size of
  37.    `block_size' bytes.  The function returns NULL if the creation
  38.    failed. */
  39. WsFastMalloc *ws_f_create(size_t block_size);
  40. /* Destroy the fast allocator `pool' and free all resources it has
  41.    allocated.  All memory chunks, allocated from this pool will be
  42.    invalidated with this call. */
  43. void ws_f_destroy(WsFastMalloc *pool);
  44. /* Allocate `size' bytes of memory from the pool `pool'.  The function
  45.    returns NULL if the allocation fails. */
  46. void *ws_f_malloc(WsFastMalloc *pool, size_t size);
  47. /* Allocate `num' items of size `size' from the pool `pool'.  The
  48.    returned memory block is initialized with zero.  The function
  49.    returns NULL if the allocation fails. */
  50. void *ws_f_calloc(WsFastMalloc *pool, size_t num, size_t size);
  51. /* Take a copy of the memory buffer `ptr' which has `size' bytes of
  52.    data.  The copy is allocated from the pool `pool'.  The function
  53.    returns NULL if the allocation fails. */
  54. void *ws_f_memdup(WsFastMalloc *pool, const void *ptr, size_t size);
  55. /* Take a copy of the C-string `str'.  The copy is allocated from the
  56.    pool `pool'.  The function returns NULL if the allocation fails. */
  57. void *ws_f_strdup(WsFastMalloc *pool, const char *str);
  58. #endif /* not WSFALLOC_H */