1/* xmalloc.h -- defines for the `x' memory allocation functions */
2
3/* Copyright (C) 2001 Free Software Foundation, Inc.
4
5   This file is part of GNU Bash, the Bourne Again SHell.
6
7   Bash is free software; you can redistribute it and/or modify it under
8   the terms of the GNU General Public License as published by the Free
9   Software Foundation; either version 2, or (at your option) any later
10   version.
11
12   Bash is distributed in the hope that it will be useful, but WITHOUT ANY
13   WARRANTY; without even the implied warranty of MERCHANTABILITY or
14   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
15   for more details.
16
17   You should have received a copy of the GNU General Public License along
18   with Bash; see the file COPYING.  If not, write to the Free Software
19   Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
20
21#if !defined (_XMALLOC_H_)
22#define _XMALLOC_H_
23
24#include "stdc.h"
25#include "bashansi.h"
26
27/* Generic pointer type. */
28#ifndef PTR_T
29
30#if defined (__STDC__)
31#  define PTR_T	void *
32#else
33#  define PTR_T char *
34#endif
35
36#endif /* PTR_T */
37
38/* Allocation functions in xmalloc.c */
39extern PTR_T xmalloc __P((size_t));
40extern PTR_T xrealloc __P((void *, size_t));
41extern void xfree __P((void *));
42
43#if defined(USING_BASH_MALLOC) && !defined (DISABLE_MALLOC_WRAPPERS)
44extern PTR_T sh_xmalloc __P((size_t, const char *, int));
45extern PTR_T sh_xrealloc __P((void *, size_t, const char *, int));
46extern void sh_xfree __P((void *, const char *, int));
47
48#define xmalloc(x)	sh_xmalloc((x), __FILE__, __LINE__)
49#define xrealloc(x, n)	sh_xrealloc((x), (n), __FILE__, __LINE__)
50#define xfree(x)	sh_xfree((x), __FILE__, __LINE__)
51
52#ifdef free
53#undef free
54#endif
55#define free(x)		sh_xfree((x), __FILE__, __LINE__)
56#endif	/* USING_BASH_MALLOC */
57
58#endif	/* _XMALLOC_H_ */
59