docs:cli_parser
This is an old revision of the document!
CLI parser
Data structure is a lookup tree.
Each node is structured as such:
| arg_node |
|---|
| char* full_name |
| char* quick_name |
| size_t nb_leaves |
| arg_node **leaves |
| void (*callback)( const char* command, size_t offset) |
The command parser works as such:
arg_node cfg_root = ....; arg_node *cfg_cur = cfg_root; void process_cmd( arg_node *cfg_cur, const char* command, size_t offset=0;) { size_t arg_len=0; char* arg = command+offset; // Search the next argument boundary while( arg[arg_len] != '\0' && arg[arg_len] != ' ') ++arg_len; if( arg_len == 0 ) { if( cfg_cur->callback != null) cfg_cur->callback( command); } if( leaves != null ) { for( size_t i=0; i<cfg_cur->nb_leaves; ++i) { if( strncmp( cfg_cur->quick_name, arg, arg_len) == 0) { // Positive match } } } }
docs/cli_parser.1601541570.txt.gz · Last modified: 2020/10/01 10:39 by root