• [^] # Re: Superbe article !

    Posté par (site web personnel) . En réponse à la dépêche LLVM 3.3 et Clang 3.3. Évalué à 4.

    Oui, pas trop compliqué en effet.

    Si je devais le faire, je réimplémenterais sans doute ASTConsumer::HandleTranslationUnit et utiliserais RecursiveASTVisitor pour visiter toutes les clang::CXXMethodDecl (c'est la classe qui représente les déclaration de fonction members).
    Tu filtre celles qui sont dans les fichier que tu veux modifier, et tu peux savoir avec CXXMethodDecl::hasInlineBody && !isInlineSpecified() si tu veux la déplacer. Tu peux facilement trouver le début et la fin du corps de la fonction (getBody()->getSourceRange()) et utiliser clang::Rewrite pour le remplacer par un ;, et déplacer le corps dans un fichier .cpp.
    Tu peux même utiliser clang::Format pour avoir la bonne indentation.