1/*
2    Copyright (C) 2009-2010 Samsung Electronics
3    Copyright (C) 2009-2010 ProFUSION embedded systems
4
5    This library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Library General Public
7    License as published by the Free Software Foundation; either
8    version 2 of the License, or (at your option) any later version.
9
10    This library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Library General Public License for more details.
14
15    You should have received a copy of the GNU Library General Public License
16    along with this library; see the file COPYING.LIB.  If not, write to
17    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18    Boston, MA 02110-1301, USA.
19*/
20
21#ifndef ewk_tiled_private_h
22#define ewk_tiled_private_h
23
24/* logging */
25extern int _ewk_tiled_log_dom;
26
27#define CRITICAL(...) EINA_LOG_DOM_CRIT(_ewk_tiled_log_dom, __VA_ARGS__)
28#define ERR(...) EINA_LOG_DOM_ERR(_ewk_tiled_log_dom, __VA_ARGS__)
29#define WRN(...) EINA_LOG_DOM_WARN(_ewk_tiled_log_dom, __VA_ARGS__)
30#define INF(...) EINA_LOG_DOM_INFO(_ewk_tiled_log_dom, __VA_ARGS__)
31#define DBG(...) EINA_LOG_DOM_DBG(_ewk_tiled_log_dom, __VA_ARGS__)
32#define OOM(op, size) CRITICAL("could not %s %zd bytes: %s", op, size, strerror(errno))
33#define MALLOC_OR_OOM_RET(ptr, size, ...)       \
34    do {                                        \
35        ptr = malloc(size);                     \
36        if (!ptr && (size) > 0) {               \
37            OOM("malloc", (size));              \
38            return __VA_ARGS__;                 \
39        }                                       \
40    } while (0)
41
42#define CALLOC_OR_OOM_RET(ptr, size, ...)       \
43    do {                                        \
44        ptr = calloc(1, size);                  \
45        if (!ptr && (size) > 0) {               \
46            OOM("calloc", (size));              \
47            return __VA_ARGS__;                 \
48        }                                       \
49    } while (0)
50
51#define REALLOC_OR_OOM_RET(ptr, size, ...)      \
52    do {                                        \
53        void *__tmp_ptr;                        \
54        __tmp_ptr = realloc(ptr, size);         \
55        if (!__tmp_ptr && (size) > 0) {         \
56            OOM("realloc", (size));             \
57            return __VA_ARGS__;                 \
58        }                                       \
59        ptr = __tmp_ptr;                        \
60    } while (0)
61
62#endif // ewk_tiled_private_h
63