Libecoli 0.10.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_comp_item;
34struct ec_comp_group;
35struct ec_comp;
36struct ec_strvec;
37
42 EC_COMP_UNKNOWN = 0x1,
45 EC_COMP_ALL = 0x7,
46};
47
67struct ec_comp *ec_complete(const struct ec_node *node, const char *str);
68
93struct 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
144struct ec_comp *ec_comp(void);
145
152void ec_comp_free(struct ec_comp *comp);
153
162void ec_comp_dump(FILE *out, const struct ec_comp *comp);
163
176int ec_comp_merge(struct ec_comp *to, struct ec_comp *from);
177
195struct ec_pnode *ec_comp_get_cur_pstate(const struct ec_comp *comp);
196
212struct ec_comp_group *ec_comp_get_cur_group(const struct ec_comp *comp);
213
225struct ec_dict *ec_comp_get_attrs(const struct ec_comp *comp);
226
261struct 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
277const char *ec_comp_item_get_str(const struct ec_comp_item *item);
278
290const char *ec_comp_item_get_display(const struct ec_comp_item *item);
291
303const char *ec_comp_item_get_completion(const struct ec_comp_item *item);
304
316const struct ec_comp_group *ec_comp_item_get_grp(const struct ec_comp_item *item);
317
327enum ec_comp_type ec_comp_item_get_type(const struct ec_comp_item *item);
328
337const struct ec_node *ec_comp_item_get_node(const struct ec_comp_item *item);
338
352int ec_comp_item_set_str(struct ec_comp_item *item, const char *str);
353
368int ec_comp_item_set_display(struct ec_comp_item *item, const char *display);
369
385int ec_comp_item_set_completion(struct ec_comp_item *item, const char *completion);
386
393const struct ec_node *ec_comp_group_get_node(const struct ec_comp_group *grp);
394
406const struct ec_pnode *ec_comp_group_get_pstate(const struct ec_comp_group *grp);
407
420const 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
463size_t ec_comp_count(const struct ec_comp *comp, enum ec_comp_type type);
464
478struct ec_comp_item *ec_comp_iter_first(const struct ec_comp *comp, enum ec_comp_type type);
479
493struct 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
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 *start, const char *full)
ec_comp_type
Definition complete.h:41
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)
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: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)