/* EDOORS * Copyright (C) 2012 Jérémy Zurcher * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; * if not, see . */ #ifndef __EDOORS_PRIVATE_H__ #define __EDOORS_PRIVATE_H__ #ifdef HAVE_CONFIG_H # include "edoors_config.h" #endif #include "edoors_main.h" #include "edoors_iota.h" #include #undef EINA_LOG_DOMAIN_DEFAULT #define EINA_LOG_DOMAIN_DEFAULT edoors_log_dom #define EIOTA_LOG_DOMAIN "edoors" #define EDOORS_MAX_VALUE_LENGTH 1024 #define EDOORS_MAX_PATH_LENGTH 256 #define EDOORS_MAX_ACTION_LENGTH 16 #define EDOORS_PATH_SEP '/' #define EDOORS_FIELDS_SEP ',' #define EDOORS_ACTION_SEP '?' #define EDOORS_PARTICLE_ARRAY_STEP 3 void edoors_iota_desinit(Edoors_Iota *iota); int edoors_iota_init(Edoors_Iota *iota, const char *name, Edoors_Iota *parent, Edoors_Type type); #undef PRINTPTR #ifdef __clang__ # define PRINTPTR(_p) (unsigned int)_p #else # define PRINTPTR(_p) (_p) #endif #define CHECK_PARENT() \ if(parent==NULL) { \ ERR("NULL parent not allowed"); \ return NULL; \ } #define STRINGSHARE_FREE(_st) \ if(_st) { \ eina_stringshare_del(_st); \ _st = NULL; \ } #define BUILD_INSTANCE(_type,_x) \ _type *_x = (_type*)malloc(sizeof(_type)); \ if(_x==NULL) { \ ERR("malloc error"); \ return NULL; \ } #define INIT_IOTA(_iota,_name,_parent,_type) \ if(edoors_iota_init(_iota,_name,(Edoors_Iota*)_parent,_type)) { \ return NULL; \ } #define ADD_TO_PARENT(_parent,_iota,_st_name) \ if(eina_hash_find(_parent->children,_iota->name)) { \ ERR("%s %s already exists in %s",_st_name,_iota->name,parent->iota.path); \ edoors_iota_desinit(_iota); \ return NULL; \ } \ eina_hash_direct_add(_parent->children,_iota->name,_iota); #define CHECK_USERBITS(_user_bits) \ if(_user_bits->data==NULL) { \ ERR("user_bits->data NULL is not allowed"); \ return NULL; \ } \ if(_user_bits->free_fct==NULL) { \ ERR("user_bits->free_fct NULL is not allowed"); \ return NULL; \ } \ if(_user_bits->recv_fct==NULL) { \ ERR("user_bits->recv_fct NULL is not allowed"); \ return NULL; \ } \ /* TODO user_bits->start_fct; user_bits->stop_fct; user_bits->suspend_fct; user_bits->resume_fct; */ #ifdef CRITICAL #undef CRITICAL #endif #define CRITICAL(...) EINA_LOG_DOM_CRIT(_edoors_log_dom, __VA_ARGS__) #ifdef ERR #undef ERR #endif #define ERR(...) EINA_LOG_DOM_ERR(_edoors_log_dom, __VA_ARGS__) #ifdef WRN #undef WRN #endif #define WRN(...) EINA_LOG_DOM_WARN(_edoors_log_dom, __VA_ARGS__) #ifdef INF #undef INF #endif #define INF(...) EINA_LOG_DOM_INFO(_edoors_log_dom, __VA_ARGS__) #ifdef DBG #undef DBG #endif #define DBG(...) EINA_LOG_DOM_DBG(_edoors_log_dom, __VA_ARGS__) #endif // __EDOORS_PRIVATE_H__