osg命令行参数的解析方式

来源:互联网 发布:uiautomator2.0源码 编辑:程序博客网 时间:2024/05/22 11:47

osg中负责命令行解析的两个类是 osg::ArgumentParser和osg::ApplicationUsage,本文主要对这两个类的实现和使用方式做一个简要的说明。

  • ArgumentParser
这个类主要负责命令行参数的读取,当我们使用命令行工具的时候,一般是这样的方式 
test.exe -s c:/src.txt -d c:/dst.txt
这个命令行包含的参数是:argc = 5, argv = ["text.ext", "-s", "c:/src.txt", "-d", "c:/dst.txt"] 这样一个字符数组,ArgumentParser正是对这个参数的处理。

ArgumentParser包括结构:Parameter,这个结构主要记录了参数是什么类型以及这个类型参数的值(比如某个Parameter的类型是BOOL型,值是true)。ArgumentParser这个类最重要的作用是获取参数和参数的取值,比如我们需要获取一个参数列表中某个选项的值,比如我们想获取上面命令行中 -s 所指定的值是多少,那么就可以使用 read这个方法,通过read方法可以获取到“c:/src.txt”这个值,同时会把 “-s"和"c:/src.txt"从参数列表中删除掉。

  • ApplicationUsage
这个类名称正好说明了它的作用,Application Usage:应用程序的使用方式,它会给用户一大段的解释,介绍应用程序怎么使用,有点类似于应用程序的使用说明书。
这个类处理的参数类型由三种:
1)命令行参数
2)环境变量参数
3)键盘操作参数
它们对应的枚举变量是:
        enum Type        {            NO_HELP = 0x0,            COMMAND_LINE_OPTION = 0x1,            ENVIRONMENTAL_VARIABLE = 0x2,            KEYBOARD_MOUSE_BINDING = 0x4,            HELP_ALL = KEYBOARD_MOUSE_BINDING|ENVIRONMENTAL_VARIABLE|COMMAND_LINE_OPTION        };
当我们使用它的write方法时,可以将制定类型的帮助信息打印出来。

另外一个注意点是:ApplicationUsage使用了单例模式,可以通过另一个类得到这个实例,这个类是:ApplicationUsageProxy,它的实现方式如下:
        ApplicationUsageProxy(ApplicationUsage::Type type,const std::string& option,const std::string& explanation)        {            ApplicationUsage::instance()->addUsageExplanation(type,option,explanation);        }
也就是说当我们需要添加程序说明时,只需要构造这个类型的一个变量就可以了。

0 0
原创粉丝点击