chiark / gitweb /
Version bump.
[mLib] / sub.h
CommitLineData
0875b58f 1/* -*-c-*-
2 *
c6e0eaf0 3 * $Id: sub.h,v 1.5 1999/12/10 23:42:04 mdw Exp $
0875b58f 4 *
5 * Allocation of known-size blocks
6 *
7 * (c) 1998 Straylight/Edgeware
8 */
9
c846879c 10/*----- Licensing notice --------------------------------------------------*
0875b58f 11 *
12 * This file is part of the mLib utilities library.
13 *
14 * mLib is free software; you can redistribute it and/or modify
c846879c 15 * it under the terms of the GNU Library General Public License as
16 * published by the Free Software Foundation; either version 2 of the
17 * License, or (at your option) any later version.
18 *
0875b58f 19 * mLib is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
c846879c 22 * GNU Library General Public License for more details.
23 *
24 * You should have received a copy of the GNU Library General Public
0bd98442 25 * License along with mLib; if not, write to the Free
26 * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
27 * MA 02111-1307, USA.
0875b58f 28 */
29
30/*----- Revision history --------------------------------------------------*
31 *
32 * $Log: sub.h,v $
c6e0eaf0 33 * Revision 1.5 1999/12/10 23:42:04 mdw
34 * Change header file guard names.
35 *
8c6d948b 36 * Revision 1.4 1999/05/13 22:48:55 mdw
37 * Change `-ise' to `-ize' throughout.
38 *
0bd98442 39 * Revision 1.3 1999/05/06 19:51:35 mdw
40 * Reformatted the LGPL notice a little bit.
41 *
c846879c 42 * Revision 1.2 1999/05/05 18:50:31 mdw
43 * Change licensing conditions to LGPL.
44 *
45 * Revision 1.1.1.1 1998/06/17 23:44:42 mdw
46 * Initial version of mLib
0875b58f 47 *
48 */
49
c6e0eaf0 50#ifndef MLIB_SUB_H
51#define MLIB_SUB_H
0875b58f 52
53#ifdef __cplusplus
54 extern "C" {
55#endif
56
57/*----- Required header files ---------------------------------------------*/
58
59#include <stdlib.h>
60
c6e0eaf0 61#ifndef MLIB_ALLOC_H
0875b58f 62# include "alloc.h"
63#endif
64
65/*----- Functions provided ------------------------------------------------*/
66
67/* --- @sub_alloc@ --- *
68 *
69 * Arguments: @size_t s@ = size of chunk wanted
70 *
71 * Returns: Pointer to a block at least as large as the one wanted.
72 *
73 * Use: Allocates a small block of memory. If there is no more
74 * memory left, the exception @EXC_NOMEM@ is raised.
75 */
76
77#ifdef TRACK_ENABLE
78# define sub_alloc(s) xmalloc(s)
79#else
80void *sub_alloc(size_t s);
81#endif
82
83/* --- @sub_free@ --- *
84 *
85 * Arguments: @void *p@ = address of block to free
86 * @size_t s@ = size of block
87 *
88 * Returns: ---
89 *
90 * Use: Frees a block allocated by @sub_alloc@.
91 */
92
93#ifdef TRACK_ENABLE
94# define sub_free(p, s) free(p)
95#else
96void sub_free(void *p, size_t s);
97#endif
98
99/* --- @CREATE@ --- *
100 *
101 * Arguments: @type@ = type of object required; must be passable to
102 * @sizeof@
103 *
104 * Returns: Pointer to a block sufficiently big to hold an object of the
105 * named type.
106 *
107 * Use: Allocates a block of the required type.
108 */
109
110#define CREATE(type) sub_alloc(sizeof(type))
111
112/* --- @DESTROY@ --- *
113 *
114 * Arguments: @void *p@ = pointer to an object
115 *
116 * Returns: ---
117 *
118 * Use: Frees the thing pointed to by @p@.
119 */
120
121#define DESTROY(p) sub_free(p, sizeof(*p))
122
123/* --- @sub_init@ --- *
124 *
125 * Arguments: ---
126 *
127 * Returns: ---
128 *
8c6d948b 129 * Use: Initializes the magic allocator.
0875b58f 130 */
131
132void sub_init(void);
133
134/*----- That's all, folks -------------------------------------------------*/
135
136#ifdef __cplusplus
137 }
138#endif
139
140#endif