当前位置: 首页>>代码示例>>C++>>正文


C++ ModulePtr::dump方法代码示例

本文整理汇总了C++中ModulePtr::dump方法的典型用法代码示例。如果您正苦于以下问题:C++ ModulePtr::dump方法的具体用法?C++ ModulePtr::dump怎么用?C++ ModulePtr::dump使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ModulePtr的用法示例。


在下文中一共展示了ModulePtr::dump方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: main

int main(int argc, char const *argv[]) {
    kiwi::ManagedStatic guard;
    int  opt = 0;

    // Declare the supported options.
    po::options_description desc("Allowed options");
    desc.add_options()
        ("help", "produce help message")
        ("version", "dump version")
        ("optimization,O", po::value<int>(&opt)->default_value(0), "optimization level [0-3]")
        ("debug", "debug parser and scanner")
        ("ir-dump", "dump generated LLVM module")
        ("run", "run script, even if --ir-dump enabled")
        ("input-file", po::value< std::vector< std::string > >(), "input file")
    ;

    // Add position for files
    po::positional_options_description p;
    p.add("input-file", -1);

    // Load options from console
    po::variables_map vm;
    try {
        po::store(po::command_line_parser(argc, argv).
            options(desc).positional(p).run(), vm);
        po::notify(vm);
    } catch (boost::program_options::error & ex ) {
        std::cerr << "Error: " << ex.what() << "\n";
        return 2;
    }

    /// Run application
    ContextPtr context = Context::create();
    context->setOptimizationLevel(opt);
    context->setDebug(vm.count("debug"));

    if (vm.count("input-file")) {
        std::vector< std::string > files = vm["input-file"].as< std::vector< std::string > >();

        try {
            // create script module
            ModulePtr module = Module::create("Kiwi::Script", context);
            for (std::vector< std::string >::iterator i = files.begin(); i != files.end(); ++i) {
                module->includeFile(*i);
            }

            // build module and dump or execute
            if (vm.count("ir-dump")) {
                module->build();
                module->dump();
            }
            if (!vm.count("ir-dump") || vm.count("run")) {
                return context->run(module);
            }
        } catch (Exception& ex) {
            std::cerr << ex << "\n";
            return 1;
        }
    } else if (vm.count("help")) {
        std::cout << desc << "\n";
    } else if (vm.count("version")) {
        printVersion();
        return 0;
    }

    return 0;
}
开发者ID:alurin,项目名称:kiwi,代码行数:67,代码来源:Main.cpp


注:本文中的ModulePtr::dump方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。