1.设计思路
前段时间研究了一下红黑树,趁着今天有时间,就使用红黑树实现了一下命令解析器。
命令解析器的原则是根据输入的命令,调用相关命令的功能。命令的名字作为红黑树的键值,而相关命令的功能实现则设计为键值。因此红黑树的实现作为了命令解析器的数据结构组织手段。
增加和减少命令时,尽量不需要跨文件的修改(如果只有几个命令,可能可以接受,但是后期维护也是相当大的工作量)。
命令的相关功能调用,为了达到相关文件以及模块的去耦合作用,使用函数指针进行实现。
底层的框架实现命令的注册以及注销,相关命令的功能调用等。而使用这些调用接口的则将会在具体的功能文件中进行,这样达到了增删等动作不需要改动底层的框架,而只需要在自己的功能文件中进行即可。
2.具体实现
红黑树的实现可参照之前的实现。
2.1底层框架(cmd)
底层框架只需要给功能函数提供注册,注销,命令功能函数的调用,以及添加到红黑树时的比较规则函数即可。
2.1.1 注册函数
注册函数就是调用了红黑树的put函数,将命令存放到红黑树中。
void register_cmd(struct entry ** c