blob: 3e3bbfbd1821dc2e7c79d80e4ff080083de2cb77 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
#include <stdint.h>
struct buffer;
struct command_ctx {
struct buffer *current_buffer;
};
typedef void (*command_fn)(struct command_ctx ctx, int argc,
const char *argv[]);
struct command {
const char *name;
command_fn fn;
};
struct hashed_command {
uint32_t hash;
struct command *command;
};
struct commands {
struct hashed_command *commands;
uint32_t ncommands;
uint32_t capacity;
};
struct commands command_list_create(uint32_t capacity);
void command_list_destroy(struct commands *commands);
uint32_t register_command(struct commands *commands, struct command *command);
void register_commands(struct commands *command_list, struct command *commands,
uint32_t ncommands);
uint32_t hash_command_name(const char *name);
struct command *lookup_command(struct commands *commands, const char *name);
struct command *lookup_command_by_hash(struct commands *commands,
uint32_t hash);
|