Libecoli  0.10.1
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_comp_item;
34 struct ec_comp_group;
35 struct ec_comp;
36 struct ec_strvec;
37 
42  EC_COMP_UNKNOWN = 0x1,
43  EC_COMP_FULL = 0x2,
45  EC_COMP_ALL = 0x7,
46 };
47 
67 struct ec_comp *ec_complete(const struct ec_node *node, const char *str);
68 
93 struct ec_comp *ec_complete_strvec(const struct ec_node *node, const struct ec_strvec *strvec);
94 
110  const struct ec_node *node,
111  enum ec_comp_type type,
112  const struct ec_strvec *strvec
113 );
114 
132  const struct ec_node *node,
133  struct ec_comp *comp,
134  const struct ec_strvec *strvec
135 );
136 
144 struct ec_comp *ec_comp(void);
145 
152 void ec_comp_free(struct ec_comp *comp);
153 
162 void ec_comp_dump(FILE *out, const struct ec_comp *comp);
163 
176 int ec_comp_merge(struct ec_comp *to, struct ec_comp *from);
177 
195 struct ec_pnode *ec_comp_get_cur_pstate(const struct ec_comp *comp);
196 
212 struct ec_comp_group *ec_comp_get_cur_group(const struct ec_comp *comp);
213 
225 struct ec_dict *ec_comp_get_attrs(const struct ec_comp *comp);
226 
261 struct ec_comp_item *ec_comp_add_item(
262  struct ec_comp *comp,
263  const struct ec_node *node,
264  enum ec_comp_type type,
265  const char *start,
266  const char *full
267 );
268 
277 const char *ec_comp_item_get_str(const struct ec_comp_item *item);
278 
290 const char *ec_comp_item_get_display(const struct ec_comp_item *item);
291 
303 const char *ec_comp_item_get_completion(const struct ec_comp_item *item);
304 
316 const struct ec_comp_group *ec_comp_item_get_grp(const struct ec_comp_item *item);
317 
327 enum ec_comp_type ec_comp_item_get_type(const struct ec_comp_item *item);
328 
337 const struct ec_node *ec_comp_item_get_node(const struct ec_comp_item *item);
338 
352 int ec_comp_item_set_str(struct ec_comp_item *item, const char *str);
353 
368 int ec_comp_item_set_display(struct ec_comp_item *item, const char *display);
369 
385 int ec_comp_item_set_completion(struct ec_comp_item *item, const char *completion);
386 
393 const struct ec_node *ec_comp_group_get_node(const struct ec_comp_group *grp);
394 
406 const struct ec_pnode *ec_comp_group_get_pstate(const struct ec_comp_group *grp);
407 
420 const struct ec_dict *ec_comp_group_get_attrs(const struct ec_comp_group *grp);
421 
444  const struct ec_node *node,
445  struct ec_comp *comp,
446  const struct ec_strvec *strvec
447 );
448 
463 size_t ec_comp_count(const struct ec_comp *comp, enum ec_comp_type type);
464 
478 struct ec_comp_item *ec_comp_iter_first(const struct ec_comp *comp, enum ec_comp_type type);
479 
493 struct ec_comp_item *ec_comp_iter_next(struct ec_comp_item *item, enum ec_comp_type type);
494 
506 #define EC_COMP_FOREACH(item, comp, type) \
507  for (item = ec_comp_iter_first(comp, type); item != NULL; \
508  item = ec_comp_iter_next(item, type))
509 
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_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:41
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 struct ec_node * ec_comp_group_get_node(const struct ec_comp_group *grp)
struct ec_comp_item * ec_comp_add_item(struct ec_comp *comp, const struct ec_node *node, enum ec_comp_type type, const char *start, const char *full)
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:43
@ EC_COMP_PARTIAL
Definition: complete.h:44
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)