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