Libecoli  0.11.3
Extensible COmmand LIne library
complete.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright 2016, Olivier MATZ <zer0@droids-corp.org>
3  */
4 
26 #pragma once
27 
28 #include <stdio.h>
29 #include <sys/queue.h>
30 #include <sys/types.h>
31 
32 struct ec_node;
33 struct ec_strvec;
34 
36 struct ec_comp_item;
37 
39 struct ec_comp_group;
40 
42 struct ec_comp;
43 
49  EC_COMP_FULL = 0x2,
51  EC_COMP_ALL = 0x7,
52 };
53 
73 struct ec_comp *ec_complete(const struct ec_node *node, const char *str);
74 
99 struct ec_comp *ec_complete_strvec(const struct ec_node *node, const struct ec_strvec *strvec);
100 
116  const struct ec_node *node,
117  enum ec_comp_type type,
118  const struct ec_strvec *strvec
119 );
120 
138  const struct ec_node *node,
139  struct ec_comp *comp,
140  const struct ec_strvec *strvec
141 );
142 
150 struct ec_comp *ec_comp(void);
151 
158 void ec_comp_free(struct ec_comp *comp);
159 
168 void ec_comp_dump(FILE *out, const struct ec_comp *comp);
169 
182 int ec_comp_merge(struct ec_comp *to, struct ec_comp *from);
183 
201 struct ec_pnode *ec_comp_get_cur_pstate(const struct ec_comp *comp);
202 
218 struct ec_comp_group *ec_comp_get_cur_group(const struct ec_comp *comp);
219 
231 struct ec_dict *ec_comp_get_attrs(const struct ec_comp *comp);
232 
267 struct ec_comp_item *ec_comp_add_item(
268  struct ec_comp *comp,
269  const struct ec_node *node,
270  enum ec_comp_type type,
271  const char *current,
272  const char *full
273 );
274 
283 const char *ec_comp_item_get_str(const struct ec_comp_item *item);
284 
296 const char *ec_comp_item_get_display(const struct ec_comp_item *item);
297 
309 const char *ec_comp_item_get_completion(const struct ec_comp_item *item);
310 
319 const char *ec_comp_item_get_current(const struct ec_comp_item *item);
320 
332 const struct ec_comp_group *ec_comp_item_get_grp(const struct ec_comp_item *item);
333 
343 enum ec_comp_type ec_comp_item_get_type(const struct ec_comp_item *item);
344 
353 const struct ec_node *ec_comp_item_get_node(const struct ec_comp_item *item);
354 
368 int ec_comp_item_set_str(struct ec_comp_item *item, const char *str);
369 
384 int ec_comp_item_set_display(struct ec_comp_item *item, const char *display);
385 
401 int ec_comp_item_set_completion(struct ec_comp_item *item, const char *completion);
402 
409 const struct ec_node *ec_comp_group_get_node(const struct ec_comp_group *grp);
410 
423 const struct ec_pnode *ec_comp_group_get_pstate(const struct ec_comp_group *grp);
424 
436 const struct ec_dict *ec_comp_group_get_attrs(const struct ec_comp_group *grp);
437 
460  const struct ec_node *node,
461  struct ec_comp *comp,
462  const struct ec_strvec *strvec
463 );
464 
479 size_t ec_comp_count(const struct ec_comp *comp, enum ec_comp_type type);
480 
494 struct ec_comp_item *ec_comp_iter_first(const struct ec_comp *comp, enum ec_comp_type type);
495 
509 struct ec_comp_item *ec_comp_iter_next(struct ec_comp_item *item, enum ec_comp_type type);
510 
522 #define EC_COMP_FOREACH(item, comp, type) \
523  for (item = ec_comp_iter_first(comp, type); item != NULL; \
524  item = ec_comp_iter_next(item, type))
525 
struct ec_comp * ec_comp(void)
const struct ec_node * ec_comp_item_get_node(const struct ec_comp_item *item)
struct ec_pnode * ec_comp_get_cur_pstate(const struct ec_comp *comp)
struct ec_comp_item * ec_comp_add_item(struct ec_comp *comp, const struct ec_node *node, enum ec_comp_type type, const char *current, const char *full)
struct ec_strvec * ec_complete_strvec_expand(const struct ec_node *node, enum ec_comp_type type, const struct ec_strvec *strvec)
const struct ec_dict * ec_comp_group_get_attrs(const struct ec_comp_group *grp)
void ec_comp_dump(FILE *out, const struct ec_comp *comp)
const struct ec_pnode * ec_comp_group_get_pstate(const struct ec_comp_group *grp)
int ec_complete_child(const struct ec_node *node, struct ec_comp *comp, const struct ec_strvec *strvec)
const char * ec_comp_item_get_display(const struct ec_comp_item *item)
struct ec_comp_item * ec_comp_iter_next(struct ec_comp_item *item, enum ec_comp_type type)
int ec_comp_item_set_display(struct ec_comp_item *item, const char *display)
const struct ec_comp_group * ec_comp_item_get_grp(const struct ec_comp_item *item)
struct ec_comp_item * ec_comp_iter_first(const struct ec_comp *comp, enum ec_comp_type type)
struct ec_comp * ec_complete_strvec(const struct ec_node *node, const struct ec_strvec *strvec)
const char * ec_comp_item_get_str(const struct ec_comp_item *item)
int ec_complete_unknown(const struct ec_node *node, struct ec_comp *comp, const struct ec_strvec *strvec)
size_t ec_comp_count(const struct ec_comp *comp, enum ec_comp_type type)
void ec_comp_free(struct ec_comp *comp)
const char * ec_comp_item_get_completion(const struct ec_comp_item *item)
struct ec_comp * ec_complete(const struct ec_node *node, const char *str)
ec_comp_type
Definition: complete.h:47
int ec_comp_merge(struct ec_comp *to, struct ec_comp *from)
struct ec_comp_group * ec_comp_get_cur_group(const struct ec_comp *comp)
int ec_comp_item_set_completion(struct ec_comp_item *item, const char *completion)
const char * ec_comp_item_get_current(const struct ec_comp_item *item)
const struct ec_node * ec_comp_group_get_node(const struct ec_comp_group *grp)
int ec_comp_item_set_str(struct ec_comp_item *item, const char *str)
struct ec_dict * ec_comp_get_attrs(const struct ec_comp *comp)
enum ec_comp_type ec_comp_item_get_type(const struct ec_comp_item *item)
@ EC_COMP_FULL
Definition: complete.h:49
@ EC_COMP_PARTIAL
Definition: complete.h:50
@ EC_COMP_UNKNOWN
Definition: complete.h:48
@ EC_COMP_ALL
Definition: complete.h:51
struct ec_dict * ec_dict(void)
struct ec_node * ec_node(const char *typename, const char *id)
struct ec_pnode * ec_pnode(const struct ec_node *node)
struct ec_strvec * ec_strvec(void)