Libecoli 0.4.0
Extensible COmmand LIne library
 
Loading...
Searching...
No Matches
ecoli_complete.h
1/* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright 2016, Olivier MATZ <zer0@droids-corp.org>
3 */
4
27
28#ifndef ECOLI_COMPLETE_
29#define ECOLI_COMPLETE_
30
31#include <sys/queue.h>
32#include <sys/types.h>
33#include <stdio.h>
34
35struct ec_node;
36struct ec_comp_item;
37struct ec_comp_group;
38struct ec_comp;
39struct ec_strvec;
40
44enum ec_comp_type {
45 EC_COMP_UNKNOWN = 0x1,
46 EC_COMP_FULL = 0x2,
47 EC_COMP_PARTIAL = 0x4,
48 EC_COMP_ALL = 0x7,
49};
50
70struct ec_comp *ec_complete(const struct ec_node *node,
71 const char *str);
72
97struct ec_comp *ec_complete_strvec(const struct ec_node *node,
98 const struct ec_strvec *strvec);
99
116int ec_complete_child(const struct ec_node *node,
117 struct ec_comp *comp,
118 const struct ec_strvec *strvec);
119
127struct ec_comp *ec_comp(void);
128
135void ec_comp_free(struct ec_comp *comp);
136
145void ec_comp_dump(FILE *out, const struct ec_comp *comp);
146
159int ec_comp_merge(struct ec_comp *to, struct ec_comp *from);
160
178struct ec_pnode *ec_comp_get_cur_pstate(const struct ec_comp *comp);
179
195struct ec_comp_group *ec_comp_get_cur_group(const struct ec_comp *comp);
196
208struct ec_dict *ec_comp_get_attrs(const struct ec_comp *comp);
209
244struct ec_comp_item *ec_comp_add_item(struct ec_comp *comp,
245
246 const struct ec_node *node, enum ec_comp_type type,
247 const char *start, const char *full);
248
257const char *
258ec_comp_item_get_str(const struct ec_comp_item *item);
259
271const char *
272ec_comp_item_get_display(const struct ec_comp_item *item);
273
285const char *
286ec_comp_item_get_completion(const struct ec_comp_item *item);
287
299const struct ec_comp_group *
300ec_comp_item_get_grp(const struct ec_comp_item *item);
301
311enum ec_comp_type
312ec_comp_item_get_type(const struct ec_comp_item *item);
313
322const struct ec_node *
323ec_comp_item_get_node(const struct ec_comp_item *item);
324
338int ec_comp_item_set_str(struct ec_comp_item *item, const char *str);
339
354int ec_comp_item_set_display(struct ec_comp_item *item,
355 const char *display);
356
372int ec_comp_item_set_completion(struct ec_comp_item *item,
373 const char *completion);
374
381const struct ec_node *
382ec_comp_group_get_node(const struct ec_comp_group *grp);
383
395const struct ec_pnode *
396ec_comp_group_get_pstate(const struct ec_comp_group *grp);
397
410const struct ec_dict *
411ec_comp_group_get_attrs(const struct ec_comp_group *grp);
412
413
435int
436ec_complete_unknown(const struct ec_node *node,
437 struct ec_comp *comp,
438 const struct ec_strvec *strvec);
439
454size_t ec_comp_count(const struct ec_comp *comp, enum ec_comp_type type);
455
469struct ec_comp_item *
470ec_comp_iter_first(const struct ec_comp *comp, enum ec_comp_type type);
471
485struct ec_comp_item *
486ec_comp_iter_next(struct ec_comp_item *item, enum ec_comp_type type);
487
499#define EC_COMP_FOREACH(item, comp, type) \
500 for (item = ec_comp_iter_first(comp, type); \
501 item != NULL; \
502 item = ec_comp_iter_next(item, type))
503
504#endif
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)