/* EIOTAS
* 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 __EIOTAS_PRIVATE_H__
#define __EIOTAS_PRIVATE_H__
#ifdef HAVE_CONFIG_H
# include "eiotas_config.h"
#endif
#include "eiotas_main.h"
#include "eiotas_iota.h"
#include
#undef EINA_LOG_DOMAIN_DEFAULT
#define EINA_LOG_DOMAIN_DEFAULT eiotas_log_dom
#define EIOTA_LOG_DOMAIN "eiotas"
#define EIOTAS_MAX_VALUE_LENGTH 1024
#define EIOTAS_MAX_PATH_LENGTH 256
#define EIOTAS_MAX_ACTION_LENGTH 16
#define EIOTAS_PATH_SEP '/'
#define EIOTAS_FIELDS_SEP ','
#define EIOTAS_ACTION_SEP '?'
#define EIOTAS_PARTICLE_ARRAY_STEP 3
void eiotas_iota_desinit(Eiotas_Iota *iota);
int eiotas_iota_init(Eiotas_Iota *iota, const char *name, Eiotas_Iota *parent, Eiotas_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 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(eiotas_iota_init(_iota,_name,(Eiotas_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); \
eiotas_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(_eiotas_log_dom, __VA_ARGS__)
#ifdef ERR
#undef ERR
#endif
#define ERR(...) EINA_LOG_DOM_ERR(_eiotas_log_dom, __VA_ARGS__)
#ifdef WRN
#undef WRN
#endif
#define WRN(...) EINA_LOG_DOM_WARN(_eiotas_log_dom, __VA_ARGS__)
#ifdef INF
#undef INF
#endif
#define INF(...) EINA_LOG_DOM_INFO(_eiotas_log_dom, __VA_ARGS__)
#ifdef DBG
#undef DBG
#endif
#define DBG(...) EINA_LOG_DOM_DBG(_eiotas_log_dom, __VA_ARGS__)
#endif // __EIOTAS_PRIVATE_H__