1/* $Id$ $Revision$ */
2/* vim:set shiftwidth=4 ts=8: */
3
4/*************************************************************************
5 * Copyright (c) 2011 AT&T Intellectual Property
6 * All rights reserved. This program and the accompanying materials
7 * are made available under the terms of the Eclipse Public License v1.0
8 * which accompanies this distribution, and is available at
9 * http://www.eclipse.org/legal/epl-v10.html
10 *
11 * Contributors: See CVS logs. Details at http://www.graphviz.org/
12 *************************************************************************/
13
14#ifndef GV_MEMORY_H
15#define GV_MEMORY_H
16
17#include <stdlib.h>
18#ifdef HAVE_MALLOC_H
19#include <malloc.h>
20#endif
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
26#ifdef DMALLOC
27#define NEW(t) (t*)calloc(1,sizeof(t))
28#define N_NEW(n,t) (t*)calloc((n),sizeof(t))
29#define GNEW(t) (t*)malloc(sizeof(t))
30#define N_GNEW(n,t) (t*)malloc((n)*sizeof(t))
31#define ALLOC(size,ptr,type) (ptr? (type*)realloc(ptr,(size)*sizeof(type)):(type*)malloc((size)*sizeof(type)))
32#define RALLOC(size,ptr,type) ((type*)realloc(ptr,(size)*sizeof(type)))
33#define ZALLOC(size,ptr,type,osize) (ptr? (type*)recalloc(ptr,(size)*sizeof(type)):(type*)calloc((size),sizeof(type)))
34#else
35#define NEW(t) (t*)zmalloc(sizeof(t))
36#define N_NEW(n,t) (t*)zmalloc((n)*sizeof(t))
37#define GNEW(t) (t*)gmalloc(sizeof(t))
38
39#define N_GNEW(n,t) (t*)gmalloc((n)*sizeof(t))
40#define N_GGNEW(n,t) (t*)malloc((n)*sizeof(t))
41#define ALLOC(size,ptr,type) (ptr? (type*)grealloc(ptr,(size)*sizeof(type)):(type*)gmalloc((size)*sizeof(type)))
42#define RALLOC(size,ptr,type) ((type*)grealloc(ptr,(size)*sizeof(type)))
43#define ZALLOC(size,ptr,type,osize) (ptr? (type*)zrealloc(ptr,size,sizeof(type),osize):(type*)zmalloc((size)*sizeof(type)))
44#endif
45#ifdef GVDLL
46#define extern __declspec(dllexport)
47#else
48#ifdef _WIN32
49#ifndef GVC_EXPORTS
50#define extern __declspec(dllimport)
51#endif
52#endif
53
54#endif
55
56 extern void *zmalloc(size_t);
57 extern void *zrealloc(void *, size_t, size_t, size_t);
58 extern void *gmalloc(size_t);
59 extern void *grealloc(void *, size_t);
60#undef extern
61
62#ifdef __cplusplus
63}
64#endif
65
66#endif
67