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


C++ utree::back方法代码示例

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


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

示例1: eval_node

utree expression::eval_node(utree const& node)
{
    //std::cout << node << " " << node.which() << " " << get_node_type(node) << "\n";
    
    if (node.which() == spirit::utree_type::list_type) {
        switch(get_node_type(node)) {
            case CARTO_EXP_PLUS:
                BOOST_ASSERT(node.size()==2);
                return eval_add( eval_node(node.front()), eval_node(node.back()) );
            case CARTO_EXP_MINUS:
                BOOST_ASSERT(node.size()==2);
                return eval_sub( eval_node(node.front()), eval_node(node.back()) );
            case CARTO_EXP_TIMES:
                BOOST_ASSERT(node.size()==2);
                return eval_mult( eval_node(node.front()), eval_node(node.back()) );
            case CARTO_EXP_DIVIDE:
                BOOST_ASSERT(node.size()==2);
                return eval_div( eval_node(node.front()), eval_node(node.back()) );
            case CARTO_EXP_NEG:
                BOOST_ASSERT(node.size()==1);
                return eval_mult( utree(-1.0), eval_node(node.back()) );
            case CARTO_EXP_FUNCTION:
                return eval_function(node);
            case CARTO_EXP_COLOR:
                BOOST_ASSERT(node.size()==4);
                return node;
            //case exp_var:
            //    return eval_var(node);
            default:
            {
                std::stringstream out;
                out << "Invalid expression node type: " << get_node_type(node);
                throw carto_error(out.str(), get_location(node));
            }
        }
    } else if (get_node_type(node) == CARTO_EXP_VAR) {
        return eval_var(node);
    }
    //} else {    
    //    std::cout << "Shouldn't be here!\n";
    //    std::cout << "Node: " << node << "\n";
    //    std::cout << "Node which: " << node.which() << "\n";
    //    std::cout << "Node type: " << get_node_type(node) << "\n";
    //    if (node.which() == spirit::utree_type::list_type)
    //        std::cout << "Node size: " << node.size() << "\n";
    //}
    
    return node;
}
开发者ID:acrogate,项目名称:carto-parser,代码行数:49,代码来源:expression_eval.cpp


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