X-Git-Url: http://git.droids-corp.org/?p=protos%2Flibecoli.git;a=blobdiff_plain;f=src%2Fecoli_node_re_lex.c;fp=src%2Fecoli_node_re_lex.c;h=cff1c8c5ff9d424f2438203fd86e831994fc794a;hp=a007aba5d56cdee55fb5029887724f8bf10d4fbd;hb=376f5016e3979247bf0db515e47df49ba1eb82ac;hpb=249ab86786242560a3da422eb59b96479d47859a diff --git a/src/ecoli_node_re_lex.c b/src/ecoli_node_re_lex.c index a007aba..cff1c8c 100644 --- a/src/ecoli_node_re_lex.c +++ b/src/ecoli_node_re_lex.c @@ -34,7 +34,6 @@ struct regexp_pattern { }; struct ec_node_re_lex { - struct ec_node gen; struct ec_node *child; struct regexp_pattern *table; size_t len; @@ -116,17 +115,17 @@ fail: } static int -ec_node_re_lex_parse(const struct ec_node *gen_node, +ec_node_re_lex_parse(const struct ec_node *node, struct ec_parse *state, const struct ec_strvec *strvec) { - struct ec_node_re_lex *node = (struct ec_node_re_lex *)gen_node; + struct ec_node_re_lex *priv = ec_node_priv(node); struct ec_strvec *new_vec = NULL; struct ec_parse *child_parse; const char *str; int ret; - if (node->child == NULL) { + if (priv->child == NULL) { errno = EINVAL; goto fail; } @@ -135,12 +134,12 @@ ec_node_re_lex_parse(const struct ec_node *gen_node, new_vec = ec_strvec(); } else { str = ec_strvec_val(strvec, 0); - new_vec = tokenize(node->table, node->len, str); + new_vec = tokenize(priv->table, priv->len, str); } if (new_vec == NULL) goto fail; - ret = ec_node_parse_child(node->child, state, new_vec); + ret = ec_node_parse_child(priv->child, state, new_vec); if (ret < 0) goto fail; @@ -163,41 +162,41 @@ ec_node_re_lex_parse(const struct ec_node *gen_node, return -1; } -static void ec_node_re_lex_free_priv(struct ec_node *gen_node) +static void ec_node_re_lex_free_priv(struct ec_node *node) { - struct ec_node_re_lex *node = (struct ec_node_re_lex *)gen_node; + struct ec_node_re_lex *priv = ec_node_priv(node); unsigned int i; - ec_node_free(node->child); - for (i = 0; i < node->len; i++) { - ec_free(node->table[i].pattern); - ec_free(node->table[i].attr_name); - regfree(&node->table[i].r); + ec_node_free(priv->child); + for (i = 0; i < priv->len; i++) { + ec_free(priv->table[i].pattern); + ec_free(priv->table[i].attr_name); + regfree(&priv->table[i].r); } - ec_free(node->table); + ec_free(priv->table); } static size_t -ec_node_re_lex_get_children_count(const struct ec_node *gen_node) +ec_node_re_lex_get_children_count(const struct ec_node *node) { - struct ec_node_re_lex *node = (struct ec_node_re_lex *)gen_node; + struct ec_node_re_lex *priv = ec_node_priv(node); - if (node->child) + if (priv->child) return 1; return 0; } static int -ec_node_re_lex_get_child(const struct ec_node *gen_node, size_t i, +ec_node_re_lex_get_child(const struct ec_node *node, size_t i, struct ec_node **child, unsigned int *refs) { - struct ec_node_re_lex *node = (struct ec_node_re_lex *)gen_node; + struct ec_node_re_lex *priv = ec_node_priv(node); if (i >= 1) return -1; - *child = node->child; + *child = priv->child; *refs = 2; return 0; } @@ -252,10 +251,10 @@ static const struct ec_config_schema ec_node_re_lex_schema[] = { }, }; -static int ec_node_re_lex_set_config(struct ec_node *gen_node, +static int ec_node_re_lex_set_config(struct ec_node *node, const struct ec_config *config) { - struct ec_node_re_lex *node = (struct ec_node_re_lex *)gen_node; + struct ec_node_re_lex *priv = ec_node_priv(node); struct regexp_pattern *table = NULL; const struct ec_config *patterns, *child, *elt, *pattern, *keep, *attr; char *pattern_str = NULL, *attr_name = NULL; @@ -340,17 +339,17 @@ static int ec_node_re_lex_set_config(struct ec_node *gen_node, } } - if (node->child != NULL) - ec_node_free(node->child); - node->child = ec_node_clone(child->node); - for (i = 0; i < (ssize_t)node->len; i++) { - ec_free(node->table[i].pattern); - ec_free(node->table[i].attr_name); - regfree(&node->table[i].r); + if (priv->child != NULL) + ec_node_free(priv->child); + priv->child = ec_node_clone(child->node); + for (i = 0; i < (ssize_t)priv->len; i++) { + ec_free(priv->table[i].pattern); + ec_free(priv->table[i].attr_name); + regfree(&priv->table[i].r); } - ec_free(node->table); - node->table = table; - node->len = n; + ec_free(priv->table); + priv->table = table; + priv->len = n; return 0; @@ -382,14 +381,14 @@ static struct ec_node_type ec_node_re_lex_type = { EC_NODE_TYPE_REGISTER(ec_node_re_lex_type); -int ec_node_re_lex_add(struct ec_node *gen_node, const char *pattern, int keep, +int ec_node_re_lex_add(struct ec_node *node, const char *pattern, int keep, const char *attr_name) { const struct ec_config *cur_config = NULL; struct ec_config *config = NULL, *patterns = NULL, *elt = NULL; int ret; - if (ec_node_check_type(gen_node, &ec_node_re_lex_type) < 0) + if (ec_node_check_type(node, &ec_node_re_lex_type) < 0) goto fail; elt = ec_config_dict(); @@ -405,7 +404,7 @@ int ec_node_re_lex_add(struct ec_node *gen_node, const char *pattern, int keep, goto fail; } - cur_config = ec_node_get_config(gen_node); + cur_config = ec_node_get_config(node); if (cur_config == NULL) config = ec_config_dict(); else @@ -429,7 +428,7 @@ int ec_node_re_lex_add(struct ec_node *gen_node, const char *pattern, int keep, } elt = NULL; - ret = ec_node_set_config(gen_node, config); + ret = ec_node_set_config(node, config); config = NULL; /* freed */ if (ret < 0) goto fail; @@ -443,16 +442,16 @@ fail: } static int -ec_node_re_lex_set_child(struct ec_node *gen_node, struct ec_node *child) +ec_node_re_lex_set_child(struct ec_node *node, struct ec_node *child) { const struct ec_config *cur_config = NULL; struct ec_config *config = NULL; int ret; - if (ec_node_check_type(gen_node, &ec_node_re_lex_type) < 0) + if (ec_node_check_type(node, &ec_node_re_lex_type) < 0) goto fail; - cur_config = ec_node_get_config(gen_node); + cur_config = ec_node_get_config(node); if (cur_config == NULL) config = ec_config_dict(); else @@ -466,7 +465,7 @@ ec_node_re_lex_set_child(struct ec_node *gen_node, struct ec_node *child) } child = NULL; /* freed */ - ret = ec_node_set_config(gen_node, config); + ret = ec_node_set_config(node, config); config = NULL; /* freed */ if (ret < 0) goto fail; @@ -481,24 +480,24 @@ fail: struct ec_node *ec_node_re_lex(const char *id, struct ec_node *child) { - struct ec_node *gen_node = NULL; + struct ec_node *node = NULL; if (child == NULL) return NULL; - gen_node = ec_node_from_type(&ec_node_re_lex_type, id); - if (gen_node == NULL) + node = ec_node_from_type(&ec_node_re_lex_type, id); + if (node == NULL) goto fail; - if (ec_node_re_lex_set_child(gen_node, child) < 0) { + if (ec_node_re_lex_set_child(node, child) < 0) { child = NULL; /* freed */ goto fail; } - return gen_node; + return node; fail: - ec_node_free(gen_node); + ec_node_free(node); ec_node_free(child); return NULL; }