--- cfg_node.c 2002/07/05 15:32:42 1.4
+++ cfg_node.c 2002/07/10 12:00:23 1.5
@@ -33,9 +33,10 @@
#include <stdarg.h>
#include <unistd.h>
+#include "cfg_main.h"
#include "cfg_node.h"
-cfg_rc_t cfg_node_create(cfg_node_t **node)
+cfg_rc_t cfg_node_create(cfg_t *cfg, cfg_node_t **node)
{
cfg_node_t *n;
@@ -44,14 +45,32 @@
n->parent = NULL;
n->rbroth = NULL;
n->child1 = NULL;
- n->type = CFG_NODE_TYPE_TOK;
+ n->type = CFG_NODE_TYPE_ARG;
n->token = NULL;
cfg_data_init(&n->data);
*node = n;
return CFG_OK;
}
-cfg_rc_t cfg_node_set(cfg_node_t *node, cfg_node_attr_t attr, ...)
+cfg_rc_t cfg_node_destroy(cfg_t *cfg, cfg_node_t *node)
+{
+ if (node == NULL)
+ return CFG_ERR_ARG;
+ if (node->token != NULL)
+ free(node->token);
+ free(node);
+ return CFG_OK;
+}
+
+cfg_rc_t cfg_node_clone(cfg_t *cfg, cfg_node_t *node, cfg_node_t **node2)
+{
+ if (node == NULL || node2 == NULL)
+ return CFG_ERR_ARG;
+ /* FIXME */
+ return CFG_OK;
+}
+
+cfg_rc_t cfg_node_set(cfg_t *cfg, cfg_node_t *node, cfg_node_attr_t attr, ...)
{
va_list ap;
@@ -89,7 +108,7 @@
return CFG_OK;
}
-cfg_rc_t cfg_node_get(cfg_node_t *node, cfg_node_attr_t attr, ...)
+cfg_rc_t cfg_node_get(cfg_t *cfg, cfg_node_t *node, cfg_node_attr_t attr, ...)
{
va_list ap;
@@ -134,12 +153,22 @@
return CFG_OK;
}
-cfg_rc_t cfg_node_goto(cfg_node_t *node, cfg_node_goto_t id, cfg_node_t **node2)
+cfg_rc_t cfg_node_root(cfg_t *cfg, cfg_node_t **node)
{
- cfg_node_t *n;
+ if (cfg == NULL || node == NULL)
+ return CFG_ERR_ARG;
+ *node = cfg->root;
+ return CFG_OK;
+}
- if (node == NULL || node2 == NULL)
+cfg_rc_t cfg_node_goto(cfg_t *cfg, cfg_node_t **node, const char *spec)
+{
+
+ if (cfg == NULL || node == NULL || spec == NULL)
return CFG_ERR_ARG;
+ /* FIXME */
+#if 0
+ cfg_node_t *n;
*node2 = NULL;
switch (id) {
case CFG_NODE_GOTO_PARENT: {
@@ -176,16 +205,78 @@
}
if (*node2 == NULL)
return CFG_ERR_GOT;
+#endif
+ return CFG_OK;
+}
+
+cfg_rc_t
+cfg_node_select(
+ cfg_t *cfg,
+ cfg_node_t *node,
+ const char *dotpath,
+ cfg_node_t **node2)
+{
+ /* FIXME */
+ return CFG_OK;
+}
+
+cfg_rc_t
+cfg_node_find(
+ cfg_t *cfg,
+ cfg_node_t *node,
+ cfg_rc_t (*cb_fct_cmp)(cfg_t *, cfg_node_t *, void *),
+ void *cb_ctx_cmp,
+ cfg_node_t **cont)
+{
+ /* FIXME */
return CFG_OK;
}
-cfg_rc_t cfg_node_link(cfg_node_t *node, cfg_node_link_t id, cfg_node_t *node2)
+cfg_rc_t
+cfg_node_apply(
+ cfg_t *cfg,
+ cfg_node_t *node,
+ cfg_rc_t (*cb_fct_cmp)(cfg_t *, cfg_node_t *, void *),
+ void *cb_ctx_cmp,
+ cfg_rc_t (*cb_fct_cb)(cfg_t *, cfg_node_t *, void *),
+ void *cb_ctx_cb)
+{
+ /* FIXME */
+#if 0
+ cfg_rc_t rc;
+
+ if (cb_fct == NULL)
+ return CFG_ERR_ARG;
+ if (node != NULL) {
+ cb_fct(cb_ctx, node);
+ if (node->child1 != NULL)
+ if ((rc = cfg_node_apply(node->child1, cb_fct, cb_ctx)) != CFG_OK)
+ return rc;
+ if (node->rbroth != NULL)
+ if ((rc = cfg_node_apply(node->rbroth, cb_fct, cb_ctx)) != CFG_OK)
+ return rc;
+ }
+#endif
+ return CFG_OK;
+}
+
+cfg_rc_t
+cfg_node_cmp(
+ cfg_t *cfg,
+ cfg_node_t *node,
+ void *token)
+{
+ /* FIXME */
+ return CFG_OK;
+}
+
+cfg_rc_t cfg_node_link(cfg_t *cfg, cfg_node_t *node, cfg_node_attr_t attr, cfg_node_t *node2)
{
cfg_node_t *n;
if (node == NULL || node2 == NULL)
return CFG_ERR_ARG;
- if (id == CFG_NODE_LINK_RBROTH) {
+ if (attr == CFG_NODE_ATTR_RBROTH) {
/* make node a rbroth */
n = node2;
n->parent = node->parent;
@@ -196,7 +287,7 @@
n->rbroth = node->rbroth;
node->rbroth = node2;
}
- else if (id == CFG_NODE_LINK_CHILD1) {
+ else if (attr == CFG_NODE_ATTR_CHILD1) {
/* make node a child1 */
n = node2;
n->parent = node;
@@ -207,10 +298,13 @@
n->rbroth = node->child1;
node->child1 = node2;
}
+ /* FIXME more linkage possibilities */
+ else
+ return CFG_ERR_ARG;
return CFG_OK;
}
-cfg_rc_t cfg_node_unlink(cfg_node_t *node)
+cfg_rc_t cfg_node_unlink(cfg_t *cfg, cfg_node_t *node)
{
cfg_node_t *n;
@@ -232,31 +326,3 @@
return CFG_OK;
}
-cfg_rc_t cfg_node_apply(cfg_node_t *node, void (*cb_fct)(void *, cfg_node_t *), void *cb_ctx)
-{
- cfg_rc_t rc;
-
- if (cb_fct == NULL)
- return CFG_ERR_ARG;
- if (node != NULL) {
- cb_fct(cb_ctx, node);
- if (node->child1 != NULL)
- if ((rc = cfg_node_apply(node->child1, cb_fct, cb_ctx)) != CFG_OK)
- return rc;
- if (node->rbroth != NULL)
- if ((rc = cfg_node_apply(node->rbroth, cb_fct, cb_ctx)) != CFG_OK)
- return rc;
- }
- return CFG_OK;
-}
-
-cfg_rc_t cfg_node_destroy(cfg_node_t *node)
-{
- if (node == NULL)
- return CFG_ERR_ARG;
- if (node->token != NULL)
- free(node->token);
- free(node);
- return CFG_OK;
-}
-
|