Libecoli 0.11.1
Extensible COmmand LIne library
Loading...
Searching...
No Matches
complete.h
1/* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright 2016, Olivier MATZ <zer0@droids-corp.org>
3 */
4
25
26#pragma once
27
28#include <stdio.h>
29#include <sys/queue.h>
30#include <sys/types.h>
31
32struct ec_node;
33struct ec_strvec;
34
36struct ec_comp_item;
37
39struct ec_comp_group;
40
42struct ec_comp;
43
53
73struct ec_comp *ec_complete(const struct ec_node *node, const char *str);
74
99struct 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
150struct ec_comp *ec_comp(void);
151
158void ec_comp_free(struct ec_comp *comp);
159
168void ec_comp_dump(FILE *out, const struct ec_comp *comp);
169
182int ec_comp_merge(struct ec_comp *to, struct ec_comp *from);
183
201struct ec_pnode *ec_comp_get_cur_pstate(const struct ec_comp *comp);
202
218struct ec_comp_group *ec_comp_get_cur_group(const struct ec_comp *comp);
219
231struct ec_dict *ec_comp_get_attrs(const struct ec_comp *comp);
232
267struct 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
283const char *ec_comp_item_get_str(const struct ec_comp_item *item);
284
296const char *ec_comp_item_get_display(const struct ec_comp_item *item);
297
309const char *ec_comp_item_get_completion(const struct ec_comp_item *item);
310
319const char *ec_comp_item_get_current(const struct ec_comp_item *item);
320
332const struct ec_comp_group *ec_comp_item_get_grp(const struct ec_comp_item *item);
333
343enum ec_comp_type ec_comp_item_get_type(const struct ec_comp_item *item);
344
353const struct ec_node *ec_comp_item_get_node(const struct ec_comp_item *item);
354
368int ec_comp_item_set_str(struct ec_comp_item *item, const char *str);
369
384int ec_comp_item_set_display(struct ec_comp_item *item, const char *display);
385
401int ec_comp_item_set_completion(struct ec_comp_item *item, const char *completion);
402
409const struct ec_node *ec_comp_group_get_node(const struct ec_comp_group *grp);
410
423const struct ec_pnode *ec_comp_group_get_pstate(const struct ec_comp_group *grp);
424
436const 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
479size_t ec_comp_count(const struct ec_comp *comp, enum ec_comp_type type);
480
494struct ec_comp_item *ec_comp_iter_first(const struct ec_comp *comp, enum ec_comp_type type);
495
509struct 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
const struct ec_comp_group * ec_comp_item_get_grp(const struct ec_comp_item *item)
const struct ec_node * ec_comp_group_get_node(const struct ec_comp_group *grp)
struct ec_strvec * ec_complete_strvec_expand(const struct ec_node *node, enum ec_comp_type type, const struct ec_strvec *strvec)
struct ec_comp_item * ec_comp_iter_next(struct ec_comp_item *item, enum ec_comp_type type)
void ec_comp_dump(FILE *out, const struct ec_comp *comp)
const char * ec_comp_item_get_completion(const struct ec_comp_item *item)
int ec_complete_child(const struct ec_node *node, struct ec_comp *comp, const struct ec_strvec *strvec)
struct ec_comp_group * ec_comp_get_cur_group(const struct ec_comp *comp)
struct ec_dict * ec_comp_get_attrs(const struct ec_comp *comp)
int ec_comp_item_set_display(struct ec_comp_item *item, const char *display)
const struct ec_pnode * ec_comp_group_get_pstate(const struct ec_comp_group *grp)
struct ec_comp * ec_comp(void)
struct ec_comp * ec_complete(const struct ec_node *node, const char *str)
const struct ec_dict * ec_comp_group_get_attrs(const struct ec_comp_group *grp)
struct ec_comp_item * ec_comp_iter_first(const struct ec_comp *comp, enum ec_comp_type type)
int ec_complete_unknown(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)
const struct ec_node * ec_comp_item_get_node(const struct ec_comp_item *item)
struct ec_comp * ec_complete_strvec(const struct ec_node *node, 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)
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)
ec_comp_type
Definition complete.h:47
struct ec_pnode * ec_comp_get_cur_pstate(const struct ec_comp *comp)
int ec_comp_merge(struct ec_comp *to, struct ec_comp *from)
const char * ec_comp_item_get_current(const struct ec_comp_item *item)
int ec_comp_item_set_completion(struct ec_comp_item *item, const char *completion)
int ec_comp_item_set_str(struct ec_comp_item *item, const char *str)
const char * ec_comp_item_get_str(const struct ec_comp_item *item)
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)