comp_graph_tools.i 1.4 KB
Newer Older
1 2 3 4 5 6 7 8 9 10
%inline {

    SymbolVarArray _get_owner_opr_inputs(SymbolVar var) {
        mgb_assert(var.node());
        return mgb::cg::to_symbol_var_array(var.node()->owner_opr()->input());
    }

    std::string _get_owner_opr_type(SymbolVar var) {
        mgb_assert(var.node());
        return var.node()->owner_opr()->dyn_typeinfo()->name;
11 12 13 14
    }

    std::string _get_opr_type(Operator opr) {
        return opr.node()->dyn_typeinfo()->name;
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
    }

    SymbolVarArray _replace_vars(const SymbolVarArray& repl_src,
                                 const SymbolVarArray& repl_dst,
                                 const SymbolVarArray& vars) {
        mgb::ThinHashMap<SymbolVar, SymbolVar> varmap;
        for (size_t i = 0; i < repl_src.size(); ++i) {
            varmap[repl_src[i]] = repl_dst[i];
        }
        return mgb::cg::replace_vars(vars, varmap);
    }

    typedef std::vector<Operator> OperatorArray;
    SymbolVarArray _replace_oprs(const OperatorArray& repl_src,
                                 const OperatorArray& repl_dst,
                                 const SymbolVarArray& vars) {
        mgb::ThinHashMap<mgb::cg::OperatorNodeBase*, mgb::cg::OperatorNodeBase*>
                oprmap;
        for (size_t i = 0; i < repl_src.size(); ++i) {
            oprmap[repl_src[i].node()] = repl_dst[i].node();
        }
        return mgb::cg::replace_oprs(vars, oprmap);
    }
}
// vim: ft=swig foldmethod=marker foldmarker=f{{{,f}}}