<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p>Hello,<br>
    </p>
    I found a way to to what I want using<tt> Parser::NamedValueMap</tt>.
    The following code works well <br>
    <tt><br>
    </tt><tt>struct CALLBACK : public
      clang::ast_matchers::MatchFinder::MatchCallback {</tt><tt> </tt><tt><br>
    </tt><tt>//... </tt><tt><br>
    </tt><tt>};</tt><br>
    <tt>int main() { <br>
        // V is a visitor and v.fct is a CXXMethodDecl*<br>
      <br>
    </tt><tt>  dynamic::Diagnostics Diag;  <br>
        Parser::NamedValueMap named_map;</tt><tt><br>
      <br>
    </tt><tt>  auto eq_node = equalsNode(v.fct);</tt><tt><br>
    </tt><tt><br>
        named_map["TEST"] = VariantMatcher::SingleMatcher(eq_node);</tt><tt><br>
    </tt><tt><br>
        Optional<DynTypedMatcher> unbound_matcher =
      Parser::parseMatcherExpression(</tt><tt><br>
    </tt><tt>      llvm::StringRef("cxxMemberCallExpr(callee(TEST))"),
      nullptr, &named_map,</tt><tt><br>
    </tt><tt>      &Diag);</tt><tt><br>
    </tt><tt>  if (!unbound_matcher) {</tt><tt><br>
    </tt><tt>    std::cout << "erreur creation unbind"</tt><tt><br>
    </tt><tt>              << "\n";</tt><tt><br>
    </tt><tt>  }</tt><tt><br>
    </tt><tt><br>
    </tt><tt>  auto final_matcher = unbound_matcher->tryBind("pipo");</tt><tt><br>
    </tt><tt><br>
    </tt><tt>  ast_matchers::MatchFinder Finder;</tt><tt><br>
    </tt><tt>  CALLBACK cb;</tt><tt><br>
    </tt><tt>  Finder.addDynamicMatcher(*final_matcher, &cb);</tt><tt><br>
    </tt><tt>  Finder.matchAST(ast_context);<br>
      }<br>
      <br>
      David<br>
    </tt>
    <div class="moz-cite-prefix">On 09/03/2017 10:20, Manuel Klimek
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAOsfVvmuu76L8=WF+O6a_RF9zA8NNEFZmg91bAmCcSXodJYRbA@mail.gmail.com"
      type="cite">
      <div dir="ltr">+Sam for ideas<br>
        <br>
        <div class="gmail_quote">
          <div dir="ltr">On Wed, Mar 8, 2017 at 6:23 PM David Come via
            cfe-dev <<a moz-do-not-send="true"
              href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a>>
            wrote:<br>
          </div>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello,<br
              class="gmail_msg">
            <br class="gmail_msg">
            I'm building a tool to find AST nodes according to an user
            provided file<br class="gmail_msg">
            using a custom language. I'm also using clang dynamic
            matchers to find<br class="gmail_msg">
            interesting nodes within functions CFG and do a bunch of
            thing. I would<br class="gmail_msg">
            like to re-use one of the node I found previously in one of
            the clang<br class="gmail_msg">
            matchers.<br class="gmail_msg">
            <br class="gmail_msg">
            <br class="gmail_msg">
            There is equalsNode for static matchers but it obviously
            does not work<br class="gmail_msg">
            with clang dynamic matchers.<br class="gmail_msg">
            <br class="gmail_msg">
            <br class="gmail_msg">
            My idea would be to circumvent the problem by introducing
            into the<br class="gmail_msg">
            matcher (once created from the string) already bounded nodes
            and use<br class="gmail_msg">
            equalsBoundNode. But I can't find a way to do it.<br
              class="gmail_msg">
            <br class="gmail_msg">
            <br class="gmail_msg">
            This could be handy to re-use in clang-query one match
            result into<br class="gmail_msg">
            another one (some kind of persistent matching)<br
              class="gmail_msg">
            <br class="gmail_msg">
            <br class="gmail_msg">
            Do you see another way to achieve what I wish to ?<br
              class="gmail_msg">
            <br class="gmail_msg">
            <br class="gmail_msg">
            My last resort will be to change clang source code (assuming
            I'm<br class="gmail_msg">
            successful) and let my tool rely on it but I would really
            like to stick<br class="gmail_msg">
            to vanilla clang.<br class="gmail_msg">
            <br class="gmail_msg">
            <br class="gmail_msg">
            Thanks,<br class="gmail_msg">
            <br class="gmail_msg">
            David.<br class="gmail_msg">
            <br class="gmail_msg">
            _______________________________________________<br
              class="gmail_msg">
            cfe-dev mailing list<br class="gmail_msg">
            <a moz-do-not-send="true"
              href="mailto:cfe-dev@lists.llvm.org" class="gmail_msg"
              target="_blank">cfe-dev@lists.llvm.org</a><br
              class="gmail_msg">
            <a moz-do-not-send="true"
              href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev"
              rel="noreferrer" class="gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br
              class="gmail_msg">
          </blockquote>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>