Ejemplo n.º 1
0
    static void get(backend::source_generator &src,
            const tagged_terminal<Tag, Term> &term,
            const backend::command_queue &queue, const std::string&/*prm_name*/,
            detail::kernel_generator_state_ptr state)
    {
        auto s = state->find("tag_pream");

        if (s == state->end()) {
            s = state->insert(std::make_pair(
                        std::string("tag_pream"),
                        boost::any(std::set<size_t>())
                        )).first;
        }

        auto &pos = boost::any_cast< std::set<size_t>& >(s->second);
        auto p = pos.find(Tag);

        if (p == pos.end()) {
            pos.insert(Tag);

            std::ostringstream prm_name;
            prm_name << "prm_tag_" << Tag;

            detail::output_terminal_preamble termpream(src, queue, prm_name.str(), state);
            boost::proto::eval(boost::proto::as_child(term.term), termpream);
        }
    }
Ejemplo n.º 2
0
    static void get(backend::source_generator &src,
            const temporary<T, Tag, Expr> &term,
            const backend::command_queue &queue, const std::string &prm_name,
            detail::kernel_generator_state_ptr state)
    {
        auto s = state->find("tmp_pream");

        if (s == state->end()) {
            s = state->insert(std::make_pair(
                        std::string("tmp_pream"),
                        boost::any(std::set<size_t>())
                        )).first;
        }

        auto &pos = boost::any_cast< std::set<size_t>& >(s->second);
        auto p = pos.find(Tag);

        if (p == pos.end()) {
            pos.insert(Tag);

            detail::output_terminal_preamble termpream(src, queue, prm_name, state);
            boost::proto::eval(boost::proto::as_child(term.expr), termpream);
        }
    }