struct ec_dict *attrs;
};
+TAILQ_HEAD(ec_comp_item_list, ec_comp_item);
+
+struct ec_comp_group {
+ TAILQ_ENTRY(ec_comp_group) next;
+ const struct ec_node *node;
+ struct ec_comp_item_list items;
+ struct ec_parse *state;
+ struct ec_dict *attrs;
+};
+
+TAILQ_HEAD(ec_comp_group_list, ec_comp_group);
+
+struct ec_comp {
+ unsigned count;
+ unsigned count_full;
+ unsigned count_partial;
+ unsigned count_unknown;
+ struct ec_parse *cur_state;
+ struct ec_comp_group *cur_group;
+ struct ec_comp_group_list groups;
+ struct ec_dict *attrs;
+};
+
struct ec_comp *ec_comp(struct ec_parse *state)
{
struct ec_comp *comp = NULL;
return NULL;
}
-struct ec_parse *ec_comp_get_state(struct ec_comp *comp)
+struct ec_parse *ec_comp_get_state(const struct ec_comp *comp)
{
return comp->cur_state;
}
+struct ec_comp_group *ec_comp_get_group(const struct ec_comp *comp)
+{
+ return comp->cur_group;
+}
+
+struct ec_dict *ec_comp_get_attrs(const struct ec_comp *comp)
+{
+ return comp->attrs;
+}
+
int
ec_node_complete_child(const struct ec_node *node,
struct ec_comp *comp,
ec_free(grp);
}
+const struct ec_node *
+ec_comp_group_get_node(const struct ec_comp_group *grp)
+{
+ return grp->node;
+}
+
+const struct ec_parse *
+ec_comp_group_get_state(const struct ec_comp_group *grp)
+{
+ return grp->state;
+}
+
+const struct ec_dict *
+ec_comp_group_get_attrs(const struct ec_comp_group *grp)
+{
+ return grp->attrs;
+}
+
void ec_comp_free(struct ec_comp *comp)
{
struct ec_comp_group *grp;