annotate extern/jansson/src/memory.c @ 96:3b24366c7213

Misc: switch to \ for Doxygen, #480
author David Demelier <markand@malikania.fr>
date Wed, 20 Apr 2016 19:55:25 +0200
parents 1158cffe5a5e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * Copyright (c) 2009-2014 Petri Lehtinen <petri@digip.org>
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 * Copyright (c) 2011-2012 Basile Starynkevitch <basile@starynkevitch.net>
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 *
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 * Jansson is free software; you can redistribute it and/or modify it
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * under the terms of the MIT license. See LICENSE for details.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 */
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
8
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 #include <stdlib.h>
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 #include <string.h>
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
11
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 #include "jansson.h"
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 #include "jansson_private.h"
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
14
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 /* C89 allows these to be macros */
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 #undef malloc
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 #undef free
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 /* memory function pointers */
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 static json_malloc_t do_malloc = malloc;
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 static json_free_t do_free = free;
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
22
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 void *jsonp_malloc(size_t size)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 {
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 if(!size)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 return NULL;
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
27
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 return (*do_malloc)(size);
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
30
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 void jsonp_free(void *ptr)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 {
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 if(!ptr)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 return;
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
35
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 (*do_free)(ptr);
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
38
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 char *jsonp_strdup(const char *str)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 {
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 return jsonp_strndup(str, strlen(str));
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
43
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 char *jsonp_strndup(const char *str, size_t len)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 {
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 char *new_str;
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
47
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 new_str = jsonp_malloc(len + 1);
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 if(!new_str)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 return NULL;
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
51
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 memcpy(new_str, str, len);
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 new_str[len] = '\0';
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 return new_str;
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
56
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 void json_set_alloc_funcs(json_malloc_t malloc_fn, json_free_t free_fn)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 {
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 do_malloc = malloc_fn;
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 do_free = free_fn;
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 }