14576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang/*
24576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    Copyright (C) 2009-2010 Samsung Electronics
34576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    Copyright (C) 2009-2010 ProFUSION embedded systems
44576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
54576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    This library is free software; you can redistribute it and/or
64576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    modify it under the terms of the GNU Library General Public
74576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    License as published by the Free Software Foundation; either
84576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    version 2 of the License, or (at your option) any later version.
94576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
104576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    This library is distributed in the hope that it will be useful,
114576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    but WITHOUT ANY WARRANTY; without even the implied warranty of
124576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
134576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    Library General Public License for more details.
144576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
154576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    You should have received a copy of the GNU Library General Public License
164576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    along with this library; see the file COPYING.LIB.  If not, write to
174576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
184576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    Boston, MA 02110-1301, USA.
194576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang*/
204576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
214576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#ifndef ewk_tiled_private_h
224576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#define ewk_tiled_private_h
234576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
244576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang/* logging */
254576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangextern int _ewk_tiled_log_dom;
264576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
274576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#define CRITICAL(...) EINA_LOG_DOM_CRIT(_ewk_tiled_log_dom, __VA_ARGS__)
284576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#define ERR(...) EINA_LOG_DOM_ERR(_ewk_tiled_log_dom, __VA_ARGS__)
294576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#define WRN(...) EINA_LOG_DOM_WARN(_ewk_tiled_log_dom, __VA_ARGS__)
304576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#define INF(...) EINA_LOG_DOM_INFO(_ewk_tiled_log_dom, __VA_ARGS__)
314576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#define DBG(...) EINA_LOG_DOM_DBG(_ewk_tiled_log_dom, __VA_ARGS__)
324576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#define OOM(op, size) CRITICAL("could not %s %zd bytes: %s", op, size, strerror(errno))
334576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#define MALLOC_OR_OOM_RET(ptr, size, ...)       \
344576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    do {                                        \
354576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang        ptr = malloc(size);                     \
364576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang        if (!ptr && (size) > 0) {               \
374576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang            OOM("malloc", (size));              \
384576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang            return __VA_ARGS__;                 \
394576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang        }                                       \
404576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    } while (0)
414576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
424576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#define CALLOC_OR_OOM_RET(ptr, size, ...)       \
434576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    do {                                        \
444576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang        ptr = calloc(1, size);                  \
454576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang        if (!ptr && (size) > 0) {               \
464576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang            OOM("calloc", (size));              \
474576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang            return __VA_ARGS__;                 \
484576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang        }                                       \
494576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    } while (0)
504576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
514576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#define REALLOC_OR_OOM_RET(ptr, size, ...)      \
524576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    do {                                        \
534576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang        void *__tmp_ptr;                        \
544576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang        __tmp_ptr = realloc(ptr, size);         \
554576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang        if (!__tmp_ptr && (size) > 0) {         \
564576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang            OOM("realloc", (size));             \
574576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang            return __VA_ARGS__;                 \
584576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang        }                                       \
594576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang        ptr = __tmp_ptr;                        \
604576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    } while (0)
614576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
624576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#endif // ewk_tiled_private_h
63