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


C++ BasicVec::push_back_unique方法代码示例

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


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

示例1: parse_cpp

void CompilationEnvironment::parse_cpp( BasicVec<Ptr<CompilationTree> > &obj, const String &cpp_, bool dyn ) {
    String cpp = absolute_filename( cpp_ );

    // already parsed ?
    if ( parsed.contains( cpp ) )
        return;
    parsed << cpp;
    
    // parse
    CompilationCppParser cpp_parser( *this, cpp, dep_for( cpp ) );
    
    if ( cpp_parser.var_templ.size() ) {
        GetRemp gr;
        BasicVec<BasicVec<String,2> > rep;
        gr.aaadd( cpp_parser.var_templ, rep );
        
        File f( cpp );
        String dat = "#line 1 \"" + cpp + "\"\n" + f.c_str();
        dat = dat.replace( "#pragma template ", "// template " );
        for( int i = 0; i < gr.res.size(); ++i ) {
            String cp = dat;
            for( int j = 0; j < gr.res[ i ].size(); ++j )
                cp = cp.replace( gr.res[ i ][ j ][ 0 ], gr.res[ i ][ j ][ 1 ] );
            
            int p = cpp.rfind( '.' );
            String nc = cpp.beg_upto( p ) + '_' + String( i ) + cpp.end_from( p );
            if ( file_exists( nc ) ) {
                File o( nc );
                if ( cp == o.c_str() ) {
                    parse_cpp( obj, nc, dyn );
                    continue;
                }
            }
            
            File o( nc, "w" );
            o << cp;
            parse_cpp( obj, nc, dyn );
        }
        return;
    }

    // global flags
    for( int i = 0; i < cpp_parser.lnk_flags.size(); ++i )
        add_LDFLAG( cpp_parser.lnk_flags[ i ] );
    for( int i = 0; i < cpp_parser.lib_names.size(); ++i )
        add_lib_name( cpp_parser.lib_names[ i ] );
    for( int i = 0; i < cpp_parser.fra_names.size(); ++i )
        add_fra_name( cpp_parser.fra_names[ i ] );
    for( int i = 0; i < cpp_parser.lib_paths.size(); ++i )
        add_lib_path( cpp_parser.lib_paths[ i ] );
    if ( cpp_parser.cxx_name != "" )
        add_cxx_name( cpp_parser.cxx_name );

    // local flags
    CompilationEnvironment loc_ce( this );
    for( int i = 0; i < cpp_parser.inc_paths.size(); ++i )
        loc_ce.add_inc_path( cpp_parser.inc_paths[ i ] );
    for( int i = 0; i < cpp_parser.gpu_flags.size(); ++i )
        loc_ce.add_GPUFLAG( cpp_parser.gpu_flags[ i ] );
    for( int i = 0; i < cpp_parser.cpp_flags.size(); ++i )
        loc_ce.add_CPPFLAG( cpp_parser.cpp_flags[ i ] );

    // command
    Ptr<CompilationTree> res = loc_ce.make_obj_compilation_tree( loc_ce.obj_for( cpp, dyn ), make_cpp_compilation_tree( cpp ), dyn );
    for( int i = 0; i < cpp_parser.inc_files.size(); ++i ) {
        String hea = cpp_parser.inc_files[ i ];
        Ptr<CompilationTree> r_h = loc_ce.make_cpp_compilation_tree( hea );
        res->add_child( r_h );
        // moc file ?
        if ( cpp_parser.moc_files.contains( hea ) ) {
            String moc = loc_ce.moc_for( hea );
            if ( last_modification_time_or_zero_of_file_named( moc ) < last_modification_time_or_zero_of_file_named( hea ) )
                exec_cmd( "moc " + hea + " -o " + moc );
            cpp_parser.src_files.push_back_unique( moc );
        }
    }

    // moc file with a .cpp ?
    if ( cpp_parser.moc_files.contains( cpp ) ) {
        String moc = loc_ce.moc_for( cpp );
        if ( last_modification_time_or_zero_of_file_named( moc ) < last_modification_time_or_zero_of_file_named( cpp ) )
            exec_cmd( "moc " + cpp + " -o " + moc );
        cpp_parser.src_files.push_back_unique( moc );
    }

    // if ( not parsed.contains( cpp ) )
    obj.push_back_unique( res );

    // .h -> .cpp or .cu ?
    for( int i = 0; i < cpp_parser.inc_files.size(); ++i ) {
        String h = cpp_parser.inc_files[ i ];
        if ( h.ends_with( ".h" ) ) {
            String base = h.beg_upto( h.size() - 2 );
            if ( file_exists( base + ".cpp" ) )
                parse_cpp( obj, base + ".cpp", dyn );
            if ( file_exists( base + ".cu" ) )
                parse_cpp( obj, base + ".cu", dyn );
        }
    }

//.........这里部分代码省略.........
开发者ID:hleclerc,项目名称:Metil,代码行数:101,代码来源:CompilationEnvironment.cpp

示例2: get_def_procs

void CompilationEnvironment::get_def_procs( BasicVec<String> &res ) const {
    if ( child )
        child->get_def_procs( res );
    for( int i = 0; i < def_procs.size(); ++i )
        res.push_back_unique( def_procs[ i ] );
}
开发者ID:hleclerc,项目名称:Metil,代码行数:6,代码来源:CompilationEnvironment.cpp


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