summaryrefslogtreecommitdiffstats
path: root/src/lib/edoors_private.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/edoors_private.h')
-rw-r--r--src/lib/edoors_private.h126
1 files changed, 126 insertions, 0 deletions
diff --git a/src/lib/edoors_private.h b/src/lib/edoors_private.h
new file mode 100644
index 0000000..c392443
--- /dev/null
+++ b/src/lib/edoors_private.h
@@ -0,0 +1,126 @@
+/* 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 <http://www.gnu.org/licenses/>.
+ */
+
+#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 <eina_log.h>
+#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__